如何按姓名查找表格?在这个表格上我有编辑(TEdit),我想在这个TEdit中写一些东西(它的名字例如:adress),但我只有表格名称。 你能救我吗?
答案 0 :(得分:8)
有一种更简单的方法可以按名称查找表单。由于所有auto-created表单对象都归Application
个对象所有,而TApplication
继承自TComponent
,因此您可以迭代直到Application.Components
数组属性或使用{{3方法。
var
Form: TForm;
begin
Form := Application.FindComponent('LostForm1') as TForm;
if Assigned(Form) then
Form.Show
else
{ error, can't find it }
请注意,FindComponent
不区分大小写。
答案 1 :(得分:4)
这个答案假定您正在制作VCL应用程序。我不知道FireMonkey是否有类似的解决方案。
创建时,所有表单都将添加到全局屏幕(在Vcl.Forms中声明)对象中。因此你可以像这样做一个小帮手功能
function FindFormByName(const AName: string): TForm;
var
i: Integer;
begin
for i := 0 to Screen.FormCount - 1 do
begin
Result := Screen.Forms[i];
if (Result.Name = AName) then
Exit;
end;
Result := nil;
end;
答案 2 :(得分:0)
如果您知道表单的表单标题或类名,则可以使用FindWindow函数。