ich habe ein DCBROWSE, in dem man editieren kann. Nun möchte ich, dass wenn der Benutzer auf einem editierbaren Feld eine Taste drückt (in numerischem Feld eine Zahl), das Feld zum Editieren aufgeht und der Wert der Taste sofort in das GET geschrieben wird.
So funktioniert das auch bei den CRT-Prgrammen (wie z.B. bei dbu). Im Handler vom DCREAD GUI schalte ich per PostAppEvent(xbeBRW_ItemSelected,,,oXbp) auch in den Editmodus.
Aber den Wert der Taste bekomme ich nicht in das Feld. Ich will ja den Wert noch nicht im Ursprungsarray haben - nur im Editbuffer... so dass das Undo funktioniert.
Ich habe jetzt schon einiges probiert... hat da jemand eine Idee, wie man das am besten macht?
Grüße, Armin
hier ein paar Codeschnipsel:
Code: Alles auswählen
@ 17,1 DCBROWSE oBrowse DATA aLFS SIZE 176,6 ;
PRESENTATION DC_BrowPres() ;
EDIT xbeBRW_ItemSelected
MODE DCGUI_BROWSE_EDITACROSSDOWN ;
ID 'BROWSE' ;
HANDLER S16HANDLER1 REFERENCE aLFS;
POINTER n
DCBROWSECOL ELEMENT 6 PARENT oBrowse HEADER 'VPNr.' WIDTH len(str(VERSTF->VEVPNR)) EDITOR "edVPNR" VALID {|c| S16VPNR(c,oBrowse,aLFS,n)}//
@ nil,nil DCGET nVPNR PICTURE ALFELD("VPNR") GETID "edVPNR"
DCREAD GUI ;
HANDLERBLOCK bHandler2;
....
function S16HANDLER2(nEvent, mp1, mp2, oXbp)
if nEvent==xbeP_Keyboard
if mp1>=48 .and. mp1<=57 // Zahlen
if valtype(oXbp)=="O"
if IsMemberVar(oXbp,"colpos") .and. oXbp:colpos == 6 // VPNR
PostAppEvent(xbeBRW_ItemSelected,,,oXbp) // schaltet in den Editmode