Function startet Function?

  • Hallo,

    kann man aus einer Function eine andere Function aufrufen?
    Das klappt bei mir nicht!

    [autoit]


    Opt("GUIOnEventMode", 1)
    Func _MainGui();Hauptgui
    $idcbo = GUICtrlCreateCombo("", 10, 10, 180, 80, BitOR($CBS_SORT, $GUI_SS_DEFAULT_COMBO))
    GUICtrlSetOnEvent(-1, "_select"); bei Auswahl sollte die Function starten!
    endfunc

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

    Func _select()
    Msgbox(0,"Combo","Auswahl-OK")
    endfunc

    [/autoit]

    da passiert leider nichts!

    Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (21. Juli 2011 um 19:13)

  • Warum legste den GUI teil in einer Function? GUICreate haste wahrscheinlich weiter oben drin oder? mach es so:

    [autoit]

    Opt("GUIOnEventMode", 1)
    $idcbo = GUICtrlCreateCombo("", 10, 10, 180, 80, BitOR($CBS_SORT, $GUI_SS_DEFAULT_COMBO))
    GUICtrlSetOnEvent(-1, "_select"); bei Auswahl sollte die Function starten!

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

    Func _select()
    Msgbox(0,"Combo","Auswahl-OK")
    EndFunc

    [/autoit]
  • Hallo DevFly,

    hm.., so war es leider nicht gemeint!
    Du rufts einfach eine Funktion auf! Ist schon klar.

    Das Problem ist aber, es gibt viele Guis die je in einer Function gehandelt werden.
    Das ist wesentlich übersichtlicher. Man kann sie ein- und ausschalten,
    besser editieren...

    _Suchfenster()
    _MainGui()
    _Ende()

    Aus diesen Functionen heraus muß ich nun auf
    andere Functionen zugreifen. Und das klappt nicht!
    z.B. _Suchfenster soll _Ende() aufrufen...oder Combobox soll...

    Gibt es da einen Weg?

    Liebe Grüße
    Ilse ;)

    EDIT:

    Glaube ich habe gerade einen Fehler entdeckt!
    Opt("GUIOnEventMode", 1) muß mit in die Function!

  • Hi Ilse,
    man kann selbstverständlich eine Funktion aus einer Funktion ausrufen. Währe ja schlimm wenn nicht.

    [autoit]

    Func1()

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

    Func Func1()
    ConsoleWrite("Func1" & @CRLF)
    Func2()
    EndFunc ;==>Func1

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

    Func Func2()
    ConsoleWrite("Func2" & @CRLF)
    EndFunc ;==>Func2

    [/autoit]
    Zitat

    Opt("GUIOnEventMode", 1) muß mit in die Function!


    Nein muss es nicht. GUIOnEventMode gilt Global. Es ist egal wo es steht, nur der Zeitpunkt wo es aufgerufen wird, ist entscheidend.

  • Erstmal muss die Variable des Combos global deklariert sein, ansonsten ist der Inhalt der Variable nicht mehr bekannt wenn die GUI Funktion verlassen wird. Ich gehe mal davon aus, dass das bereits so ist, hattest du ja erst neulich einen Thread dazu.
    Dann darf im onenventmode keine Endlosschleife innerhalb der GUI Funktion sein. Nach Erstellung der GUI Elemente muss die GUI Funktion verlassen werden und das Script muss sich in der Programmhauptschleife ausserhalb der Funktionen befinden. Nur dann werden Events die zuvor registriert wurden auch erkannt.

    Ob das alles bereits schon so bei dir ist kann man leider nicht sagen, da du wie so oft nur minimale Codeschnippsel postest die das wesentliche nicht zeigen und zudem nicht lauffähig sind. Man kann also den Fehler nicht nachvollziehen und dir somit keine sinnvolle Hilfe anbieten.