ich versuche gerade zusammen mit dem Zusatztool eXPress++ von Roger Donnay einen Sprung in das 1.Getfeld auf verschieden Arten zu realisieren. Dazu habe ich ein kleines Test Programm geschrieben. Leider klappt der Sprung in das 1.Getfeld nicht direkt über die Taste F5 (Funktion SETKEY). Das 1.Get wird nicht richtig aktiviert. Alle anderen Wege, über das Menü, über einen PushButton oder über den Eventhandler funktionieren. Testen kann man das auch ganz gut, wenn man mit ALT+Tab nach dem Sprung ins 1.Get eine andere Applikation in den Vordergrund holt und mit ALT+Tab wieder das Testprogramm aktiviert.
Ich benutze noch die Alaska Version 1.82.
Wer hat dafür eine Lösung?
Gruß
Bertram
Beispielcode:
Code: Alles auswählen
#include "dcdialog.ch"
#include "appevent.ch"
#include "inkey.ch"
PROC AppSys()
RETURN
FUNCTION main()
LOCAL oMenuBar
PRIVATE GetList := {}, GetOptions
PRIVATE nKdnr, cName, cStr, cPlz, cOrt
SETKEY(K_F5, {|| first_get()})
DC_SetKeyActive(.T.)
DCMENUBAR oMenuBar
DCMENUITEM "Menü: Sprung ins 1.Get" PARENT oMenuBar ACTION {||first_get()}
// Leer die Felder
leere_get_felder()
@ 08, 10 DCSAY "Kunden-Nr.:" PICTURE "XXXXXXXXXXX" SAYSIZE 16
@ 10, 10 DCSAY "Name1 :" PICTURE "XXXXXXXXXXX" SAYSIZE 16
@ 12, 10 DCSAY "Strasse :" PICTURE "XXXXXXXXXXX" SAYSIZE 16
@ 14, 10 DCSAY "PLZ/Ort :" PICTURE "XXXXXXXXXXX" SAYSIZE 16
@ 08, 28 DCGET nKdnr PICTURE "999999" GETID "nKdnr"
@ 10, 28 DCGET cName PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" GETID "cName"
@ 12, 28 DCGET cStr PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" GETID "cStr"
@ 14, 28 DCGET cPlz PICTURE "99999" GETID "cPlz"
@ 14, 37 DCGET cOrt PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" GETID "cOrt"
@ 16, 05 DCSAY "-------------------------------------------------------------" PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" SAYSIZE 90
@ 18, 10 DCPUSHBUTTON CAPTION 'Button: Sprung ins 1.Get' SIZE 30,2 ACTION {||first_get()}
@ 21, 10 DCSAY "Taste ESC/Sprung ins 1.Get (über den HANDLERBLOCK)" PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" SAYSIZE 80
@ 23, 10 DCSAY "Taste F5/Sprung ins 1.Get (über die Funktion SETKEY)" PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" SAYSIZE 80
DCGETOPTIONS HILITEGETS GRA_CLR_RED ;
GETFONT '10.Courier New' ;
SAYFONT '10.Courier New' ;
TABSTOP // TAB bewegt durch die Eingabefelder.
DCADDGETOPTION ;
NOMINBUTTON ;
NOMAXBUTTON ;
BORDER XBPDLG_DLGBORDER
DCREAD GUI FIT SETAPPWINDOW ;
OPTIONS GetOptions ;
TITLE 'Test Dialog' ;
HANDLERBLOCK {|nEvent, mp1, mp2, oXbp, oDlg, aGetlist, aRef, lOk| MyHandler(nEvent, mp1, mp2, oXbp, oDlg, aGetlist, @aRef, lOk)}
RETURN nil
FUNCTION MyHandler ( nEvent, mp1, mp2, oXbp, oDlg, aGetList, aRef, lOk )
LOCAL cRet := DCGUI_NONE
IF nEvent = xbeP_Keyboard
IF mp1 == xbeK_ESC
leere_get_felder()
DC_GetRefresh(aGetList)
cRet := DCGUI_MOVE_TOP // Sprung ins 1.Getfeld
ENDIF
ENDIF
RETURN cRet
FUNCTION first_get()
leere_get_felder()
DC_GetRefresh(GetList)
SetAppFocus(DC_GetObject(GetList, "nKdnr"))
RETURN .T.
FUNCTION leere_get_felder()
nKdnr := 0
cName := SPACE(30)
cStr := SPACE(30)
cPlz := SPACE(5)
cOrt := SPACE(30)
RETURN .T.
Code: Alles auswählen
//
// Project - Definition - File created by PBUILD Version 1.0
// Date: 14.07.98 Time: 19:18:55
//
[PROJECT]
COMPILE = xpp
COMPILE_FLAGS = /q
DEBUG = yes
GUI = yes
LINKER = alink
LINK_FLAGS = /PM:PM /FORCE:UNRESOLVED
RC_COMPILE = arc
RC_FLAGS = /v
PROJECT.XPJ
[PROJECT.XPJ]
DIALOG.EXE
[DIALOG.EXE]
// $START-AUTODEPEND
COLLAT.CH
COMMON.CH
GET.CH
GRA.CH
INKEY.CH
MEMVAR.CH
NATMSG.CH
PROMPT.CH
SET.CH
STD.CH
XBP.CH
DCLIPX.LIB
DIALOG.OBJ
// $STOP-AUTODEPEND
DIALOG.PRG