GUIOnEventMode

  • Kann mir einer sagen wie man 2Button oder mehr mit einer Func-Anweisung betreiben kann??
    Diese Variante will nicht.
    Ich habe mir das zusammengebastelt aus Foren-Beiträgen.

  • so müsste das gehen:

    [autoit]

    #include <GUIConstantsEx.au3>
    $Form1 = GUICreate("Form1", 600, 600)
    $typ01 = GuiCtrlCreateButton("Gerätedaten",480,60,100,20)
    $typ02 = GuiCtrlCreateButton("Gerätedaten",480,85,100,20)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    select
    case $msg = $typ01
    _Geraete(1)
    case $msg = $type02
    _Geraete(2)
    WEnd

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

    Func _Geraete($n=0)
    if $n=1 then
    MsgBox(64,"Gerätedaten","Festplatte")
    else
    MsgBox(64,"Gerätedaten","Card")
    endif
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Bitte NIEMALS OnEvent-Mode und GUIGetMsg mixen!
    So ist es sauber:

    [autoit]

    #include <GuiConstantsEx.au3>
    Opt("GUIOnEventMode", 1)

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

    $gui = GUICreate('', 800, 600)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'ende')
    $typ01 = GuiCtrlCreateButton("Gerätedaten",480,60,100,20)
    GUICtrlSetOnEvent(-1, '_Geraete')
    $typ02 = GuiCtrlCreateButton("Gerätedaten",480,85,100,20)
    GUICtrlSetOnEvent(-1, '_Geraete')
    GUISetState(@SW_SHOW)

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

    While True
    Sleep(10)
    WEnd

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

    Func ende()
    Exit
    EndFunc

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

    Func _Geraete()
    Switch @GUI_CtrlId
    Case $typ01
    MsgBox(64,"Gerätedaten","Festplatte")
    Case $typ02
    MsgBox(64,"Gerätedaten","Card")
    EndSwitch
    EndFunc

    [/autoit]
  • Hi,

    hier mal eine Version wenn Du mit OnEventModus arbeiten möchtest, interessant ist hier @GUI_CtrlId, die beinhaltet das Element was die Funktion aufgerufen hat, siehe Hilfe GUICtrlSetOnEvent

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.12.1
    Author: McPoldy

    Script Function:
    Beispiel für OnEvntMode,1

    #ce ----------------------------------------------------------------------------

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

    ;Optioinen setzen
    Opt("GUIOnEventMode", 1) ;Auf OnEvent Modus umstellen

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

    ;Form erstellen
    GUICreate("TestForm", 100, 75) ;Form erzeugen
    GUISetOnEvent(-3, "_Exit") ;Wenn das Form geschlossen werden soll, die _Exit Funktion aufrufen
    $typ01 = GUICtrlCreateButton("Gerätedaten1", 5, 5, 90, 30) ;Button 1
    GUICtrlSetOnEvent(-1, '_Geraete') ;Funktion _Geraetet aufrufen wenn Button geklickt wird
    $typ02 = GUICtrlCreateButton("Gerätedaten2", 5, 40, 90, 30) ;Button 2
    GUICtrlSetOnEvent(-1, '_Geraete') ;Funktion _Geraetet aufrufen wenn Button geklickt wird
    GUISetState() ;Form anzeigen

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

    ;Endlosschleife
    While 1
    Sleep(250)
    WEnd

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

    ;Testfunktion
    Func _Geraete()
    Switch @GUI_CtrlId ;In @GUI_CtrlId steht welechs Element diese Funkton aufruft
    Case $typ01 ;War das Element $typ01 dann soll Card ausgegeben werden
    MsgBox(64, "Gerätedaten", "Card")
    Case $typ02 ;War das Element $typ01 dann soll Festplatte ausgegeben werden
    MsgBox(64, "Gerätedaten", "Festplatte")
    EndSwitch
    EndFunc ;==>_Geraete

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

    ;Funkton für das schliessen des Forumulares
    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    :rofl: Der Bugfix macht mich fertig, ist immer schneller mit seiner Antwort

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Alles klar funzt
    Danke an alle

    Einmal editiert, zuletzt von moppel11 (13. Juli 2008 um 14:59)