我想一开始的时候设置在FORM里面的所有控件的属性ENABLE=FALSE
怎么操作呢?
一个个写当然不算了。呵呵

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
    var i: Integer;
    begin
      for i := 0 to ComponentCount - 1 do
        if Components[i] is TControl then
          (Components[i] as TControl).Enabled := False;
    end;
      

  2.   

    谢谢,还有一个问题,在主FORM中存在下拉菜单,上面的命令不能把菜单里的选项ENABLE=FALSE
    怎么才能实现这个功能呢?
      

  3.   

    菜单下的不是TControl啊,怎么把他们也FALSE呢?
      

  4.   

    那就再加一个判断:
    procedure TForm1.FormCreate(Sender: TObject);
    var i: Integer;
    begin
      for i := 0 to ComponentCount - 1 do
        if Components[i] is TControl then
          (Components[i] as TControl).Enabled := False
        else
        if Components[i] is TMenuItem then
          (Components[i] as TMenuItem).Enabled := False;
    end;
      

  5.   

    To ancients   楼上的说的对,建议你用TACTIONMANAGER和TACTIONMAINMENUBAR来集中控制所有菜单项目。不过对于窗体上的其他控件(如果是TOOLBAR你可以用TACTIONTOOLBAR替代),也只能用死树兄介绍的方法了!
    至于TACTIONMANAGER和TACTIONMAINMENUBAR的用法,参考
    http://expert.csdn.net/Expert/topic/1522/1522856.xml?temp=.4998896
    中DDEVELOPER的介绍!
    顺便劳烦SCSUN看看这个帖子
    http://expert.csdn.net/Expert/topic/1528/1528975.xml?temp=.52763
      

  6.   

    再问一下:如果我只想设置某一个panel下的所有checkbox或者是某一个tabsheet下的所有checkbox该怎么办?因为form1.TabSheet1.ComponentCount-1的值为-1,不知道为什么?明明那些控件都在tabsheet1中。我另外加了一个panel,还是不行。附代码:我的本意是做了一个按钮,名为“全选”,单击后,当前tabsheet中的所有checkbox都选中,然后dbgrid中所有的字段都显示。
    procedure TForm1.Button3Click(Sender: TObject);
    var
      i:integer;
    begin
     //showmessage(inttostr(form1.panel1.ComponentCount-1))  ;
     for i := 0 to form1.TabSheet1.ComponentCount-1 do
        begin
        if Components[i] is Tcheckbox then
          (Components[i] as Tcheckbox).checked := true;
        end;
     for i:=0 to dbgrideh1.Columns.Count-1  do
         form1.DBGridEh1.Columns.Items[i].Visible :=true;
    end;end.