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;

解决方案 »

  1.   

    FormCloseAction := acFree;
    self := nil;
      

  2.   


    写反了,应该是
    FormCloseAction := caFree;
    self := nil;
      

  3.   

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

  4.   

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

  5.   

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

  6.   


    Form.OnClose := FormClose;
      

  7.   

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

  8.   

    FreeAndNil(form3);只能放在窗体的Destroy事件里,其它的事件都还在用着这个FORM3,你释放了,肯定内存报错.
    Close;这个会内存报错?没见过