+ -
当前位置:首页 → 问答吧 → 窗体创建和释放方法

窗体创建和释放方法

时间:2011-10-21

来源:互联网

第一种
  frmChooseCompany := TfrmChooseCompany.Create(nil);
  try
  frmChooseCompany.ShowModal; //当frmChooseCompany.Show时窗体一闪而过,为什么?
  finally
  frmChooseCompany.Free;
  end;
第二种
  创建
  if frmChooseCompany <> nil then
  frmChooseCompany.ShowModal
  else
  Application.CreateForm(TfrmChooseCompany,frmChooseCompany);
  释放
  Action := caFree;
  frmChooseCompany := nil;


这两种方法有什么区别,尤其是用第一种方法时当窗体显示状态为show和showmodal的时候,创建窗体显示效果为什么不同

作者: herlockkn   发布时间: 2011-10-21

第二种创建前会先判断是否存在,已存在则不创建
showmodel和show的区别
使用Show的窗体显示非模式窗体,在该窗体关闭之前你仍然可以访问其他窗体,但你无法知道非模式窗体何时会被撤销;而使用ShowModel显示模式窗体,在该窗体关闭之前你无法访问其他窗体

作者: funxu   发布时间: 2011-10-21

至于为什么一闪而过
你创建完立刻就释放了,不闪才怪的说
 

作者: funxu   发布时间: 2011-10-21

你要想 用show 也行,

frmChooseCompany 设置成全局变量.

然后 每次判断一下是否是 nil 不是才 create

两种 create 都一样效果的.

不同的是 第一种是局部的, 你show以后立马释放了,所以就神马都没有了

作者: warrially   发布时间: 2011-10-21

showmodal 就是表示窗体运行结束以后, 才继续往下走,

这个时候 你前面的 Form 是不能动的.

作者: warrially   发布时间: 2011-10-21