Autor | Thema: Hotkeys gehen erst nach TAB | | Datum:09.10.02 11:07 
(profan@mailkonto.de) | |
Hallo Profaner,
ich bekomme einen kleinen Schönheitsfehler nicht aus meinem Programm.
Nach dem Programmstart lassen sich die Buttons per Hotkey erst aktivieren wenn ich vorher einmal TAB gedrückt habe, auf die Maus reagiert das Programm sofort.
Hier mal ein Programmausschnitt:
----
WindowTitle "TXT zu CSV"
WindowStyle 568
SetTrueColor 1
Window 352,160-200,400
oeffnen%=@create("DefButton",%HWnd,"&Öffnen",47,15,100,40)
umwandeln%=@create("Button",%HWnd,"&Umwandeln",47,70,100,40)
speichern%=@create("Button",%HWnd,"&Speichern",47,125,100,40)
anzeigen%=@create("Checkbox",%HWnd,"&Ergebnisse Zeigen",24,185,150,16)
u.s.w.
_ende%=0
WhileNot _ende%
WaitInput
IF @equ(%key,2)
_ende%=1
elseif @getfocus(oeffnen%)
u.s.w.
--------
Seltsam ist auch, das nach einem TAB die Buttons auch ohne gedrückter ALT Taste, also z.B. nur mit 'ö'aktiviert werden.
Ach ja, die Profan Version ist 7.5 und läuft auf W2K.
Die Lösung ist bestimmt ganz einfach, nur ich finde sie nicht und ich habe schon recht viel ausprobiert.
Über einen Tip wäre sehr froh,
viele Grüße
Georg Hovenbitzer
|
| | Datum:09.10.02 12:43 
(alexander.schoenfeld@chronologic.de) | |
Hallo Georg,
hier ein Beispiel, wie du mit der API GetAsyncKeyState die Abfrage etwas erweitern kannst:
CLS
WindowStyle 568
Def KeyPressed(1) !"USER32", "GetAsyncKeyState"
Declare Button1&, Button2&
Let Button1& = Create("Button", %hWnd, "&Button 1", 10, 10, 121, 21)
Let Button2& = Create("Button", %hWnd, "B&utton 2", 10, 30, 121, 21)
While 1
Waitinput
If (KeyPressed(66) AND Equ(GetActiveWindow(), %hwnd)) OR GetFocus(Button1&)
' B-Taste gedrückt im Hauptfenster
MessageBox("", "Button 1 gedrückt...", 0)
ElseIf (KeyPressed(85) AND Equ(GetActiveWindow(), %hwnd)) OR GetFocus(Button2&)
' U-Taste gedrückt im Hauptfenster
MessageBox("", "Button 2 gedrückt...", 0)
EndIf
Wend
Waitkey
End
Hier der Link zur Beschreibung der Funktion im MSDN:
http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/KeyboardInput/KeyboardInputReference/KeyboardInputFunctions/GetAsyncKeyState.asp
Um herauszufinden, welche Taste welcher vKey ist, kannst Du die Profan Variable %scankey verwenden.
--
Mit freundlichem Gruss / kind regards,
Alexander Schoenfeld
Email: alexander.schoenfeld@chronologic.de
|
| | Datum: 09.10.02 15:49 
(profan@mailkonto.de) | |
Hallo Alexander,
vielen Dank für deine Hilfe und das ausführliche Script.
Eine Frage hätte ich aber noch.
Wieso reagieren die Buttons auf den entsprechenden Tastendruck, auch ohne die erweiterte Abfrage, wenn ich vorher einmal TAB gedrückt habe?
Mehr als auf @getfocus(...) wird ja in der Schleife nicht getestet ?!
Viele Grüße
Georg Hovenbitzer
|
|
|