2014-09-01 56 views
1

如何才能按名称查找表格?在这个表格上我有Edit(TEdit),我想在这个TEdit中写一些东西(它的名字例如:地址),但我只有表格名称。 你能帮我吗?德尔福,按名称查找表格

+2

你是如何失去表格的? – 2014-09-01 17:42:58

+0

您的意思是如何在应用程序在运行时创建的表单中找到表单? – MartynA 2014-09-01 18:37:47

+0

我的意思是,如果你创建了表单,为什么你不记得它在一个变量。你为什么想要按名称查找某些东西? – 2014-09-01 21:30:12

回答

5

有一种更简单的方式来按名称查找表单。由于所有auto-created表单对象都由Application对象拥有,并且TApplication继承自TComponent,所以可以迭代通过Application.Components数组属性或使用Application.FindComponent方法。请注意0​​是不区分大小写的。

0

如果您知道窗体标题或窗体的类名,则可以使用FindWindow函数。

+0

我认为OP可能会问如何从包含表单的应用程序内部查找表单。 – MartynA 2014-09-01 18:36:05

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;