Versuche mich gerade in XbpBrowse einzuarbeiten. Irgendwie habe ich den Eindruck, daß ich zu doof für Xbase++ bin. Wenn ich das Beispiel in der Hilfe übernehme, findet er in der Funktion die Variablen nRecNo und nLAstRec nicht. Wenn ich die dann mit übergebe, kommt nichts vernünftiges raus -> Ein Browse mit dem ersten Arrayelement, und das 20 Mal. Ist irgendwie langweilig. Ws ist denn hier schon wieder falsch??
Beste Grüße
Wolfgang
Code: Alles auswählen
#include "xbp.ch"
#include "appevent.ch"
#PRAGMA LIBRARY( "XPPUI2.LIB" )
// Global variables for maintaining
// the data source (array)
STATIC aData
STATIC nLastRec
STATIC nRecno
PROCEDURE Main()
LOCAL oBrowse
LOCAL nEvent
LOCAL oXbp := NIL
LOCAL mp1 := NIL
LOCAL mp2 := NIL
LOCAL oCol
LOCAL nWidth
LOCAL oGroup
// Create group box as backdrop for the browse
oGroup := XbpStatic():New()
oGroup:Type := XBPSTATIC_TYPE_GROUPBOX
oGroup:Caption := "Inventory"
oGroup:Create( ,,, {440,250} )
CenterControl( oGroup )
// Initialize array data for the browse as well as associated status variables
aData := { {"Magazines", 133, .T.},;
{"Newspapers", 15, .T.},;
{"Books", 32, .T.},;
{"Postcards", 833, .F.} }
nLastRec := Len(aData)
nRecno := 1
oBrowse := XbpBrowse():New( oGroup )
oBrowse:SkipBlock := {|nSkip,oBrowse| DoSkip(nSkip,oBrowse) }
oBrowse:GoBottomBlock := {|| nRecno := Len(aData) }
oBrowse:GoTopBlock := {|| nRecno := 1 }
oBrowse:PosBlock := {|| nRecno }
oBrowse:PhyPosBlock := {|| nRecno }
oBrowse:GoPhyPosBlock := {|n| nRecno := n }
oBrowse:LastPosBlock := {|| Len(aData) }
oBrowse:FirstPosBlock := {|| 1 }
oBrowse:CursorMode := XBPBRW_CURSOR_ROW
oBrowse:UseVisualStyle := .F.
oBrowse:Create( ,, {20,20}, {400,200},, .F. )
// Add columns to the browse
oBrowse:AddColumn( {|| aData[nRecno,1]}, 15, "Publication" )
oBrowse:AddColumn( {|| aData[nRecno,2]}, 5, "In Stock" )
oBrowse:AddColumn( {|| aData[nRecno,3]}, 1, "Web Shop" )
oBrowse:HScrollObject:UseVisualStyle := .T.
oBrowse:VScrollObject:UseVisualStyle := .T.
oBrowse:Show()
SetAppFocus( oBrowse )
nEvent := xbeP_None
DO WHILE nEvent != xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:HandleEvent( nEvent, mp1, mp2 )
ENDDO
oBrowse:Destroy()
RETURN
******************************************************************
* Skipper function that moves the record pointer through the
* data source (array)
******************************************************************
FUNCTION DoSkip( nSkip )
LOCAL nCanSkip
IF nRecno + nSkip < 1 // "BoF"
nCanSkip := 1 - nRecno
ELSEIF nRecno + nSkip > nLastRec // "EoF"
nCanSkip := nLastRec - nRecno
ELSE
nCanSkip := nSkip
ENDIF
nRecno += nCanSkip
RETURN nCanSkip