GuiOnEventMode mit 2 offenen GUIs

  • Hallo,
    ich hab ein Problem mit einer GUI, die als Popup, neben einer 2. GUI geöffnet werden soll.
    Ich hatte vorher die Haupt GUI im GuiOnEventMode 0, also mit Schleife. Das hat prima funktionert. Nun wollte ich vollständig auf GuiOnEventMode 1 umstellen und bin auf die Nase gefallen.

    Kann mir einer sage, warum die Funktion ExitPopup nicht aufgerufen wird, obwohl ich auf den Button $BTPopEx im Popup klicke?
    Was mache ich falsch?

    (Ich habe gesucht, aber leider nix gefunden.)

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    #include <StaticConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Testdialog1", 300, 300, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_THICKFRAME, $WS_MAXIMIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, "Beenden")
    $ButtonExit = GUICtrlCreateButton("Exit", 10, 10, 100, 20, $WS_GROUP) ; -- y-Diff = 25
    GUICtrlSetOnEvent(-1, "Beenden")
    $ButtonTest = GUICtrlCreateButton("PoP-Up", 10, 60, 100, 20, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "Test")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Beenden")
    GUISetState(@SW_SHOW)
    While 1
    Sleep(20)
    WEnd

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

    Func Test()
    $TestPopup = GUICreate("", 200, 100, 320, 10)
    GUISetBkColor(0xBFCDDB)
    $BTPopEx = GUICtrlCreateButton("Raus", 10, 10, 97, 25)
    $Oki=GUICtrlSetOnEvent($BTPopEx, "ExitPopup")
    ConsoleWrite("Rückgabe Zuweisung: " & $oki & @CRLF)
    GUISetState(@SW_SHOW)
    $popupOpen = True
    While $popupOpen
    Sleep(20)
    WEnd
    GUIDelete()
    EndFunc

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

    Func ExitPopup() ; *** Nach Datumspopup auf darstellen geklickt.
    ConsoleWrite("Aufruf ExitPopup efolgt!" & @CRLF)
    $popupOpen=False
    EndFunc

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

    Func Beenden()
    Exit
    EndFunc ;==>Beenden

    [/autoit]

    Einmal editiert, zuletzt von AutoItJunkie (22. Juni 2012 um 07:57)

  • Wenn ich es so mache, geht es:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>#include <EditConstants.au3>#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>#include <Misc.au3>#include <StaticConstants.au3>Opt("GUIOnEventMode", 1)
    Global $TestPopup$Form1 = GUICreate("Testdialog1", 300, 300, 10, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_THICKFRAME, $WS_MAXIMIZEBOX))GUISetOnEvent($GUI_EVENT_CLOSE, "Beenden")$ButtonExit = GUICtrlCreateButton("Exit", 10, 10, 100, 20, $WS_GROUP) ; -- y-Diff = 25GUICtrlSetOnEvent(-1, "Beenden")$ButtonTest = GUICtrlCreateButton("PoP-Up", 10, 60, 100, 20, $WS_GROUP)GUICtrlSetOnEvent(-1, "Test")GUISetOnEvent($GUI_EVENT_CLOSE, "Beenden")GUISetState(@SW_SHOW)
    While 1 Sleep(20)WEnd
    Func Test() $TestPopup = GUICreate("", 200, 100, 320, 10) GUISetBkColor(0xBFCDDB) $BTPopEx = GUICtrlCreateButton("Raus", 10, 10, 97, 25) $Oki=GUICtrlSetOnEvent($BTPopEx, "ExitPopup") ConsoleWrite("Rückgabe Zuweisung: " & $oki & @CRLF) GUISetState(@SW_SHOW)EndFunc
    Func ExitPopup() ; *** Nach Datumspopup auf darstellen geklickt. ConsoleWrite("Aufruf ExitPopup efolgt!" & @CRLF) $popupOpen=False GUIDelete($TestPopup)EndFunc
    Func Beenden() ExitEndFunc

    [/autoit]

    Nur hätte ich gerne eine Schleife im der Funktion Test, da dort nur das Popup-Betreffende Events bearbeitet werden sollen.

    Muss ich die jetzt in die Hauptschleife einbauen, oder wie macht man das am elegantesten:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    While $popupOpen
    Sleep(20)
    $aInfo = GUIGetCursorInfo()
    If Not @error Then
    If $aInfo[2] = 1 And $aInfo[4] = $VonSlider2b Then
    SchiebeRegler($VonSlider2a, $VonSlider2b, $VonZeit)
    EndIf
    If $aInfo[2] = 1 And $aInfo[4] = $BisSlider2b Then
    SchiebeRegler($BisSlider2a, $BisSlider2b, $BisZeit)
    EndIf
    EndIf
    WEnd

    [/autoit]