【发布时间】:2012-08-13 23:29:55
【问题描述】:
我一直在使用下面的代码来检查一个表单是否已经存在:
function FormExists(apForm: TObject): boolean;
var i: Word;
begin
Result := False;
for i := 0 to Application.ComponentCount-1 do
if Application.Components[i] = apForm then begin
Result := True;
Break;
end;
end;
几年前我从我参与的一个项目中得到它。这是我的第一个 Delphi 项目之一。
有效。
但是这周我想知道是否有更好、更快的方法来做到这一点。
【问题讨论】:
-
这个函数有没有返回过假?如果是在什么条件下?询问是因为不清楚“存在”是什么意思。
-
是的。如果没有创建表单。
-
好吧,正如你在评论中已经提到的,只是测试分配。
-
@Sertac,但如果您不使用
FreeAndNil,可以分配表单变量但可以破坏窗口。它还必须具有其存在的有效句柄。 -
@TLama - 我想我明白了。但我不会在悬空指针上测试窗口句柄。我自己将 nil 分配给 OnDestroy 中的全局变量。
标签: delphi