Halo Leute,
nun sitze ich da schon ne weile dran.
Ich habe ein GUI gebastelt und verwende dort mehrere Icons als Buttons. Beim Anklicken werden die Icons ausgetauscht (On/Off). Das ganze funktioniert auch super, aber leider nur wenn ich die Icons direkt anklicke. Wenn ich Hotkeys vergebe, wird bei deren Benutzung immer das zuletzt von der Maus angeklickte Icon verwendet. Ich weiß, dass das an dem @GUI_CtrlID-Makro liegt bzw. am @HotKeyPressed-Makro. Kann man den Abgleich was genau gedrückt wurde auch anders realisieren??? oder gibt es ne Möglichkeit die Makros zu resetten oder zu überschreiben?
Spoiler anzeigen
Opt('GUIOnEventMode', 1)
Dim $aIcon[6] = ["save.ico","save_no.ico","hide.ico","hide_no.ico","readonly.ico","readonly_no.ico"]
Dim $pthIco = "C:\Users\me\Documents\Autoit\Prog\ico\"
Global $aBlnIco[3]=[False,False,False]
GUICreate("Test 1.0")
GUISetOnEvent(-3, 'Close')
$ok1 = GUICtrlCreateIcon($pthIco & $aIcon[1], -1, 35,35)
GUICtrlSetOnEvent($ok1, '_ButtonClicked')
HotKeySet("s", "_ButtonClicked")
$ok2 = GUICtrlCreateIcon($pthIco & $aIcon[3], -1, 70,35)
GUICtrlSetOnEvent($ok2, '_ButtonClicked')
HotKeySet("h", "_ButtonClicked")
$ok3 = GUICtrlCreateIcon($pthIco & $aIcon[5], -1, 105,35)
GUICtrlSetOnEvent($ok3, '_ButtonClicked')
HotKeySet("r", "_ButtonClicked")
guisetstate()
while 1*Sleep(1000)
WEnd
Func Close()
Exit
EndFunc
Func _ButtonClicked()
Switch @GUI_CtrlHandle
Case ControlGetHandle("[active]", "", $ok1)
OK($ok1, 0, 0)
Case ControlGetHandle("[active]", "", $ok2)
OK($ok2, 1, 2)
Case ControlGetHandle("[active]", "", $ok3)
OK($ok3, 2, 4)
EndSwitch
EndFunc
Func OK($hIcon, $blnID, $intIconOn, $intIconOff = "" )
If $intIconOff = "" Then $intIconOff = $intIconOn + 1
If $aBlnIco[$blnID] Then
GUICtrlSetImage($hIcon, $pthIco & $aIcon[$intIconOff])
$aBlnIco[$blnID] = False
Else
GUICtrlSetImage($hIcon, $pthIco & $aIcon[$intIconOn])
$aBlnIco[$blnID] = True
EndIf
EndFunc
Vlt. könnte mir auch jmd einen neuen Ansatz verraten, stehe zZ voll auf dem Schlauch.