Buttons für Tab zusammenfassen

  • Hallo ersteinmal an die Community und nun gleich zu meiner Frage:

    Wie fasse ich in AutoIT am besten mehrere Buttons zusammen, sodass ich sie alle mit einem Tab (drücken der Tab-Taste) ansteuern kann?
    Quasi ich habe vier Reihen mit Buttons. Die unteren beiden Reihen möchte ich mit der Tab taste erreichen und mich dort frei mit dem Cursor bewegen können und die oberen beiden Reihen mit einem weiteren Tab erreichen (dort ebenfalls mit Cursor bewegen).
    Ich habe keine Funktion gefunden, welche es mir ermöglichen würde und komme leider auch auf keine Idee, wie ich mein Problem lösen könnte zumal es ja auch bei der standard Tabeinstellung beim Drücken der Pfeil-Runter-Taste den nächsten Button in der Tabreihenfolge (demzufolge der Button rechts daneben) anwähle und nicht den darunter.

    Oder um es zu versinnbildlichen:
    Ein Kartenspiel. Ich kann mich mit Cursor zwischen meinen Karten auf dem Feld bewegen. Drücke ich nun Tab wechsle ich mit dem Cursor auf die Spielfeldseite des Gegners und kann mich dort mit den Pfeiltasten zwischen den Karten meines Gegners bewegen. Drücke ich wieder Tab, bin ich wieder auf meiner Spielfeldseite...

    Falls meine Ausführung zu verwirrend ist, kann ich gerne noch den Code nachreichen vom Gui.

    Danke schonmal im Voraus.

  • Ein Kartenspiel. Ich kann mich mit Cursor zwischen meinen Karten auf dem Feld bewegen. Drücke ich nun Tab wechsle ich mit dem Cursor auf die Spielfeldseite des Gegners und kann mich dort mit den Pfeiltasten zwischen den Karten meines Gegners bewegen. Drücke ich wieder Tab, bin ich wieder auf meiner Spielfeldseite...

    Was ist das für ein Kartenspiel wo man die Karten des Gegners sieht? Ist das nicht unfair?

  • Funktioniert leider mit der Gruppenfunktion nicht, ich bekomm zwar ne hübsche Linie drumherum, aber sonst weiter nichts. Vielleicht stell ich mich auch zu dumm an? :D

    Ich habs provisorisch mal mit

    [autoit]


    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))

    [/autoit]


    gelöst.
    Das Funktioniert bisher ganz gut, nur bekomm ich die Tabstops in der Chatleiste, sowie vom Chatfenster nicht weg (Chatfenster ist nen Edit, welches noch nicht auf readonly steht, und Chatleiste n Input... vllt aber andre Baustelle)

    Am Besten ich häng mal den Code ran...

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=e:\autoit projekte\yugi.kxf
    $Form1_1 = GUICreate("Form1", 1131, 662, 100, 14)
    $bemon1 = GUICtrlCreateButton("Eigenes Monster 1", 416, 341, 81, 113, $BS_MULTILINE)
    $bemon2 = GUICtrlCreateButton("Eigenes Monster 2", 506, 341, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemon3 = GUICtrlCreateButton("Eigenes Monster 3", 599, 341, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemon4 = GUICtrlCreateButton("Eigenes Monster 4", 692, 341, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemon5 = GUICtrlCreateButton("Eigenes Monster 5", 783, 341, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemag1 = GUICtrlCreateButton("Eigene Zauber/Falle 1", 415, 468, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemag2 = GUICtrlCreateButton("Eigene Zauber/Falle 2", 507, 468, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemag3 = GUICtrlCreateButton("Eigene Zauber/Falle 3", 597, 468, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemag4 = GUICtrlCreateButton("Eigene Zauber/Falle 4", 692, 468, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bemag5 = GUICtrlCreateButton("Eigene Zauber/Falle 5", 785, 468, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $befus = GUICtrlCreateButton("Eigene Fusion", 297, 468, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $befeldz = GUICtrlCreateButton("Eigener Feldzauber", 298, 341, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $befried = GUICtrlCreateButton("Eigener Friedhof", 901, 341, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bedeck = GUICtrlCreateButton("Eigenes Deck", 903, 468, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmag5 = GUICtrlCreateButton("Gegner Zauber/Falle 5", 415, 84, 81, 113, $BS_MULTILINE)
    $bgmag4 = GUICtrlCreateButton("Gegner Zauber/Falle 4", 505, 84, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmag3 = GUICtrlCreateButton("Gegner Zauber/Falle 3", 598, 84, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmag2 = GUICtrlCreateButton("Gegner Zauber/Falle 2", 691, 84, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmag1 = GUICtrlCreateButton("Gegner Zauber/Falle 1", 782, 84, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmon5 = GUICtrlCreateButton("Gegner Monster 5", 414, 211, 81, 113,$BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmon4 = GUICtrlCreateButton("Gegner Monster 4", 506, 211, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmon3 = GUICtrlCreateButton("Gegner Monster 3", 596, 211, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmon2 = GUICtrlCreateButton("Gegner Monster 2", 691, 211, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgmon1 = GUICtrlCreateButton("Gegner Monster 1", 784, 211, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgfried = GUICtrlCreateButton("Gegner Friedhof", 296, 211, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgdeck = GUICtrlCreateButton("Gegner Deck", 297, 84, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgfus = GUICtrlCreateButton("Gegner Fusion", 900, 84, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bgfeldz = GUICtrlCreateButton("Gegner Feldzauber", 902, 211, 81, 113, $BS_MULTILINE)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $ichatschr = GUICtrlCreateInput("Chatfenster_schreiben", 8, 624, 289, 21)
    $echatles = GUICtrlCreateEdit("", 8, 488, 289, 121, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
    GUICtrlSetStyle($echatles,BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL),BitNOT($WS_TABSTOP))
    GUICtrlSetData(-1, "Chatfenster_lesen")
    $ekartenbesch = GUICtrlCreateEdit("", 8, 256, 281, 217, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
    GUICtrlSetStyle(-1,BitOR($ES_READONLY,$ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL),BitNOT($WS_TABSTOP))
    GUICtrlSetData(-1, "Kartenbeschreibung")
    $egleben = GUICtrlCreateEdit("", 1000, 56, 137, 33, BitOR($ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetStyle(-1,BitOR($ES_READONLY,$ES_WANTRETURN),BitNOT($WS_TABSTOP))
    GUICtrlSetData(-1, "Gegner Lebenspunkte")
    $eeleben = GUICtrlCreateEdit("", 999, 572, 137, 33, BitOR($ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetStyle(-1,BitOR($ES_READONLY,$ES_WANTRETURN),BitNOT($WS_TABSTOP))
    GUICtrlSetData(-1, "Eigene Lebenspunkte")
    $cphasenw = GUICtrlCreateCombo("Spielphasenwechsel", 1008, 320, 121, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetStyle(-1, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL),BitNOT($WS_TABSTOP))
    $bghand1 = GUICtrlCreateButton("Gegner Hand 1", 400, 16, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bghand2 = GUICtrlCreateButton("Gegner Hand 2", 494, 16, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bghand3 = GUICtrlCreateButton("Gegner Hand 3", 591, 16, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bghand4 = GUICtrlCreateButton("Gegner Hand 4", 690, 16, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $bghand5 = GUICtrlCreateButton("Gegner Hand 5", 784, 16, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $behand1 = GUICtrlCreateButton("Eigene Hand 1", 405, 617, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $behand2 = GUICtrlCreateButton("Eigene Hand 2", 499, 617, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $behand3 = GUICtrlCreateButton("Eigene Hand 3", 596, 617, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $behand4 = GUICtrlCreateButton("Eigene Hand 4", 695, 617, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    $behand5 = GUICtrlCreateButton("Eigene Hand 5", 789, 617, 89, 41)
    GUICtrlSetStyle(-1, $BS_MULTILINE,BitNOT($WS_TABSTOP))
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Man erkennt vielleicht was es werden soll :)Gibt es eigentlich auch eine Möglichkeit das zusammenzufassen? Schaut grad bissl wuselig aus find ich.

  • Wenn Du Deinen Code effizienter gestalten möchtest, solltest Du auf jeden Fall Arrays (s. dazu am besten das Array-Tutorial von BugFix) und Schleifen verwenden (d. h. Du müsstest das GUI dann ohne den Koda-FormDesigner erstellen).

    Das Chat-Fenster würde ich in ein eigenes GUI ausgliedern (u. U. als Child-Fenster, (s. dazu u. a. den letzten Parameter der Funktion

    [autoit]

    GUICreate()

    [/autoit]

    )), da dann die Handhabung verschiedener Styles und Bezüge einfacher ist.

    Außerdem macht in Deinem Fall vielleicht die Verwendung des GUIOnEventModes (

    [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit]

    ) Sinn.