我有一个MDI的子窗体。单击窗体右上角的小叉号可以正常关闭,因为我在窗体的onclose时间里写了Active:=caFree了。可是,在我的窗体上还有一个关闭按钮,在onClick事件中我写了frmJDTZ(我窗体的名字).Close;出现了错误。我的窗体是动态创建的。
Var frmJDTZ:TfrmJDTZ;
begin
 frmJDTZ:=TfrmJDTZ.Create(Application);
 frmJDTZ.Show;
end;
报错的大体意思如下:
“Access violation at address 0046FA51 in module 'FBC.exe'. Read of address 000002F4”

解决方案 »

  1.   

    你在关闭按钮的OnClick事件中应该用self.Close;而不应该指明某个实例啊,即不应用frmJDTZ.Close;
    有时间请看一下我的拙作,讲的是这方面的内容:
    http://blog.csdn.net/flexitime/archive/2008/02/11/2088103.aspx
      

  2.   

    如楼上所言,或者就只写上Close,前面的“Self.”不用写,或前面的“frmJDTZ.”不要写。
      

  3.   

    好像还要关闭的时候Free掉这个form才可以把。
      

  4.   

    只写Close 等于 self.Close,只是省略了而已,Delphi预编译时会加回去的,所以加不加是没所谓。
    但如果写frmJDTZ那就不是这个意思,是类里面为某个实例进行Close,十分不合逻辑。to INternetroot :不用Free掉的,因为Active:=caFree;
    Form 会自动Free掉的,你不应多此一举