如何把窗体上TPanel上的所有控件都变为只读

解决方案 »

  1.   


    for i:= 0 to Panel1.ControlCount-1
    begin
      TConrtl(Panel1.Controls[i]).readonly := false;  
    end;
      

  2.   

    uses typinfo;
    ...
    procedure SetControlReadOnly(Control:TControl;bReadOnly:boolean);
    var
      i: Integer;
    begin
      if Control = nil then Exit;  //递归
      if Control is TWinControl then
        for i := 0 to TWinControl(Control).ControlCount - 1 do
          SetControlReadOnly(TWinControl(Control).Controls[i],bReadOnly);  //这些控件不设只读
      if (Control is TPageControl) or (Control is TTabSheet) or (Control is TPanel) or
        (Control is TCustomForm) then exit;  if IsPublishedProp(Control, 'readonly') then
        SetPropValue(Control, 'readonly', bReadOnly);
    end;