背景:form1上有panel1和panel2。而panel1和panel2上有分别有将近100个panel。
问题:如果简单设置‘动态’完成使得from1,panel1,panel2和它们的子panel的颜色全部为clblue 呢?、谢谢!

解决方案 »

  1.   

    将所有PANEL的PARENTFONT属性设为TRUE就行了
      

  2.   

    var
      i: integer;
    begin
      for i := 0 to Self.ComponentCount - 1 do
        if Self.Components[i] is TPanel then
        begin
          TPanel(Self.Components[i]).Color := clblue;
          //下面可以取消,如果你想两个Panel上的子Panel颜色分别设置,
          //就可以用下面的程序
    {      if TPanel(Self.Components[i]).Parent := Panel1 then
          begin
            TPanel(Self.Components[i]).Color := clblue;
          end;
          if TPanel(Self.Components[i]).Parent := Panel2 then
          begin
            TPanel(Self.Components[i]).Color := clblue;
          end;
    }
        end;
    end;
      

  3.   

    procedure SetControlColorEx(Control: TWinControl; Color: TColor); //可以将其了控件设置Color
    var
      i: Integer;
    begin
      for i := 0 to Control.ControlCount - 1 do
      begin
        if Control.Controls[i] is TPanel then
        begin
          SetControlColorEx(TWinControl(Control.Controls[i]),Color);
          TPanel(Control.Controls[i]).Color := Color;
        end;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
       //SetControlColorEx(Form1,clBlue); 将窗体上的所有 Panel 设置成 clBlue;
       SetControlColorEx(Panel3,clBlue);//设置Panel3的所有子Panel为蓝色
    end;
      

  4.   

    madyak(无天) 
    同意楼上.