ich habe ein Problem bei der Verwendung eines Browsers vom Typ XbpBrowse. Der verwendete Code beruht auf Beispielcode, der entsprechend angepasst wurde und ansonsten seinen Zweck erfüllt.
Ich möchte jedoch die im Browser ausgewählte Zeile nicht nur mittels Doppelklick und Return-Taste die unter :itemSelected definierte Aktion ausführen lassen, sondern auch noch die Benutzung der Space-Taste separat (und überhaupt) berücksichtigen. Der Gedanke war nun, analog zu :itemSelected ein :keyboard zu verwenden und dort als ersten Test eine simple Debug-Meldung auszugeben. Das klappt leider nicht; es scheint, als ob der :keyboard-Callback komplett ignoriert wird.
Die aus meiner Sicht wichtigen Elemente des Codes lesen sich so:
Code: Alles auswählen
FUNCTION GuiArrayBrowseWZA( oParent, aPos, aSize, aPresParam, aArray )
LOCAL oBrowse
oBrowse := XbpBrowse():new( oParent, ,aPos, aSize, aPresParam )
oBrowse:cargo := aArray
oBrowse:cursorMode := XBPBRW_CURSOR_ROW
oBrowse:skipBlock := {|n,obj| SkipArray( n, obj:cargo ) }
oBrowse:goTopBlock := {|obj| obj:cargo[ ARR_NO ] := 1 }
oBrowse:goBottomBlock := {|obj| obj:cargo[ ARR_NO ] := Len( obj:cargo[ ARR_SRC ] ) }
oBrowse:posBlock := {|obj| obj:cargo[ ARR_NO ] }
oBrowse:phyPosBlock := {|obj| obj:cargo[ ARR_SORT, obj:cargo[ ARR_NO ] ] }
oBrowse:lastPosBlock := {|obj| Len( obj:cargo[ ARR_SRC ] ) }
oBrowse:firstPosBlock := {|obj| 1 }
oBrowse:keyboard := {|n,x,obj| WZAEventHandler()}
//oBrowse:itemSelected := {|n,x,obj| iif(n[1] <= Len(obj:cargo[ARR_SRC]), (ShowArtikelDetail (obj:cargo[ARR_SRC][n[1]][1])),) }
oBrowse:create()
RETURN oBrowse
Anschließend werden noch die einzelnen Spalten gesetzt:
Code: Alles auswählen
oBrowse = GuiArrayBrowseWZA (oParent, aPos, aSize, aPresParam, aArrayWZA)
for i = 1 to Len (aColumnStruct)
oBrowse:addColumn (DirBlock (aArrayWZA, i), aColumnStruct[i,3], aColumnStruct[i,1])
next
Ich denke, ich bin nicht der einzige mit diesen Anforderungen an einen Browser, daher kann es sich eigentlich nur um eine kleine Sache handeln, oder?
Danke & viele Grüße
Michael