关闭

模式和非模式对话框

标签: applicationdelphiaction
473人阅读 评论(0) 收藏 举报
分类:

Delphi的模式窗体两种方式:
方式1、
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Application);
  try
    if Form2.ShowModal=mrok then
     showmessage('ss');
     {其它操作}
  finally
    Form2.Free;
    Form2:=nil;
  end;
end;
方式2、
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(nil);
  try
    Form2.ShowModal;
  finally
    Form2.Free;
    Form2:=nil;
  end;
end;

非模式窗体
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not assigned(Form2) then
    Form2 := TForm2.Create(Application);
  Form2.show;
end;
注:如果非模式窗体的属主对是nil不是Application,也就
说如下
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not assigned(Form2) then
    Form2 := TForm2.Create(nil);
  Form2.show;
end;
那么这种窗体需要手工释放窗体内存:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;
不仅是手工释放窗体内存,还要将窗体变量Form2的指针置为空:
procedure TForm2.FormDestroy(Sender: TObject);
begin
  Form2:=nil;
end;

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:168405次
    • 积分:2436
    • 等级:
    • 排名:第16015名
    • 原创:50篇
    • 转载:120篇
    • 译文:0篇
    • 评论:7条
    最新评论
    NO Problem