Einsteigerfragen zur PROFAN Programmierung

| Suchen
| Zurück zur Übersicht

Autor | Thema: Hotkeys gehen erst nach TAB
Georg Hovenbitzer
| 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
Alexander Schoenfeld
| 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
Georg Hovenbitzer
| 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

| Zurück zur Übersicht

| Ein kostenloses WebMart Forum WebMart Homepage Tools kostenlos |