dynamisch erstelle Buttons ... klick abfragen??

  • Hi Leute,

    in meinem Script erstelle ich eine varierende Anzahl von Buttons wie folgt:

    [autoit]


    For $ii = 0 TO $row-1
    For $i = 0 TO $col-1
    $label = IniRead ( $keysetIni, "Button"&$c, "Label", "" )
    Assign("Button"& $c, _GUICtrlButton_Create($GUI, $label, $nextX, $nextY, $buttnWidth, $buttnHeight), 2);
    $nextX += $bttnspacing + $buttnWidth;
    $c += 1
    Next
    $nextX = $startX+$bttnspacing;
    $nextY += $bttnspacing + $buttnHeight;
    Next

    [/autoit]

    Das Erstellen funktioniert soweit auch so wie ich es möchte, nur bin ich nun an einem Problem angekommen ... wie frage ich all diese Buttons ab ?
    Ich weiß das man einzelne bekannte & manuell erstellte Buttons mit der WM_COMMAND Funktion abfragen kann. Mein Problem ist halt das ich nicht weiß wie ich mit dynamisch erstellten Buttons umgehen kann.

    Ich hoffe jemand kann mir helfen sonst ist wohl mein Projekt im Eimer :(

    Einmal editiert, zuletzt von Spharx (27. April 2011 um 12:55)

  • Hi,
    es gibt mehrere Möglichkeiten:
    [ gelöst ] Variable Funktionen!?
    oder "zu Fuss"
    [ gelöst ] Automatische Variablennamen

  • Also erstmal : Wie kommst du auf WM_Command? Das kannst du auch mit GUIGetMsg() abfragen. Der OnEvent Modus (Siehe dazu die AutoIt-Hilfe z. Thema GUI Konzepte.) eignet sich allerdings unter Umständen besser dafür.

    Hier wäre ein Beispiel mit GUIGetMsg, welches Dummy-Controls nutzt.

    [autoit]

    $hGUI = GUICreate("")
    GUISetState()

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

    $cDummyStart = GUICtrlCreateDummy()
    For $i = 1 To Random(10, 15, 1)
    GUICtrlCreateButton("Button " & $i, 20, ($i) * 20, 100, 15)
    Next
    $cDummyEnd = GUICtrlCreateDummy()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $cDummyStart To $cDummyEnd
    MsgBox(0, "", "Du hast auf Button " & $nMsg - $cDummyStart & " geklickt.")
    EndSwitch
    WEnd

    [/autoit]
  • An alle vielen danke für die Hilfe.

    Dank SEuBo's Beispiel kann ich jetzt weiter arbeiten ;)