创建一个Form
创建一个Form的实例用: SomeForm:=TSomeForm.Create(Application);
而不要用: TApplication.CreateForm(TSomeForm,SomeForm);
因为 TApplication.CreateForm() 会检查 MainForm 是否为 nil,如果是的话,便把新创建的 Form 作为主 Form。
打开一个模式Form
打开一个模式Form的标准写法是:
ModalForm:=TModalForm.Create(Application);
try
if ModalForm.ShowModal=mrOK then
{ do something}
finally
ModalForm.Free;
end;
打开一个无模式Form
打开一个无模式Form的标准写法是:
SomeForm:=TSomeForm.Create(Application);
SomeForm.Show;
并在Form的OnClose事件中将此Form释放掉:
procedure TSomeForm.FormClose(Sender:TObject; var Action:TCloseAction);
begin
Action:=caFree;
end;
防止出现一个Form的多个实例
if not Assigned(SomeForm) then // 也可写为 if SomeForm=nil then
SomeForm:=TSomeForm.Create(Application);
SomeForm.Show;
并在Form的OnClose事件中将此Form释放掉:
procedure TSomeForm.FormClose(Sender:TObject; var Action:TCloseAction);
begin
Action:=caFree;
end;
同时在Form的OnDestroy事件中将此Form变量设为nil:
procedure TfrmMaterial.FormDestroy(Sender: TObject);
begin
SomeForm:=nil;
end;
创建一个Form的实例用: SomeForm:=TSomeForm.Create(Application);
而不要用: TApplication.CreateForm(TSomeForm,SomeForm);
因为 TApplication.CreateForm() 会检查 MainForm 是否为 nil,如果是的话,便把新创建的 Form 作为主 Form。
打开一个模式Form
打开一个模式Form的标准写法是:
ModalForm:=TModalForm.Create(Application);
try
if ModalForm.ShowModal=mrOK then
{ do something}
finally
ModalForm.Free;
end;
打开一个无模式Form
打开一个无模式Form的标准写法是:
SomeForm:=TSomeForm.Create(Application);
SomeForm.Show;
并在Form的OnClose事件中将此Form释放掉:
procedure TSomeForm.FormClose(Sender:TObject; var Action:TCloseAction);
begin
Action:=caFree;
end;
防止出现一个Form的多个实例
if not Assigned(SomeForm) then // 也可写为 if SomeForm=nil then
SomeForm:=TSomeForm.Create(Application);
SomeForm.Show;
并在Form的OnClose事件中将此Form释放掉:
procedure TSomeForm.FormClose(Sender:TObject; var Action:TCloseAction);
begin
Action:=caFree;
end;
同时在Form的OnDestroy事件中将此Form变量设为nil:
procedure TfrmMaterial.FormDestroy(Sender: TObject);
begin
SomeForm:=nil;
end;