Hallo zusammen
habt mal wieder eine Frage.
Ich habe einen Link gefunden der das Problem "On Event" mit "Msg Loop" beschreibt und wie man beides benutzen kann.
Der Link dazu lautet
https://www.autoitscript.com/wiki/Managing_Multiple_GUIs
Dazu ist in dem letzten Beispiel eine Englischer Text zu dem Beispiel hinterlegt.
"But did you realise that you can also use what some people think of as a hybrid mode - using common OnEvent functions and then determining the specific GUI or control which called the function within the function? As an added bonus, this approach may, depending on the circumstances, let you send parameters to the functions you call - something that you normally cannot do in OnEvent mode."
Es geht jetzt um den letzten Satz den ich wie folgt übersetze
"Als zusätzlichen Bonus kann dieser Ansatz je nach den Umständen dazu führen, dass Sie Parameter an die von Ihnen aufgerufenen Funktionen senden können - was Sie normalerweise im OnEvent-Modus nicht tun können."
Da werde ich nicht ganz schlau daraus.
Kann mir das bitte jemand evtl mit Beispiel näher erläutern?
Gruß
Spoiler anzeigen
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
Global $g_hGUI1, $g_hGUI2 = 9999, $g_idButton1, $g_idButton2, $g_idButton3 = 9999 ; Predeclare the variables with dummy values to prevent firing the Case statements
gui1()
Func gui1()
$g_hGUI1 = GUICreate("Gui 1", 200, 200, 100, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close") ; Call a common GUI close function
$g_idButton1 = GUICtrlCreateButton("Msgbox 1", 10, 10, 80, 30)
GUICtrlSetOnEvent(-1, "On_Button") ; Call a common button function
$g_idButton2 = GUICtrlCreateButton("Show Gui 2", 10, 60, 80, 30)
GUICtrlSetOnEvent(-1, "On_Button") ; Call a common button function
GUISetState()
While 1
Sleep(10)
WEnd
EndFunc ;==>gui1
Func gui2()
$g_hGUI2 = GUICreate("Gui 2", 200, 200, 350, 350)
GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close") ; Call a common GUI close function
$g_idButton3 = GUICtrlCreateButton("MsgBox 2", 10, 10, 80, 30)
GUICtrlSetOnEvent(-1, "On_Button") ; Call a common button function
GUISetState()
EndFunc ;==>gui2
Func On_Close()
Switch @GUI_WinHandle ; See which GUI sent the CLOSE message
Case $g_hGUI1
Exit ; If it was this GUI - we exit <<<<<<<<<<<<<<<
Case $g_hGUI2
GUIDelete($g_hGUI2) ; If it was this GUI - we just delete the GUI <<<<<<<<<<<<<<<
GUICtrlSetState($g_idButton2, $GUI_ENABLE)
EndSwitch
EndFunc ;==>On_Close
Func On_Button()
Switch @GUI_CtrlId ; See which button sent the message
Case $g_idButton1
MessageBox(1) ; We can call a function with parameters here <<<<<<<<<<<<<<<<<<<
Case $g_idButton2
GUICtrlSetState($g_idButton2, $GUI_DISABLE)
gui2()
Case $g_idButton3
MessageBox(2) ; We can call a function with parameters here <<<<<<<<<<<<<<<<<<<
EndSwitch
EndFunc ;==>On_Button
Func MessageBox($iIndex)
MsgBox($MB_OK, "MsgBox " & $iIndex, "Test from Gui " & $iIndex)
EndFunc ;==>MessageBox