drücken der <ENTER> - Taste in einem GUICtrlCreateInput abfangen

  • von einem GUICtrlCreateInput zum nächsten GUICtrlCreateInput mit der <Enter>-Taste durchhangeln ... wie macht man das ? Eigentlich kann man ja nur mit der TAB-Taste die Elemente in der GUI durchgehen. Ich möchte aber mit der <Enter>-Taste durch die Input-Felder in der GUI gehen ... hat jemand ein Beispiel ?

  • Brauchst du denn eine spezielle Reihenfolge oder so? Ansonsten könntest du ja einfach mit Accelerators die Enter-Taste abfragen und dann durchhüpfen, etwa so:

  • Hhhmmm .Habs mir einfacher vorgestellt ...

    Ist natürlich ne Lösung. Aber ich habe 2 GUIs mit 20 GuiCtrlCreateInput und 6 Buttons im ersten GUI; sowie 15 GuiCtrlCreateInput und 4 Buttons im zweiten GUI. Demnach müßte ich immer in Erfahrung bringen auf welchem GuiCtrlCreateInput ich gerade stehe und bei einem <Enter> den Fokus auf das nächste GuiCtrlCreateInput setzen ... was passiert dann eigentlich bei den Buttons ?

    ... in der Summe doch sehr aufwendig ... find ich; oder ?

    Könnte man der Funktion GuiCtrlCreateInput nicht eine Liste mitgeben, mit welchen Tasten die Funktion verlassen werden darf ... z.Bsp. Enter, TAB, Escape, die 4 Cursortasten ... ?

    Um deine Frage zu beantworten : ja - ich bräuchte ne bestimmte Reihenfolge.

    Einmal editiert, zuletzt von Schmunke (24. Januar 2020 um 14:07)

  • Hallo Schmunke

    Ich sehe jetzt ehrlich gesagt nicht den Aufwand, von dem du schreibst..
    Bei deinen GUI's wäre jetzt doch nur neu:

    Code
    Local $aAcc[1][2] = [ ["{ENTER}", $hDummy] ]
    GUISetAccelerators($aAcc, $Form1)
    ...
    Case $hDummy
    ControlSend($Form1, "", "", "{TAB}")
    ..

    Da gehst du die Reihe ganz normal durch, wie wenn du Tab drücken würdest.
    Wenn du eine andere Reihenfolge willst, oder Controls auslassen willst, könntest du sie in einem Array speichern und eigene Regeln programmieren.

    Grüße autoiter

  • autoiter ... ah - da hab ich mich vertan. Ich sehe's gerade. Ich dachte ich muss ein Array über alle GuiCtrlCreateInput machen.

    Aber das muss ich ja gar nicht ... ich muss ja nur den TAB senden.

    BugFix ... das ist was 'Globales' ... das sieht gut aus. Probier ich mal dieses WE aus ...

    Danke erstmal für die Tips

  • alpines

    hhhmmm ... hab die paar Zeilen jetzt mal eingefügt ... aber klappt nicht.

    Mach ich was falsch ?

  • Du deklarierst die Variable $hEnterDummy und packst sie direkt ins Acceleratorarray, jedoch nicht als Referenz sondern einfach nur als Wert.

    Der Dummy wurde aber noch nicht erzeugt, folglich steht im Array nur eine 0, darfst den Wert des Controls im Acceleratorarray erst zuweisen wenn du das Control auch definiert hast.