如何通过窗体的Controls属性来控制窗体中的控件?
我的程序中,窗体上有许多Edit控件,我想把它们的Enabled属性置为False,
我知道窗体的Controls属性是窗体的子控件,所以我想通过该属性来实现
这个功能,但是“FormXiaoQuJJ.Controls[i].Enabled:=False”这样的
代码是错的,该怎么改呢?
问题点数:50、回复次数:7Top
1 楼Liusp(夜深千帐灯)回复于 2002-04-18 18:17:13 得分 20
for iCount := 0 to ComponentCount - 1 do
begin
if Components[iCount] is TEdit then
TEdit(Components[iCount]).Enabled := False;
end;
Top
2 楼xxmmmx(踢踏)回复于 2002-04-18 18:20:16 得分 15
var
Component: TComponent;
....
for i := 0 to self.ComponentCount-1 do
begin
Component := self.Components[i] as TComponent;
if Component.ClassNameIs('TEdit') then
(Component as TEdit).Enabled := false;
//if Component.ClassNameIs('TDBMemo') then
// (Component as TDBMemo).Width := iWidth;
......
end;
Top
3 楼agui(阿贵: 高级图形用户界面)回复于 2002-04-18 18:28:26 得分 0
哈哈,你们的方法都比较对。不过,我有两句话要说:
xxmmmx(踢踏) 的方法无疑是比较灵活而通用的,但是效率低了些,改成这个就好一点了:
Component is TEdit
Component is TDBMemo
。
还有一个办法是根本不用管控件是哪个具体的类,只管看它有没有“Enabled”这个属性,从而设置它的值。
要不要?
Top
4 楼eagle123(大丁)回复于 2002-04-18 18:37:07 得分 0
来晚了, 楼上所说的均可Top
5 楼inbud(清风侠)回复于 2002-04-18 18:39:59 得分 15
来晚了,提供一个更快的吧
for i:=0 to ControlCount-1 do
if Controls[i].Classtype=TEdit then
TEdit(Controls[i]).Enabled:=false;
这样将只遍历所有Control控件,而不是所有的Component!Top
6 楼xxmmmx(踢踏)回复于 2002-04-18 19:07:11 得分 0
to agui(阿贵.Program(Life)):
你那个东西我要.我想在窗口出现的时候,每个有Repaint属性的控件重新画一遍,但不知道怎么做.Top
7 楼wind8bell(风之铃)回复于 2002-04-18 19:15:37 得分 0
标记一下Top




