2016-04-11 11 views
0

Sag mir bitte, ob TPanel hat Methode, mit der Sie alle Objekte auf der TPanel löschen können?TPanel Reinigung (Lazarus)

Wenn beispielsweise einige Beschriftungen auf TPanel (Label.Visible = true) platziert wurden, wurden sie nach dem Anwenden der Methode unsichtbar (Label.Visible: = false).

Antwort

0

Haben Sie alle Objekte auf dem TPanel zerstören wollen oder brauchen Sie nur zu verstecken?

Wenn Sie verstecken müssen nur alle Komponenten des Panels dieses Codes können Sie helfen:

Example of HideAll components of panel

procedure TForm1.chk_Visible_AllChange(Sender: TObject); 
var 
    n: Integer; 
    cmp : TComponent; 
begin 

    for n:= 0 to ComponentCount-1 do 
    begin 
     cmp := Components[n]; 
     if cmp.GetParentComponent=Panel1 then 
     begin 
      if cmp is TLabel then 
      TLabel(cmp).Visible:= chk_Visible_All.Checked; 
      if cmp is TButton then 
      TButton(cmp).Visible:= chk_Visible_All.Checked; 
      if cmp is TMemo then 
      TMemo(cmp).Visible:= chk_Visible_All.Checked; 
      if cmp is TGroupBox then 
      TGroupBox(cmp).Visible:= chk_Visible_All.Checked; 
     end; 
    end; 
end; 
+0

Danke, das ist, was ich brauchte! – JohnS

0

Natürlich können Sie verwenden

Panel.Visible = false; 

Alle Elemente, die Ihre Platte als Elternteil haben würde Sichtbarkeit ändern.

Wenn Sie erstellen Steuerelemente zur Laufzeit Sie sollten sie die richtige Eltern zuweisen mit

myLabel.Parent = Panel;