Quote:
Originally Posted by gametom50
funktioniert bei mir leider nicht :/
ich versteh nicht wie ich das anwenden soll, aber wenn ich "case $Button
startspam()
;...
While not GuiGetMsg() = $ButtonStop"
einfach so einfüge funktionierts auf jedenfall nicht.. ._.
|
du definierst dir eine zustands variable. diese kann nur wahr oder falsch als werte annehmen. ist die variable wahr, so soll deine aktion ausgeführt werden. ist sie hingegen falsch, so wird nichts ausgeführt.
bei buttondruck änderst du einfach nur den inhalt der variable... da die variable nur True oder False sein kann, und Not True = False und Not False = True ergeben, kannst du einfach mit $variable = Not $variable den zustand auf jeweils das gegenteil ändern...
ein kleiner beispielcode zu dem ganzen:
Code:
Dim $state, $gui=GUICreate('GUI', 140, 40, Default, Default, 0x10C80000)
$controlChangeStateButton = GUICtrlCreateButton('Change State', 10, 10, 120, 20)
While True
Switch GUIGetMsg()
Case -3
Exit
Case $controlChangeStateButton
$state = Not $state
EndSwitch
If $state Then
;deine state aktion
EndIf
WEnd
wie du siehst, haben wir unsere normale endlosschleife, in der in jedem durchlauf geschaut wird, ob ein button betätigt wurde. sobald dies geschehen ist, checken wir noch die state variable. ist diese aktiv, so führen wir die gewünschte aktion ebenfalls aus...
erweitern wir dieses einfache prinziep ein wenig, können wir mit minimalen änderungen am script das ganze auch recht hübsch grafisch anzeigen lassen:
Code:
Dim $state[3][2]=[['OFF','ON'],[0xFF0000,0xFF00]]
GUICreate('GUI', 200, 40, Default, Default, 0x10C80000)
$controlChangeStateButton = GUICtrlCreateButton('Change State', 10, 10, 80, 20)
$controlStateLabel = GUICtrlCreateLabel($state[0][0], 100, 10, 80, 20, 0x1201)
GUICtrlSetBkColor(-1, $state[1][0])
While True
Switch GUIGetMsg()
Case -3
Exit
Case $controlChangeStateButton
$state[2][0] = Not $state[2][0]
GUICtrlSetBkColor($controlStateLabel, $state[1][$state[2][0]])
GUICtrlSetData($controlStateLabel, $state[0][$state[2][0]])
EndSwitch
Switch $state[2][0]
Case True
ConsoleWrite('State = ON!'&@CRLF)
Case False
ConsoleWrite('State = OFF!'&@CRLF)
EndSwitch
WEnd