TPanel 清理(Lazarus)

TPanel cleaning (Lazarus)

请告诉我,TPanel是否有方法可以清除TPanel上的所有对象?

例如,如果某些标签被放置在 TPanel(Label.Visible = true) 上,那么在应用该方法后它们将变得不可见 (Label.Visible: = false)。

当然可以

Panel.Visible = false;

所有以您的面板为父级的元素都会改变可见性。

如果您在运行时创建控件,您应该为它们分配正确的父级

myLabel.Parent = Panel;

您是要销毁 TPanel 上的所有对象还是只需要隐藏?

如果您只需要隐藏面板的所有组件,此代码可能对您有所帮助:

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;