注意放置时的TabOrder顺序。procedure TForm1.Button1Click(Sender: TObject); var ii: Integer; sStr:WideString; begin for ii := 0 to Form1.ControlCount - 1 do begin if Form1.Controls[ii] is TEdit then sStr := sStr + TEdit(FindComponent(Form1.Controls[ii].Name)).Text; if Form1.Controls[ii] is TComboBox then sStr := sStr + TComboBox(FindComponent(Form1.Controls[ii].Name)).Text; end; end;
使用tcomponent的components属性: var i:integer; str:string; begin for i:=0 to form1.componentcount-1 do begin if components[i].classname:=tedit then str:=str+components[i].text; if ..... if
a:Tcomponent; b:integer; a:=findcomponent('combobox'+inttostr(i)); if assigned(a) then b:=b+strtoint(tcombobox(a).text);
使用as is么。先用is判断,再用as做类型转换。 function addall:String; var i:integer; begin for i:=0 to self.componentcount-1 do if self.components[i] is tedit then result:=result+(self.components[i] as tedit ).text; end;
var ii: Integer;
sStr:WideString;
begin
for ii := 0 to Form1.ControlCount - 1 do
begin
if Form1.Controls[ii] is TEdit then
sStr := sStr + TEdit(FindComponent(Form1.Controls[ii].Name)).Text;
if Form1.Controls[ii] is TComboBox then
sStr := sStr + TComboBox(FindComponent(Form1.Controls[ii].Name)).Text;
end;
end;
var
i:integer;
str:string;
begin
for i:=0 to form1.componentcount-1 do
begin
if components[i].classname:=tedit then
str:=str+components[i].text;
if .....
if
end;有些方法可能用使用错误具体的,你自己查帮助吧。
如果控件是运行时创建的那就把它们放到数组或List里吧.
或者自己作一个非可视控件,带一个TComboxLinkCollection和一个TEditLinkCollection的Publish属性和一个生成字符串的方法……
b:integer;
a:=findcomponent('combobox'+inttostr(i));
if assigned(a) then
b:=b+strtoint(tcombobox(a).text);
function addall:String;
var
i:integer;
begin
for i:=0 to self.componentcount-1 do
if self.components[i] is tedit then
result:=result+(self.components[i] as tedit ).text;
end;