有from1,其上有edit1等;还有from2,其上有dbgrid1,其datasource=from1.adoquery1
现procedure TForm1.Edit1DblClick(Sender: TObject);
  begin
  form2.Show;
  end;
执行后第一次edit1双击后程序一切正常,但是只要再双击edit1,就会出现以下错误:Access violation at address 0046F7EE in module'report.exe'. Read of address 000002F4
我实在是不知道是什么原因导致地这个错误了,请大虾们帮帮忙吧,指点一下。

解决方案 »

  1.   

    FORM2的ONSHOW代码是怎么样的?有没有问题
      

  2.   

    form2是不是在关闭的时候释放了。
      

  3.   

    是这段代码导致的吗?
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       Action := caFree ;
       form1 := nil ;
    end;
      

  4.   

    faint,内存控件都被你释放了,你又不重新创建,肯定会出错。
      

  5.   

    FORM2在关闭时被你释放掉了呀,怎么能不出错;
    办法要么是关闭时不释放,要么是重新创建要显示
      

  6.   

    Form2=TForm2.Creat(Self);
    Form2.Show;
      

  7.   

    是因为你把form1给释放了,因为form1都被你释放了,那放在上边的edit1当然也就没有了
    所以你再次点击时会出错,如果form2是动态创建的可以释放,但form1是主窗体是不能释放的
    除非你要退出这个程序。