Holger Schieferdecker schrieb:
> Mir scheint, im OnKeyUp einer Checkbox ist es nicht möglich, den neuen
> Zustand schon abzufragen, das .Checked wird wohl erst danach gesetzt.
Ich habe hier nur D7 zum Testen, und dort gibt es das OnClick-Ereignis.
Damit dürfte das unten angehängte Testprogramm genau das von Dir
gewünschte Verhalten zeigen. Im Unterschied zu Deiner Lösung reagiert es
auf jede Änderung, z. B. auch bei einem zugewiesenen Tastenkürzel.
Deshalb auch das aktiv-Flag, weil das .Checked:=false innerhalb des
OnClick-Ereignisses wieder ain OnClick auslösen kann.
Gruß Heiko
-------------------- hier abschneiden --------------------------------
unit KlickUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure CheckBoxClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
Aktiv : Boolean;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Aktiv := false;
end;
procedure TForm1.CheckBoxClick(Sender: TObject);
begin
if not aktiv then begin
aktiv:=true;
if sender is tCheckBox then begin
if (sender as tCheckBox).Checked then begin
if sender is tCheckBox then begin
checkbox1.Checked:=false;
checkbox2.Checked:=false;
checkbox3.Checked:=false;
checkbox4.Checked:=false;
(sender as tCheckBox).Checked:=true;
end;
end;
end;
aktiv:=false;
end;
end;
end.
--
Der Mensch ist gut, nur die Nerven sind schlecht.
Mose Ya'aqob Ben-Gavriêl