Diese Classhelper scheinen ein recht mächtiges Potential zu haben.
Zu meinem Erstaunen kann man dort auch Properties einbauen. So konnte ich diesen Classhelper soweit modifizieren, daß man in von den vorgefertigten (T)RadioGroups gewohnter Manier auf den ItemIndex sowohl lesend als auch schreibend zugreifen kann. Für alle, die das interessiert, hier Harry Stahls von mir etwas modifizierter Quellcode:
Delphi-Quellcode:
type
TRadioGroupHelper = class helper for TGroupBox
// Setzt voraus, dass die TAG-Werte der TRadioButton manuell zuvor auf 0..x durchnumeriert wurden
function GetItemIndex: Integer;
procedure SetItemIndex (NewIndex: Integer);
property ItemIndex: Integer read GetItemIndex write SetItemIndex;
end;
function TRadioGroupHelper.GetItemIndex: Integer;
var
L: Integer;
begin
Result := -1;
for L := 0 to ChildrenCount-1 do begin
if Children[L] is TRadioButton then begin
if (Children[L] as TRadioButton).IsChecked then begin
Result := (Children[L] as TRadioButton).Tag;
end;
end;
end;
end;
procedure TRadioGroupHelper.SetItemIndex(NewIndex: Integer);
var
L: Integer;
begin
for L := 0 to ChildrenCount-1 do begin
if Children[L] is TRadioButton then begin
if (Children[L] as TRadioButton).Tag = NewIndex then begin
(Children[L] as TRadioButton).IsChecked := True;
end;
end;
end;
end;
Edit: Die Groupboxen als Grundlage dieser selbstgebastelten RadioGroups benenne ich einfach in RadioGroup1 usw. um, und schon ist am Quelltext kaum noch etwas zu ändern.