Einsteigerfragen zur PROFAN Programmierung
  Suchen
 Zurück zur Übersicht
 AutorThema: Hotkeys gehen erst nach TAB
Georg Hovenbitzer
Datum:09.10.02 11:07 Antwortenals Email verschicken (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


Alexander Schoenfeld
Datum:09.10.02 12:43 Antwortenals Email verschicken (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


Georg Hovenbitzer
Datum: 09.10.02 15:49 Antwortenals Email verschicken (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



 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
Shortwin - denn Glück ist kein Zufall!