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;
那就再加一个判断: 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;
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
再问一下:如果我只想设置某一个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.
var i: Integer;
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TControl then
(Components[i] as TControl).Enabled := False;
end;
怎么才能实现这个功能呢?
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;
至于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
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.