GUISetOnEvent & Func mit Parametern

  • [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    $mainwindow = GUICreate("Func mit Param. - Test", 200, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Button1 = GUICtrlCreateButton("1 + 2", 5, 50, 60)
    GUICtrlSetOnEvent($Button1, "_Click(1, 2)")
    $Button2 = GUICtrlCreateButton("5 + 8", 5, 100, 60)
    GUICtrlSetOnEvent($Button2, "_Click(5, 8)")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func _Click($Var1, $Var2)
    MsgBox(0, "", $Var1 + $Var2)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    EDIT:
    Jetzt habe ich die Beschreibung vergessen :lol:

    Ich möchte wie hier zu sehen, Button haben, die per Click eine Func öffnen, die die Parameter addiert. Das ist nur ein Beispiel und sicherlich anderes zu lösen, ändert aber nichts an dem Problem mit Button & Func + Parameter!

    Danke für die Zeit die ihr euch nehmt :)

    Einmal editiert, zuletzt von Zen (9. Februar 2007 um 21:08)

  • Ich würd es nicht mit parameter machen, ich würd es einmal eine gemeinsame Funktion schreiben, die dann prüft welcher Button gedrückt wurde und dann die dazugehörige Funktion ausführen.

    • Offizieller Beitrag

    Das geht so nicht.
    GUICtrlSetOnEvent($Button1, "_Click") definiert, das bei Click des Buttons die Funktion "_Click()" aufgerufen wird.
    Parameter kannst du nur in der Funktion selber festlegen.

    Ist zwar etwas umständlich, aber so gehts:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    Opt("GUIOnEventMode", 1)
    $mainwindow = GUICreate("Func mit Param. - Test", 200, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Button1 = GUICtrlCreateButton("1 + 2", 5, 50, 60)
    GUICtrlSetOnEvent($Button1, "_Click")
    $Button2 = GUICtrlCreateButton("5 + 8", 5, 100, 60)
    GUICtrlSetOnEvent($Button2, "_Click2")
    GUISetState(@SW_SHOW)

    While 1
    Sleep(1000)
    WEnd

    Func _Click()
    _msg(1, 2)
    EndFunc

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

    Func _Click2()
    _msg(5, 8)
    EndFunc

    Func _msg($v1, $v2)
    MsgBox(0, "", $v1 + $v2)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

  • geht denk ich mal auf jeden fall warum ja kein plan^^ ist halt so^^ wenn nicht dann müssen die experten ran^^

  • Ich würde so machen, kenn mich aber nicht so gut aus.

    [autoit]


    If GUICtrlRead($button1) = @GUI_CTRLID Then
    _Click(1, 2)
    ElseIf GUICtrlRead($button2) = @GUI_CTRLID Then
    _Click(5, 8)
    EndIf

    [/autoit]