Ich umgehen das Problem meistens mit einem Integer-Property, bei dem ich im Setter nur dann etwas mache, wenn es sich ändert.
Nehmen wir z.B. ein einfaches Form mit einer RadioGroup und einem Label. Die
Pas-Datei sieht dann so aus:
Delphi-Quellcode:
type
TForm238 = class(TForm)
RadioGroup1: TRadioGroup;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
FSelectedIndex: Integer;
procedure SetSelectedIndex(const Value: Integer);
public
property SelectedIndex: Integer read FSelectedIndex write SetSelectedIndex;
end;
...
procedure TForm238.FormCreate(Sender: TObject);
begin
FSelectedIndex := RadioGroup1.ItemIndex;
end;
procedure TForm238.RadioGroup1Click(Sender: TObject);
begin
SelectedIndex := RadioGroup1.ItemIndex;
end;
procedure TForm238.SetSelectedIndex(const Value: Integer);
begin
if FSelectedIndex <> Value then
begin
FSelectedIndex := Value;
Label1.Caption := RadioGroup1.Items[FSelectedIndex];
RadioGroup1.ItemIndex := FSelectedIndex;
end;
end;