also ... es gibt verschiedene Situationen
1.) SDI GUI mit Menu wobei die horizontalen Items ein Shortcut ( ~ ) haben.
2.) MDI Client Fenster können kein Menu haben !
Das Menu ist im Main Fenster d.h. alle MDI Childs können es erreichen/anfordern
2a.) GUI : wenn man es, wie unter 1.), an die o:DrawingArea des Main Dialog schickt kein Problem.
2b.) Hybrid : im CRT Fenster muss man zuerst ALT drücken und dann den Buchstaben des Hotkey
btw. im Crt Fenster muss o:useShortCuts := .T. gesetzt sein damit die Menu Tasten "wirken"
zu 1.) das ist einfach : Beispiel "~Hilfe"
Code: Alles auswählen
PostAppEvent(xbeP_Keyboard, xbeK_ALT_H,, SP_Main():DrawingArea )
also eine Konstante xbeK_ALT_* an die o:DrawingArea des Main Dialog
zu 2b.) das geht nun nicht mit mehreren PostAppEvent() man muss es in den Keyboard Puffer schieben
Code: Alles auswählen
keybd_event( VK_MENU, 0, 0, 0 )
keybd_event( VK_MENU, 0, KEYEVENTF_KEYUP, 0 )
keybd_event( VK_RETURN, 0, 0, 0 )
keybd_event( VK_RETURN, 0, KEYEVENTF_KEYUP, 0 )
FOR n := 1 TO nCol - 1
keybd_event( VK_RIGHT, 0, 0, 0 )
keybd_event( VK_RIGHT, 0, KEYEVENTF_KEYUP, 0 )
NEXT
dies Beispiel verwendet VK_RIGHT zum positionieren.
die keybd_event API Function läuft übrigens (noch) unter Windows 10 16299.19
zur Verwendung in einer Hybrid Anwendung sei zu bemerken das der Code im Crt Fenster NICHT auf das Menu "wartet".