MDI

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action:=cafree;
end;

解决方案 »

  1.   

    action:=cafree
    用来关闭窗口,释放资源
      

  2.   

    对不起,各位仁兄,我也这样做了,但不行,我也是用的如下代码:
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      action:=cafree;
    end;
    但我又在一个关闭按钮的点击事件中用form.close;
    但这样会报错要不你们试一下,再给俺个答复,谢了!
      

  3.   

    在按扭click中直接调用close;
    在form的close中用action;=cafree;没问题,我就是这样用的
      

  4.   

    要在formclose事件中加:action:=cafree;
      

  5.   

    你这样做多危险啊!想想你要是两次点击关闭按钮,窗口其不是要被释放两次?这样当然会出非法访问内存的错误了!正确的方法是在Form1的OnClose中释放自己,即用前面说的将Action设置为caFree的方法,这样更符合OOP的观点。如果你非要在别的窗口中释放它,你就必须检查它是否已经被释放了,这可以用 if Assigned(Form1)来判断。
      

  6.   

    我是这样编的:
    formcreate事件(主窗口)
    mainform.formstyle:=fsmdiform;
    (子窗口)
    childform.formstyle:=fsmdichild;
    打开按钮:
    tchildform.create(self);
    子窗口关闭事件:
    action:=cafee;
    我已经验证过了。
    给点分吧!!!