Mehrere Buttons gleichzeitig Abfragen -> SELBE Aktion

  • Hallo,
    ich habe ein kleines Skript, wo 25 Buttons existieren.
    5x5
    $Button1 - $Button25
    Kann ich eine Abfrage für alle allgemein machen?
    Also das ich nicht für jeden Button ein "Case" schreiben muss
    :D

  • zum Beispiel so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    GUICreate('')
    $Button1 = GUICtrlCreateButton("1",10,10,100,20)
    $Button2 = GUICtrlCreateButton("2",10,30,100,20)
    $Button3 = GUICtrlCreateButton("3",10,50,100,20)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1, $Button2, $Button3
    MsgBox(0, '', "Test")
    EndSwitch
    WEnd

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag

    Also das ich nicht für jeden Button ein "Case" schreiben muss


    Wenn es überall dieselbe Funktion auslösen soll:

    [autoit]

    Case $button1,$button2,$button3,....$button25
    ; dein Code

    [/autoit]


    Du solltest aber überlegen, Arrays einzusetzen. Dann kannst du das alles viel komfortabler in Schleifen abwickeln.

    • Offizieller Beitrag

    Hier ein Bsp.:

    [autoit]

    Local $aButton[25], $x = 10, $y = 20

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

    $gui = GUICreate('test')
    For $i = 0 To UBound($aButton) -1
    $aButton[$i] = GUICtrlCreateButton($i+1, $x, $y, 20, 20)
    $x += 30
    If $i = 12 Then
    $x = 10
    $y += 30
    EndIf
    Next
    GUISetState()

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

    Do
    $msg = GUIGetMsg()
    For $i = 0 To UBound($aButton) -1
    If $aButton[$i] = $msg Then MsgBox(0, 'click', 'Button: ' & ControlGetText($gui, '', $msg))
    Next
    Until $msg = -3

    [/autoit]