Ich fülle eine RadioGroup zur Laufzeit mit RadioButtons und möchte diese auch zur Laufzeit wieder entfernen können.
Da ich jedem RadioButton auch eine FontFarbe und eine OnChangeroutine zuweisen möchte, verwende ich dafür folgenden Code:
Code: Alles auswählen
while not SQLQuery1.EOF do
begin
inc(a);
RB := TRadioButton.Create(Form45.RadioGroup1);
RB.Caption:='['+SQLQuery1.Fields[2].AsString+'] '+SQLQuery1.Fields[0].AsString;
RB.Parent := Form45.RadioGroup1;
RB.Font.Color:=SQLQuery1.Fields[1].AsInteger;
RB.OnChange:=@Form45.RadioButtonChange;
SQLQuery1.Next;
end;
Da die Items gelegentlich neu aus der DB eingelesen werden, wollte ich die RadioGroup zuvor mit
Code: Alles auswählen
Form45.RadioGroup1.Items.Clear;
leeren, da sonst die Einträge doppelt drin stehen. Das passiert aber trotzdem, da die RadioGroup anscheinend keine Items hat, wenn ich meine Methode zum Einfügen verwende.
Auch
Code: Alles auswählen
RadioGroup1.items.Delete(0);
führt mit "Index out of Bounds" zum Absturz.
Füge ich die Einträge mit
Code: Alles auswählen
Form45.RadioGroup1.Items.Add(SQLQuery1.Fields[0].AsString);
hinzu kann ich die Fontfarbe und OnChangeroutine nicht festlegen.
Hat wer eine Idee, wo mein Denkfehler liegt?
Schönes Wochenende
Christian