OnEventMode - Event kann nicht registriert werden

  • Hallo,
    wenn ich das nachfolgende Script ausführe erhalte ich folgendes in die Console:

    Spoiler anzeigen


    Somit kann das Event: GUISetOnEvent($GUI_Main_ReadEnd, "_FrontendEvent_MainGUI_ReadingEnd", $GUI_Main); nicht registriert werden. Kann mir jemand helfen?

    "Script"
    [autoit]

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

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

    #Region --- GUI: MainGUI ---
    Global $GUI_Main = GUICreate("SGM", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    GUISetBkColor(0x0066CC)

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

    Global $GUI_Main_InfoStart = GUICtrlCreateLabel("Bitte Scannen sie ihren Ausweis", 0, @DesktopHeight / 5 * 2 - 25, @DesktopWidth, 50, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 40, 400, 0, 'Arial')
    Global $GUI_Main_InfoPass = GUICtrlCreateLabel("Bitte geben sie ihr Kennwort ein, oder klicken sie auf Abbrechen", 0, @DesktopHeight / 5 * 1 - 25, @DesktopWidth, 50, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 30, 400, 0, 'Arial')
    GUICtrlSetState(-1, $GUI_HIDE)

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

    Global $GUI_Main_ReadInput = GUICtrlCreateInput("", @DesktopWidth / 6, @DesktopHeight * 0.8 - 10, @DesktopWidth / 3 * 2, 20, $ES_CENTER)
    Global $GUI_Main_ReadEnd = GUICtrlCreateButton("Test", 0, 100, 100, 100)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)

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

    Global $GUI_Main_PassInputButton[10]
    For $x = 1 To 3
    For $y = 1 To 3
    $GUI_Main_PassInputButton[$x + 3 * ($y - 1)] = GUICtrlCreateButton($x + 3 * $y - 3, (@DesktopWidth - 620) / 2 - 310 + 155 * $x, 0.3 * @DesktopHeight + 155 * $y - 155, 150, 150)
    GUICtrlSetFont(-1, 30, 400, 0, 'Arial')
    GUICtrlSetState(-1, $GUI_HIDE)
    Next
    Next
    $GUI_Main_PassInputButton[0] = GUICtrlCreateButton(0, (@DesktopWidth - 620) / 2, 0.3 * @DesktopHeight + 155 * $y - 155, 150, 150)
    GUICtrlSetFont(-1, 30, 400, 0, 'Arial')
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $GUI_Main_PassOK = GUICtrlCreateButton('OK', (@DesktopWidth - 465) / 2 + 387.5, 0.3 * @DesktopHeight, 300, 150)
    GUICtrlSetFont(-1, 35, 400, 0, 'Arial')
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $GUI_Main_PassCancel = GUICtrlCreateButton('Abbruch', (@DesktopWidth - 465) / 2 + 387.5, 0.3 * @DesktopHeight + 310, 300, 150)
    GUICtrlSetFont(-1, 30, 400, 0, 'Arial')
    GUICtrlSetState(-1, $GUI_HIDE)

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

    GUISetState(@SW_HIDE, $GUI_Main)
    #EndRegion --- GUI: MainGUI ---
    #Region --- GUI: UserAction ---
    Global $GUI_UserAction = GUICreate("SGM", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    GUISetBkColor(0x0066CC)

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

    GUICtrlCreateGroup("Aktueller User (Du)", 40, 40, (@DesktopWidth - 100) / 4, @DesktopHeight / 2.25)
    GUICtrlSetFont(-1, 16, 400, 0, "Arial")
    Global $GUI_UserAction_UserInfoPreName = GUICtrlCreateLabel("Vorname: -----", 80, 100, (@DesktopWidth - 320) / 4, 50)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    Global $GUI_UserAction_UserInfoName = GUICtrlCreateLabel("Nachname: -----", 80, 170, (@DesktopWidth - 320) / 4, 50)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    Global $GUI_UserAction_UserInfoMoney = GUICtrlCreateLabel("Guthaben: -----", 80, 240, (@DesktopWidth - 320) / 4, 50)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    GUICtrlCreateGroup("Gekaufte Essen", 60 + (@DesktopWidth - 100) / 4, 40, (@DesktopWidth - 100) / 4*3, @DesktopHeight / 2.25)
    GUICtrlSetFont(-1, 16, 400, 0, "Arial")
    Global $GUI_UserAction_UserMeelTodayState = GUICtrlCreatePic(@ScriptDir & "\images\AmpelOK.jpg", 80 + (@DesktopWidth - 100) / 4, 100, 50, 50)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    GUICtrlCreateGroup("Aktionen", 40, @DesktopHeight / 2, @DesktopWidth - 80, @DesktopHeight / 2.25)
    GUICtrlSetFont(-1, 16, 400, 0, "Arial")
    Global $GUI_UserAction_BuyFood = GUICtrlCreateButton("Kaufen", 80, @DesktopHeight / 2 + 40, (@DesktopWidth - 200) / 3, @DesktopHeight / 2.25 - 80)
    GUICtrlSetFont(-1, 50, 400, 0, "Arial")
    Global $GUI_UserAction_CancelFood = GUICtrlCreateButton("Storno", 100 + (@DesktopWidth - 200) / 3, @DesktopHeight / 2 + 40, (@DesktopWidth - 200) / 3, @DesktopHeight / 2.25 - 80)
    GUICtrlSetFont(-1, 50, 400, 0, "Arial")
    Global $GUI_UserAction_PayIn = GUICtrlCreateButton("Geld einzahlen", 120 + (@DesktopWidth - 200) / 3 * 2, @DesktopHeight / 2 + 40, (@DesktopWidth - 200) / 3, @DesktopHeight / 2.25 - 80)
    GUICtrlSetFont(-1, 42, 400, 0, "Arial")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_HIDE, $GUI_UserAction)
    #EndRegion --- GUI: UserAction ---

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

    ConsoleWrite(">Frontend Loaded" & @CRLF)

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

    Opt("GUIOnEventMode", 1)
    #Region --- Init ---
    Func _Frontend_StartUp()
    ConsoleWrite("+>Frontend starting..." & @CRLF)
    GUISetState(@SW_SHOW, $GUI_Main)
    ConsoleWrite("+>Registering Events..." & @CRLF)
    __Frontend_RegisterEvents()
    ConsoleWrite(">Events registered" & @CRLF)
    ConsoleWrite(">Frontend started" & @CRLF)
    EndFunc ;==>_Frontend_StartUp
    Func __Frontend_RegisterEvents()
    GUISwitch($GUI_Main)
    If Not GUISetOnEvent($GUI_EVENT_CLOSE, "_FrontendEvent_CloseMainGUI") Then ConsoleWrite("!>Event 1 Error" & @CRLF)
    If Not GUISetOnEvent($GUI_Main_ReadEnd, "_FrontendEvent_MainGUI_ReadingEnd", $GUI_Main) Then ConsoleWrite("!>Event 2 Error" & @CRLF)
    EndFunc ;==>__Frontend_RegisterEvents
    #EndRegion --- Init ---
    #Region --- Main GUI ---
    Func _FrontendEvent_CloseMainGUI()
    GUISetState(@SW_HIDE)
    _BackendAPI_Exit()
    EndFunc ;==>_FrontendEvent_CloseMainGUI
    Func _FrontendEvent_MainGUI_ReadingEnd()
    MsgBox(0, "", "")
    Local $iUserCardNummber = GUICtrlRead($GUI_Main_ReadInput)
    If Not _BackendAPI_CheckUserCardNummber($iUserCardNummber) Then
    Return False
    EndIf
    EndFunc ;==>_FrontendEvent_MainGUI_ReadingEnd
    #EndRegion --- Main GUI ---

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

    Func _Frontend_Shutdown()
    GUIDelete($GUI_Main)
    GUIDelete($GUI_UserAction)
    EndFunc ;==>_Frontend_Shutdown

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

    ConsoleWrite(@CRLF & ">Backend loaded" & @CRLF)
    ConsoleWrite("+>Backend starting..." & @CRLF)
    _Frontend_StartUp()
    ConsoleWrite(">Backend started" & @CRLF)
    While True
    Sleep(100)
    WEnd

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

    #Region --- BackendAPI ---
    Func _BackendAPI_Exit()
    _Frontend_Shutdown()
    ConsoleWrite(@CRLF)
    Exit
    EndFunc ;==>_BackendAPI_Exit
    Func _BackendAPI_CheckUserCardNummber($iUserCardNummber)
    Return False
    EndFunc ;==>_BackendAPI_CheckUserCardNummber
    #EndRegion --- BackendAPI ---

    [/autoit]

    Viele Grüße,
    Magnus

    Magnus

    2 Mal editiert, zuletzt von Magnus (11. September 2011 um 12:13)

  • Du fragst ob ein GUISetOnEvent nicht vorhanden ist falls ja gib error aus das macht er auch weil suche mal nach GUISetOnEvent ich finde es 2 mal und das auch nur in der IF NOT abfrage setz ein GUISetOnEvent obweder oben in deiner GUI oder bei der abfrage wo du den GUI switch machst!

    Gruss DevFly

  • Du fragst ob ein GUISetOnEvent nicht vorhanden ist falls ja gib error aus das macht er auch weil suche mal nach GUISetOnEvent ich finde es 2 mal und das auch nur in der IF NOT abfrage setz ein GUISetOnEvent obweder oben in deiner GUI oder bei der abfrage wo du den GUI switch machst!


    Ich verstehe nicht, was du meinst.

    Magnus

    • Offizieller Beitrag

    Du hast zwar versucht in deinem Skript eine Struktur unterzubringen - diese ist jedoch nur schwer zu lesen.
    Und den Erfolg der Funktion "GUISetOnEvent" abzufragen halte ich für deutlich übertrieben (Welchen Sinn macht das Skripten, wenn du selbst native Funktionen in Frage stellst. Es sei denn du traust dir nicht zu korrekte Event- und Funktionsnamen einzutragen. ;)).
    Bau mal dein Skript in etwa so auf:
    - Includes, Optionen
    - Variablen Deklarationen
    - GUI1 erstellen mit allen Controls
    - zugehörige Events setzen
    dann dasselbe mit allen weiteren GUI.
    - Hauptschleife des Skripts erstellen
    - alle im Skript erforderlichen Funktionen erstellen
    Anderenfalls ist es (wie jetzt bei dir) nur schwer nachvollziehbar, was wann wo passiert. Es ist dann wie beim Versuch Spaghetti-Code zu lesen - man muß hin- und herspringen.

  • Du hast zwar versucht in deinem Skript eine Struktur unterzubringen - diese ist jedoch nur schwer zu lesen.


    Das Script ist in drei Dateien aufgeteilt, die ich hier zusammengeführt habe. Von daher ist es nicht gut lesbar.

    Und den Erfolg der Funktion "GUISetOnEvent" abzufragen halte ich für deutlich übertrieben (Welchen Sinn macht das Skripten, wenn du selbst native Funktionen in Frage stellst. Es sei denn du traust dir nicht zu korrekte Event- und Funktionsnamen einzutragen. ).


    Das war nur zu Testzwecken, da es nicht funktioniert hat.

    Magnus
    (Entschuldigung für das Doppelposting; hab deine Antwort aber vorhin nicht gesehen)

    Magnus