Moin OPA,
erst einmal muss ich einen Irrtum meinerseits aufklären:
Bei einem RadioButton wird nur dann das OnClick bei Zuweisung an die Eigenschaft Checked ausgelöst, wenn der Wert auf True gesetzt wird, und der Wert gleich false war.
Vergleichbar ist dies auch beim Anklicken.
Ist der Button markiert, so wird kein OnClick ausgelöst, demzufolge hat ein Doppelclick auch kein doppeltes Ausführen der Ereignisroutine zur Folge.
Es genügt also einfach das Starten des Programmes per ShellExecute dort einzutragen, ggf. noch das Zurücksetzen der Eigenschaft Checked.
Die Zuweisungen an Enabled, und die Verzögerung sind überflüssig.
Zu Marabus Anmerkung bezüglich der Verwendung von RadioButtons als Button hätte ich auch noch etwas (nicht böse gemeint):
Interface Hall of Shame
Es spricht natürlich prinzipiell nichts dagegen bei der Gestaltung der Bedienung kreativ zu sein, solange dies eine Verbesserung bedeutet. Bei der Verwendung von RadioButton als Button halte ich dies allerdings für fraglich, da sie sich hier völlig anders verhalten, erwartet.
Wie wäre es denn mit SpeedButton?
Initial werden AllowUp auf true und Down auf false gesetzt.
Im OnClick werden nun
Delphi-Quellcode:
SpeedButton1.OnClick := nil;
SpeedButton1.AllowAllUp := false;
gesetzt.
Dies hat zur Folge, dass der Button gedrückt erscheint, und kein Klick mehr Wirkung hat.
Um dieses zu lösen nimmst Du einen weiteren, "normalen", Button als Reset-Button.
Delphi-Quellcode:
SpeedButton1.AllowAllUp := true;
SpeedButton1.Down := false;
SpeedButton1.OnClick := SpeedButton1Click;
Hiermit wird der Button wieder gelöst, und das Anklicken mit Funktion belegt.
Damit sich die Button nicht gegenseitig auslösen muss bei jeden ein anderer GroupIndex > 0 angegeben werden.
Vorteil: Jeder sieht sofort, was er angeklickt hat, und kann gezielt die erneute Nutzung aktivieren (Reset-Button, ggf. einer für alle SpeedButton).
Das ist jetzt auch nicht ideal, aber,
IMHO, irgendwie gewohnter, als ein RadioButton.
Eigentlich sollten Button genügen, denn i.d.R. weiss der geübte Windows-Anwender, dass ein Doppelclick auf einen Button diesen auch zweimal aktiviert.