如何避免相同的窗体被创建?(20分)

  • 主题发起人 主题发起人 城里的月饼
  • 开始时间 开始时间

城里的月饼

Unregistered / Unconfirmed
GUEST, unregistred user!
我在button1的click事件中动态的创建一个窗体:
Myform:=TMyform.create;
当我再点击button时又产生一个相同的窗体(浪费资源?),
我想在点击button前判断一下是否存在相同的窗体,存在的话就exit;
否则再创建。
如何判断已经存在的窗体呢?
 
顺便说一下,窗体的borderstyle属性是bsNone
 
很简单,循环查看Screen.CustomForms中的每个Form,看看有没有同名的即可
 
if MyForm <> nil then
application.CreateForm(TMyForm,MyForm);
try
MyForm.ShowModal;
finally
MyForm.Free;
MyForm := nil;
end;
 
MyForm.Free;
//是不会浪费资源的
 
to yt_wyb:
我试了,不好使
 
创建多个窗体实例肯定是浪费资源!
创建的时候应该这样吧,试试~
begin
if not assigned(Myform) then
//检查是否已经存在!
Myform:=TMyform.create(Application);
Myform.show;
end;
------------------
释放的时候如下二个事件:
procedure TMyform.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;

procedure TMyform.FormDestroy(Sender: TObject);
begin
myfrom:=nil
end;

这样就不会出问题!
 
不单止是浪费资源啦,还是内存泄漏啦!
 
接受答案了.
 
后退
顶部