+ -
当前位置:首页 → 问答吧 → 请教子窗口关闭的问题~~

请教子窗口关闭的问题~~

时间:2011-11-02

来源:互联网

1:
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeAndNil(form3);
end;

我还想弄一个button关闭

procedure TForm3.btn4Click(Sender: TObject);
begin
  Close; //freeandnil(form3); 这两种都是内存错误
end;

请问为什么呢?

2:
如果我想
procedure TForm3.btn4Click(Sender: TObject);
var 
  str :string;
begin
  str := 'canone';
  formclose(sender,str)//直接代过程,第二个参数是个集合,请问应该怎么表示啊?试了好多方法[canone]都不行
end;

作者: fky1989   发布时间: 2011-11-02

FormClose

Action := acFree;
self := nil;

作者: onlyou13   发布时间: 2011-11-02

引用 1 楼 onlyou13 的回复:
FormClose

Action := acFree;
self := nil;


写反了,应该是
FormClose

Action := caFree;
self := nil;

作者: onlyou13   发布时间: 2011-11-02

自己释放自己是不行的。用消息。

作者: jjpweb   发布时间: 2011-11-02

我好像都是用close的,没试过报错。

作者: CPX1984   发布时间: 2011-11-02

close 事件中 FreeAndNil() 自身是不行的.

作者: bambuz   发布时间: 2011-11-02

引用 2 楼 onlyou13 的回复:

引用 1 楼 onlyou13 的回复:
FormClose

Action := acFree;
self := nil;


写反了,应该是
FormClose

Action := caFree;
self := nil;



这样子不行哦,关闭后再新建,建不出来了

作者: fky1989   发布时间: 2011-11-02

呵呵。。感觉你的代码很奇怪。。哈。。非主流嘛

作者: yerenyo   发布时间: 2011-11-02

我这样用时,只闪一下直接就关了: 
  if not Assigned(Form2) then
  Form2:= TForm2.Create(Owner);
  try
  Form2.Show;
  finally
  Form2.Free;
  end;

作者: zhendero   发布时间: 2011-11-02


Form.OnClose := FormClose;


作者: cshengquan   发布时间: 2011-11-02

引用 7 楼 yerenyo 的回复:
呵呵。。感觉你的代码很奇怪。。哈。。非主流嘛


俺菜鸟,第一次自己编一个系统。。。嘿嘿

作者: fky1989   发布时间: 2011-11-02

我用右上角的关闭很正常,但点button就内存错误

作者: fky1989   发布时间: 2011-11-02