如何遍历窗口中所有的控件 ( 积分: 50 )

  • 主题发起人 主题发起人 zqssoft
  • 开始时间 开始时间
Z

zqssoft

Unregistered / Unconfirmed
GUEST, unregistred user!
如何遍历窗口中所有的控件,判断其是否具有caption属性,若有,则全部设置所有控件的caption属性为ABC.
 
uses
TypInfo;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
//Caption := 'ABC'; //设置窗自身Caption
for I := 0 to ComponentCount - 1 do
if GetPropInfo(Components, 'Caption', [tkString, tkLString, tkWString]) <> nil then //确保Caption属性是string类型
//if GetPropInfo(Components, 'Caption') <> nil then
SetPropValue(Components, 'Caption', 'ABC');
end;

//D7 + WinXP sp2
 
Tcomponent.componentcount属性遍历所有组件,Tform继承自Tcomponent,因此也可以
 
2 楼的朋友,VERY GOOD!!!
 
学了一招
 
顶ANiDelphi,令补充分析楼主的问题,如果窗口中所有的控件,都具有caption属性,则全部设置所有控件的caption属性为ABC;如果有不具有caption属性的,不做任何操作,代码如下:(借用ANiDelphi的代码,望原谅)
uses
TypInfo;
.....
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
flag:boolean;
begin
flag:=false;
for i:=0 to ComponentCount - 1 do
begin
if GetPropInfo(Components, 'Caption') = nil then flag:=true;
end;
if flag=false then
for i:=0 to ComponentCount - 1 do
begin
SetPropValue(Components, 'Caption', 'ABC');
end;
end;
 
后退
顶部