Habe um Fragen wie beispielsweise:
ZitatHilfe , wenn ich 2 GUI's habe klappen meine Buttons nicht mehr?!?!?!?!
ZitatWie kann ich 2 GUI's erstellen?
vorzubeugen mal ein kleines
[autoit]GUICtrlSetOnEvent
[/autoit]Beispiel gemacht.
kann ja gepinned werden oder so :P.
Spoiler anzeigen
#include <GUIConstants.au3> ;wird benötigt für GUI und GUI-Event
Opt("GUIOnEventMode", 1) ;schaltet den GUIOnEventMode ein
$GUI1 = "Test GUI 1" ;dient der Übersicht
$GUI2 = "Test GUI 2" ;dient der Übersicht
$GUI3 = "Test GUI 3" ;dient der Übersicht
GUICreate ($GUI1,161,51,0,0) ;GUI 1 wird erstellt (1./oberste)
GUISetOnEvent($GUI_EVENT_CLOSE, "_SpecialEvents") ;$GUI_EVENT_CLOSE ist = "X" drücken - Wenn "X" gedrückt wird dann soll die Funktion _SpecialEvents aufgerufen werden
$Button1 = GUICtrlCreateButton("Button 1",0,0,50,50) ;erstellt Button 1 in der 1./obersten GUI
GUICtrlSetOnEvent($Button1,"_Button1") ;wenn auf den 1. Button der obersten GUI gedrückt wird dann soll Funktion _Button1 aufgerufen werden
$Button2 = GUICtrlCreateButton("Button 2",55,0,50,50) ;erstellt Button 2 in der 1./obersten GUI
GUICtrlSetOnEvent($Button2,"_Button2") ;wenn auf den 2. Button gedrückt wird dann soll Funktion _Button2 aufgerufen werden
$Button3 = GUICtrlCreateButton("Button 3",110,0,50,50) ;erstellt Button 3 in der 1./obersten GUI
GUICtrlSetOnEvent($Button3,"_Button3") ;wenn auf den 3. Button gedrückt wird dann soll Funktion _Button3 aufgerufen werden
GUISetState(@SW_SHOW) ;Damit die GUI angezeigt wird. (Man könnte auch GUISetState(@SW_HIDE) benutzen um die GUI quasi unsichtbar zustarten)
GUICreate ($GUI2,161,51,0,90) ;GUI 2 wird erstellt (2./mittlere)
GUISetOnEvent($GUI_EVENT_CLOSE, "_SpecialEvents") ;$GUI_EVENT_CLOSE ist = "X" drücken - Wenn "X" gedrückt wird dann soll die Funktion _SpecialEvents aufgerufen werden
$Button4 = GUICtrlCreateButton("Button 1",0,0,50,50) ;erstellt Button 1 in der 2./mittleren GUI
GUICtrlSetOnEvent($Button4,"_Button4") ;wenn auf den 1. Button der mittleren GUI gedrückt wird dann soll Funktion _Button4 aufgerufen werden
$Button5 = GUICtrlCreateButton("Button 2",55,0,50,50) ;erstellt Button 2 in der 2./mittleren GUI
GUICtrlSetOnEvent($Button5,"_Button5") ;wenn auf den 2. Button der mittleren GUI gedrückt wird dann soll Funktion _Button5 aufgerufen werden
$Button6 = GUICtrlCreateButton("Button 3",110,0,50,50) ;erstellt Button 3 in der 2./mittleren GUI
GUICtrlSetOnEvent($Button6,"_Button6") ;wenn auf den 2. Button der mittleren GUI gedrückt wird dann soll Funktion _Button6 aufgerufen werden
GUISetState(@SW_SHOW) ;Damit die GUI angezeigt wird. (Man könnte auch GUISetState(@SW_HIDE) benutzen um die GUI quasi unsichtbar zustarten)
GUICreate ($GUI3,161,51,0,180) ;GUI 3 wird erstellt (3./unterste)
GUISetOnEvent($GUI_EVENT_CLOSE, "_SpecialEvents") ;$GUI_EVENT_CLOSE ist = "X" drücken - Wenn "X" gedrückt wird dann soll die Funktion _SpecialEvents aufgerufen werden
$Button7 = GUICtrlCreateButton("Button 1",0,0,50,50) ;erstellt Button 1 in der 3./untersten GUI
GUICtrlSetOnEvent($Button7,"_Button7") ;wenn auf den 1. Button der untersten GUI gedrückt wird dann soll Funktion _Button7 aufgerufen werden
$Button8 = GUICtrlCreateButton("Button 2",55,0,50,50) ;erstellt Button 2 in der 3./untersten GUI
GUICtrlSetOnEvent($Button8,"_Button8") ;wenn auf den 2. Button der untersten GUI gedrückt wird dann soll Funktion _Button8 aufgerufen werden
$Button9 = GUICtrlCreateButton("Button 3",110,0,50,50) ;erstellt Button 3 in der 3./untersten GUI
GUICtrlSetOnEvent($Button9,"_Button9") ;wenn auf den 3. Button der untersten GUI gedrückt wird dann soll Funktion _Button9 aufgerufen werden
GUISetState(@SW_SHOW) ;Damit die GUI angezeigt wird. (Man könnte auch GUISetState(@SW_HIDE) benutzen um die GUI quasi unsichtbar zustarten)
While 1 ;Anfang While - WEnd Schleife
If WinGetState($GUI1) = 5 And WinGetState($GUI2) = 5 And WinGetState($GUI3) = 5 Then ;Da WinKill(WinGetTitle(@GUI_WinHandle)) nicht klappt habe ich es so gelöst.
MsgBox (0,"","Alle 3 GUI's sind beendet wurden , das Programm wird sich nun beenden",2) ;MsgBox zu Vorführzwecken
Exit ;Beendet die .au3/.exe
EndIf
Sleep (10) ;Um die CPU-Auslastung etwas zu entlasten
WEnd ;Ende While - WEnd Schleife
;Hier stehen die Funktionen , ich denke nicht das man da großartig was erwähnen muss.
;BTW , @GUI_WinHandle liefert das Handle des zuletzt angeklickten Fensters zurück und mit WingetTitle() wandle ich das Handle quasi in einen Fesntertitel um! Falls sich manche jetzt fragen wofür das ist.
Func _Button1()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button1 wurde gedrückt",2)
EndFunc
Func _Button2()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button2 wurde gedrückt",2)
EndFunc
Func _Button3()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button3 wurde gedrückt",2)
EndFunc
Func _Button4()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button1 wurde gedrückt",2)
EndFunc
Func _Button5()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button2 wurde gedrückt",2)
EndFunc
Func _Button6()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button3 wurde gedrückt",2)
EndFunc
Func _Button7()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button1 wurde gedrückt",2)
EndFunc
Func _Button8()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button2 wurde gedrückt",2)
EndFunc
Func _Button9()
MsgBox (0,WinGetTitle(@GUI_WinHandle),"Button3 wurde gedrückt",2)
EndFunc
Func _SpecialEvents()
WinSetState(WinGetTitle(@GUI_WinHandle),"",@SW_HIDE)
MsgBox (0,"","Fenster " &WinGetTitle(@GUI_WinHandle) & " wurde beendet",2)
EndFunc