窗口重复创建的小问题(50分)

  • 主题发起人 主题发起人 我是一只鱼
  • 开始时间 开始时间

我是一只鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个简单的问题想问一下:
在Form1放一Button1,我想让button1按下后打开Form2.
var form2: Tform2;
begin
form2:=Tform2.create(Self);
form2.show;
end;
但每按一次就会产生一个form2,而我只想让它出现一个,不知要怎么做才可以?
 
if FindWindow("tform2","form2")= null then
form2:=Tform2.create(Self);
form2.show
 
if not assigned(form2) then form2:=Tform2.create(Self);
form2.show;
 
var form2: Tform2;
begin
if form2=nil then begin
form2:=Tform2.create(Self);
form2.show;
end;
end;
 
先判断是否有要创建窗体的实例,有则显示,没有就创建
begin
if not Assigned(Form1) then
Application.CreatForm(TForm1,Form1);
try
Form1.ShowModal;
finally
Form1.Free;
Form1:=nil;
end
else
Form1.ShowModal;
end;
 
用showmodal。动态创建。
try
form2: Tform2.create(application);
form2.showmodal;
finally
form2.free;
end;
 
form2 -->autocreate forms
 
//我是通过如下方法判断
function form_created(FormName: string): boolean;
var
i, j: integer;
begin
FormName := Uppercase(trim(FormName));
j := 0;
for I := 0 to Screen.CustomFormCount - 1 do
begin
if Uppercase(trim(Screen.CustomForms.Name)) = FormName then
begin

result := True;
exit;
end;
end;
result := False;
end;
 
楼上的_joehill说的对,而且方便哈!
 
接受答案了.
 
后退
顶部