Menue Punkt direkt anspringen ? [erledigt]

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Menue Punkt direkt anspringen ? [erledigt]

Beitrag von AUGE_OHR »

hi,

ich bin der Meinung das dass geht aber finde es nicht ...
ich möchte, per Code, einen Menue Punkt aktivieren aber weiss z.Z. nicht wie :?
Zuletzt geändert von AUGE_OHR am Do, 26. Okt 2017 2:04, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Menue Punkt direkt anspringen ?

Beitrag von Herbert »

Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Menue Punkt direkt anspringen ?

Beitrag von AUGE_OHR »

Herbert hat geschrieben: Mo, 23. Okt 2017 17:56 Du meinst so was....
viewtopic.php?f=31&t=8300&p=92993&hilit ... den#p92963
es wird zwar alles mögliche vom Menu besprochen aber der Punkt "anspringen" fehlt mir.
was ich suche ist so was wie :

Code: Alles auswählen

// Dummy Code funktioniert NICHT "so"
   KEYBOARD CHR(xbeK_ALT)
   FOR n := 1 TO j
      KEYBOARD CHR(xbeK_RIGHT)
   NEXT
und auch mit

Code: Alles auswählen

keybd_event( VK_MENU, 0, 0, 0 )
keybd_event( VK_MENU, 0, KEYEVENTF_KEYUP, 0 )

keybd_event( VK_RIGHT)
komme ich nicht an das Ziel.

---

mit o:childFromName() bekomme ich zwar das Object ( mit dem Codeblock zum ausführen ) zurück aber ich möchte "nur" den Cursor im Menu platzieren wo die Aktion ausgelöst werden soll
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Menue Punkt direkt anspringen ?

Beitrag von AUGE_OHR »

hm ... könnte es sein das die keybd_event API Function nicht mehr unter Windows 10 läuft :shock:
Note This function has been superseded. Use SendInput instead.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Menue Punkt direkt anspringen ?

Beitrag von AUGE_OHR »

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".
gruss by OHR
Jimmy
Antworten