Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#5

AW: TGroupbox, Tag property

  Alt 25. Apr 2014, 06:10
Ich würde das ganz anders angehen:

1. Schreibe eine Procedure, die alle GroupBoxes unsichtbar macht:
Delphi-Quellcode:
Procedure TFormMain.GroupBoxenUnsichtbar;
begin
  Group1.Visible := False;
  Group2.Visible := False;
  Group3.Visible := False;
  Group4.Visible := False;
  Group5.Visible := False;
end;
Dann schreibst du dir eine Ereignisbehandlung für OnClick deiner RadioGroup:
Delphi-Quellcode:
Procedure TFormMain.Radio_WasWeisIchClick(Sender: TObject);
begin
  GroupBoxenUnsichtbar;
  Case Radio_WasWeisIch.ItemIndex Of
   1 : Group1.Visible := True;
   2 : Group2.Visible := True;
   3 : Group3.Visible := True;
   4 : Group4.Visible := True;
   5 : Group5.Visible := True;
  End;
end;
Kommen nun weitere GroupBoxen hinzu, trägst du die einfach in diese beiden Proceduren ein.

Alternativ könntest du diese GroupBoxen auch in einer Objektliste verwalten ...
Delphi-Quellcode:
  PRIVATE { Private-Deklarationen }

   MyObjectList : Generics.Collections.TObjectList<TGroupBox>;
   ...

Procedure TFormMain.FormCreate(Sender: TObject);
begin
  ...
  MyObjectList := Generics.Collections.TObjectList<TGroupBox>.Create;
  ...
end;
... und eine Methode schreiben, um die Objektliste zu befüllen:
Delphi-Quellcode:
Procedure TFormMain.MyObjectListFill;
begin
  MyObjectList.Add(Group1);
  MyObjectList.Add(Group2);
  MyObjectList.Add(Group3);
  MyObjectList.Add(Group4);
  MyObjectList.Add(Group5);
end;
Dann wäre Radio_WasWeisIch.Items analog zu MyObjektList.Items und die Methoden sähen wie folgt aus:
Delphi-Quellcode:
Procedure TFormMain.GroupBoxenUnsichtbar;
Var
  i : Integer;
begin
  For i := 0 TO MyObjectList.Count -1 DO
    MyObjectList.Items[i].Visible := False;
end;

Procedure TFormMain.Radio_WasWeisIchClick(Sender: TObject);
begin
  GroupBoxenUnsichtbar;
  MyObjectList.Items[Radio_WasWeisIch.ItemIndex].Visible := True;
end;
... oder gleich alles in einer Procedure:
Delphi-Quellcode:
Procedure TFormMain.Radio_WasWeisIchClick(Sender: TObject);
Var
  i : Integer;
begin
  For i := 0 TO MyObjectList.Count -1 DO
    MyObjectList.Items[i].Visible := False;
  MyObjectList.Items[Radio_WasWeisIch.ItemIndex].Visible := True;
end;
Hinweis: Alles ungetestet ...

Geändert von Perlsau (25. Apr 2014 um 06:13 Uhr) Grund: Hinweis auf ungetestet
  Mit Zitat antworten Zitat