ich möchte so einen kleine Abgleichdialog erstellen auf dem oben ein Browser mit drei Spalten ist und unten zwei Button. Jeweils rechts übernehmen oder links übernehmen.
Ich hatte auch schon mit dsBrowse (Komponente Dieter Stelzner) und DacPageDataStore meine Erfolge, doch für die kleinen Anwendung dachte ich reicht xbpBrowse.
Code: Alles auswählen
//--> Oben in init()
::nBrIndex := 1
::aBrowse := {}
aadd(::aBrowse,{"Vorname:","Heinz" ,"Harald"})
aadd(::aBrowse,{"Name:" ,"Müller","Meier" })
::oBrowse := XbpBrowse():new( oOwn,, aPos, aSize )
::oBrowse:itemSelected := {|aRowCol,x,oXbp| ::handleItemMarked(aRowCol) }
//--> weiter unten in create
LOCAL aHeader := { "Bezeichnung" ,"Hauptstelle" ,"Nebenstelle" }
LOCAL aColWidth := { 200 , 200 , 200 }
LOCAL nColHeight := 20
LOCAL aPresParam
//-- Design festlegen
aPresParam := { { XBP_PP_COL_HA_CAPTION , " " },;
{ XBP_PP_COL_DA_ROWHEIGHT , 20 },;
{ XBP_PP_COL_DA_ROWWIDTH , nColHeight },;
{ XBP_PP_COL_DA_CELLALIGNMENT , XBPALIGN_LEFT+XBPALIGN_BOTTOM },; //VCENTER },;
{ XBP_PP_COL_DA_FGCLR , GRA_CLR_BLACK },;
{ XBP_PP_COL_DA_BGCLR , GraMakeRGBColor({250,250,250}) },;
{ XBP_PP_COL_DA_CELLFRAMELAYOUT , XBPFRAME_BOX },;
{ XBP_PP_COL_DA_COLSEPARATOR , XBPCOL_SEP_NONE },;
{ XBP_PP_COL_DA_FRAMELAYOUT , XBPFRAME_NONE },;
{ XBP_PP_COL_DA_HILITE_FGCLR , GRA_CLR_BLACK },;
{ XBP_PP_COL_DA_HILITE_BGCLR , GraMakeRGBColor({230,230,230}) }}
// Navigationscodeblöcke für den Browser
::oBrowse:skipBlock := {| nMove | ::SkipArray( nMove, ::aBrowse, ::nBrIndex )}
::oBrowse:goTopBlock := {| | ::nBrIndex := 1 }
::oBrowse:goBottomBlock := {| | ::nBrIndex := LEN(::aBrowse) }
::oBrowse:phyPosBlock := {| | ::nBrIndex }
// Navigationscodeblöcke für den vertikalen Scrollbar
::oBrowse:posBlock := {| | ::nBrIndex }
::oBrowse:lastPosBlock := {| | LEN(::aBrowse) }
::oBrowse:firstPosBlock := {| | 1 }
::oBrowse:cursormode := XBPBRW_CURSOR_ROW
//::oBrowse:dataLink := DacPagedDataStore():new( ::aBrowse )
::oBrowse:setSize(::oDialog:currentSize())
::oBrowse:setPos( {0,0})
//** BROWSER erzeugen
::oBrowse:create()
//** 1 - Bezeichnung
aPresParam[1][2] := aHeader[1]
aPresParam[3][2] := aColWidth[1]
oColumn := XbpColumn():new( ::oBrowse,,,,aPresParam )
oColumn:dataLink := { || ::aBrowse[ ::nBrIndex, 1 ] }
::oBrowse:addColumn( oColumn )
//** 2 - Hauptstelle
aPresParam[1][2] := aHeader[2]
aPresParam[3][2] := aColWidth[2]
oColumn := XbpColumn():new( ::oBrowse,,,,aPresParam )
oColumn:dataLink := { || ::aBrowse[ ::nBrIndex, 2 ] }
::oBrowse:addColumn( oColumn )
//** 3 - Nebenstelle
aPresParam[1][2] := aHeader[3]
aPresParam[3][2] := aColWidth[3]
oColumn := XbpColumn():new( ::oBrowse,,,,aPresParam )
oColumn:dataLink := { || ::aBrowse[ ::nBrIndex, 3 ] }
::oBrowse:addColumn( oColumn )
//-- Browser anzeigen
::oBrowse:show()
::oBrowse:goTop()
SetAppFocus(::oBrowse)
Code: Alles auswählen
Xbase++ Version : Xbase++ (R) Version 1.71.267
Betriebssystem : Windows 2000 05.00 Build 02195 Service Pack 4
------------------------------------------------------------------------------oError:args :
-> VALTYPE: A VALUE: {}
-> VALTYPE: N VALUE: 0
oError:canDefault : .F.
oError:canRetry : .F.
oError:canSubstitute: .T.
oError:cargo : NIL
oError:description : Fehler bei der Arrayindizierung
oError:filename :
oError:genCode : 4
oError:operation : <A of 0>[<0>]
oError:osCode : 0
oError:severity : 2
oError:subCode : 1012
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von (B)DLGABGLEICH:INITBROWSE(380)
Aufgerufen von XBPCOLUMN:DRAWROW(544)
Aufgerufen von (B)XBPBROWSE:DRAWROW(2018)
Aufgerufen von XBPBROWSE:DRAWROW(2018)
Aufgerufen von XBPBROWSE:FORCESTABLE(1101)
Aufgerufen von XBPBROWSE:HANDLEEVENT(1453)
Aufgerufen von DLGABGLEICH:CREATE(282)
Aufgerufen von SHOWDLGABGLEICH(996)
Aufgerufen von MNUIMPORTCLICKED(202)
Aufgerufen von (B)CREATEMDIMENU(39)
Aufgerufen von MAIN(265)
Danke schonmal
Rolf