GUI - Möglichkeit mit TAB durch die eigenen Controls zu springen

  • Hallo zusammen,

    ich habe folgende Thematik, bei der mir hoffentlich jemand weiterhelfen kann:

    Habe ein kleines GUI Tool erstellt welches ein paar Textboxen, Comboboxen und zwei Buttons enthält.

    Es wäre schön wenn man mittels TAB durch die jeweiligen Controls in der GUI springen könnte.

    Aktuell wird nur zwischen den zwei Buttons hin und her gesprungen wenn ich die TAB Taste drücke.


    VG

  • Poste mal Dein Skript, dann können wir besser helfen.

    Edit: Außerdem musst Du sicherstellen, dass für das Control der Style auch den Wert $WS_TabStop enthält.

  • So habe hier mal den Code für euch runtergebrochen auf das eigentliche Problem.


  • 1. Die Message-Loop sollte nicht in der Erstell-Funktion laufen

    2. Du hast auf deiner GUI nur 2 Ctrl - die beiden Button. Also ist die Tab-Sprunggeschichte OK.

    3. Problem: Du hast in der Funktion eine weiter GUI (??- wozu) erstellt und DANACH die anderen Ctrl. Somit sind diese Ctrl zur zuletzt erstellten GUI gehörig.

    Räum erst mal auf:

    - Globale Variablen (alle ID der GUI !!) ausserhalb der Funktion deklarieren

    - Msg-Loop separat

    - Dim nicht nutzen - entweder Local (in Funktionen) oder Global

  • 2. Du hast auf deiner GUI nur 2 Ctrl - die beiden Button. Also ist die Tab-Sprunggeschichte OK.

    3. Problem: Du hast in der Funktion eine weiter GUI (??- wozu) erstellt und DANACH die anderen Ctrl. Somit sind diese Ctrl zur zuletzt erstellten GUI gehörig.

    Danke das war tatsächlich der springende Punkt. Wieso ich das mit der zweiten GUI gemacht habe kann ich dir leider nicht beantworten. Das Tool ist knapp 8 Jahre alt und muss jetzt nochmal erweitert werden.

    Räum erst mal auf:

    - Globale Variablen (alle ID der GUI !!) ausserhalb der Funktion deklarieren

    - Msg-Loop separat

    - Dim nicht nutzen - entweder Local (in Funktionen) oder Global

    Ich weiß, schlechter Style und so, aber das Tool ist noch wesentlich komplexer als der gezeigte Codeausschnitt. Das alles komplett anzupassen lasse ich jetzt mal außen vor da es ja 8 Jahre super gelaufen ist und den Aufwand nicht ganz rechtfertigen würde. Ich hoffe du verzeihst es mir.


    Eine Frage habe ich noch und zwar wie kann ich für alle erstellten Controls eine bestimmte Schrift setzen ?

    Oder muss ich das für jedes einzelne Control extra mittels GUICtrlSetFont() machen ?

  • Setze den Font für die GUI mit GuiSetFont, gilt dann für alle Ctrl.

    Da ist es aber dann leider so das die eine Combobox mit dem jeweiligen Text komplett markiert ist:

    1 hosted at ImgBB
    Bild 1 gespeichert in ImgBB
    ibb.co


    Und die Checkbox kann leider nicht per TAB ausgewählt werden

  • Und die Checkbox kann leider nicht per TAB ausgewählt werden

    Das liegt daran, dass nicht die Checkbox, sondern der Text per Tab markiert wird.

    Ersetze mal

    Code
        $aHWND[0][6] = GUICtrlCreateCheckbox("", 780, 32, 40, 15)

    durch

    Code
        $aHWND[0][6] = GUICtrlCreateCheckbox(" ", 780, 32, 40, 15)
  • Da ist es aber dann leider so das die eine Combobox mit dem jeweiligen Text komplett markiert ist:

    Wenn es nur bestimmte Einträge gibt, dann am besten eine DropDownList benutzen (s.u.).

    Und die Checkbox kann leider nicht per TAB ausgewählt werden

    Bei den Label immer Länge und Höhe angeben, sonst kommt es zu merkwürdigen "Fehlern".

  • Vielen dank Oscar !

    Funktioniert soweit ganz gut nur lässt sich die Checkbox leider nicht über die Tastatur mittels Enter auswählen. Bräuchte da irgendwas in die Richtung womit man alles über Tastatur ansteuern könnte

  • Leertaste selektiert eine Checkbox

  • PS. Das gilt natürlich auch für alle Controls (z.B. fürButtons).