Hi,
folgendes Problem:
Ein Contextmenü wird erstellt und der aktuelle Menüeintrag bekommt mittels GUICtrlSetState(Menüeintrag, $GUI_CHECKED) ein Radiobutton.
Nun kann man per Maus die anderen Menüeinträge auswählen und der Radiobutton wechselt auf den angeklickten Eintrag, so soll es auch sein.
Jetzt möchte ich aber diesen Radiobutton innerhalb des Menüs nicht nur per Mausklick in das Menu ändern, sondern auch innerhalb des Scriptes.
D.h., sobald eine bestimmte Funktion aufgerufen wird, soll die Position des Radiobuttons geändert werden.
Mit GUICtrlSetState(Menüeintrag, $GUI_CHECKED) funktioniert das aber nicht, dann sind beide Menüeinträge angehakt.
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <GuiMenu.au3>
;right click on gui to bring up context Menu.
GUICreate("My GUI Context Menu", 300, 200)
$button = GUICtrlCreateButton("Set Item4", 50, 50)
$context = GUICtrlCreateContextMenu(-1)
$item6 = GUICtrlCreateMenu("Items", $context)
$item6_1 = GUICtrlCreateMenuItem("Item1", $item6, 0, 1)
$item6_2 = GUICtrlCreateMenuItem("Item2", $item6, 1, 1)
$item6_3 = GUICtrlCreateMenuItem("Item3", $item6, 2, 1)
$item6_4 = GUICtrlCreateMenuItem("Item4", $item6, 3, 1)
GUICtrlSetState($item6_1, $gui_checked) ;Item1 bekommt Markierung
GUISetState()
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $msg = $button Then
GUICtrlSetState($item6_4, $gui_checked);Item3 bekommt Markierung, aber die schon bestehende Markierung bleibt
_GUICtrlMenu_CheckRadioItem ($item6, 0, 3, 3) ;funktioniert leider nicht, aber die Funktion sollte wie bei diesem Befehl sein
GUICtrlSetState($item6_4, $MFT_RADIOCHECK ) ;Item wird in fetter Schrift dargestellt
;GUICtrlSetState($item6_4, $MFS_CHECKED ) ;funktioniert nicht
EndIf
WEnd
GUIDelete()
Gibt es eine Möglichkeit den Radiobutton zu setzen(so daß der andere verschwindet), OHNE die damit verknüpfte Funktion aufzurufen.
Die Orgie, sämtliche Positionen zu disablen, und den einen dann zu setzen würde ich gerne vermeiden, da ich viele verschachtelte Menüeinträge habe.
Diese gesuchte Funktion gibt es bei den _GuiCtrlMenuCheckRadioItem(), funktioniert so leider nicht bei "normalen" Contextmenüs.