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

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

    • 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]