unit Unit38;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.Layouts, FMX.ListBox, FMX.Edit, FMX.EditBox,
FMX.SpinBox;
type
TRadioGroupHelper =
class helper
for TGroupBox
// Setzt voraus, dass die TAG-Werte der TRadioButton manuell zuvor auf 0..x durchnumeriert wurden
function ItemIndex: Integer;
procedure SetItemIndex (NewIndex: Integer);
end;
TForm38 =
class(TForm)
RadioButton0: TRadioButton;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
bnGetIndex: TButton;
bnSetIndex: TButton;
procedure bnGetIndexClick(Sender: TObject);
procedure bnSetIndexClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form38: TForm38;
implementation
{$R *.fmx}
{ TRadioGroupHelper }
function TRadioGroupHelper.ItemIndex: 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;
// Test
procedure TForm38.bnGetIndexClick(Sender: TObject);
begin
ShowMessage (GroupBox1.ItemIndex.ToString);
end;
procedure TForm38.bnSetIndexClick(Sender: TObject);
begin
GroupBox1.SetItemIndex (1);
// statt GroupBox1.itemIndex := 1;
end;
end.