if not Assigned(ContactEditForm) then ContactEditForm := TContactEditForm.Create(Application); ContactEditForm.Show();
var created:boolean=False;Button onclick事件中 if not created then begin created:=True; 创建 end else 显示
procedure TForm1.Button1Click(Sender: TObject); begin if for2=nil begin Application.creatform(TFomr2,Form2); Form2.show; end else Form2.show; end;
procedure TForm1.Button1Click(Sender: TObject); begin if form2=nil //改正 begin Application.creatform(TFomr2,Form2); Form2.show; end else Form2.show; end;
我一般也是这样: procedure TForm1.Button1Click(Sender: TObject); begin if form2=nil begin //Application.creatform(TFomr2,Form2); from2 := tform.create Form2.show; end else Form2.show; end; 然后在form2的destroy事件中写Form2 := nil;
if form2=nil begin Application.creatform(TFomr2,Form2); Form2.show; end else Form2.show;
if not Assigned(Form2) then Form2 := TForm2.Create(Application); Form2.show;Form2窗体OnClose里写 Action := cafree; OnDestroy里写 Self := nil;
begin
Application.creatform(TFomr2,Form2);
Form2.show;
end;
另外,需要注意的是Form2关闭事件中
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
ContactEditForm := TContactEditForm.Create(Application);
ContactEditForm.Show();
if not created then
begin
created:=True;
创建
end else 显示
begin
if for2=nil
begin
Application.creatform(TFomr2,Form2);
Form2.show;
end
else
Form2.show;
end;
begin
if form2=nil //改正
begin
Application.creatform(TFomr2,Form2);
Form2.show;
end
else
Form2.show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if form2=nil
begin
//Application.creatform(TFomr2,Form2);
from2 := tform.create
Form2.show;
end
else
Form2.show;
end;
然后在form2的destroy事件中写Form2 := nil;
begin
Application.creatform(TFomr2,Form2);
Form2.show;
end
else
Form2.show;
Form2 := TForm2.Create(Application);
Form2.show;Form2窗体OnClose里写
Action := cafree;
OnDestroy里写
Self := nil;
另外在子窗体的close事件里一定要释放掉action := cafree;