我的一个子窗体用ShowModel打开了一个窗口,我在新的窗口里就不能更改这个子窗体的数据,比如一个panel的caption。会报如下错误:
Project BomConfig.exe raised exception class EAccessViolation with message 'Access violation at address 00511CAF in module 'BomConfig.exe'. Read of address 000003AC'. Process stopped. Use Step or Run to continue.我的这个showmodel的窗体不是动态创建的,高手看看是什么原因?

解决方案 »

  1.   

    一般来讲,多文档窗体的子窗口显示,经常用show,而很少用showmodal;我记得有次用showmodal调用,竟然是出错,当时我没有太在意
      

  2.   

    我也觉得应该用show而不是用showmodal,不知道这位朋友为什么要用这个?
      

  3.   

    可能大家没有看明白, 我的子窗体(假设名字叫frmChild)是动态创建的,然后子窗体(frmChild)有一个按钮,按这个按钮再showmodel一个新的窗口(假设名字叫frmNew),这个新的窗口(frmNew)不是动态创建的,我要在这个新的窗口(frmNew)里更新子窗体(frmChild)的数据,例如在frmNew里执行frmChild.Panel1.Caption:='OK'就会报错!这下各位看明白了吗?
      

  4.   

    你把第一个窗体的SHOWMODAL改成show就可以。但是我也有些困惑,你看下Project/option,如果不是AUTOCREATE,是可以永form2:=tform2.create(application);
     form2.showmodal;(这是DELPHI5开发人员指南上的例子),但我也遇到说不那让VALID forms show modal一类的提示。
      

  5.   

    不管是用show还是showmodel都会报错啊!其实代码也很简单的,就几句话。搞不懂为什么?
    子窗体(frmChild)的一个button中的代码: frmNew.ShowModal;
    然后在frmNew中一个button中的代码:frmChild.pn.Caption := 'OK';这就抱错。
    frmChild是动态创建的,frmChild:= TfrmChild.Create(Application); frmNew不是。
      

  6.   

    个人认为,我觉得你把Frmnew的Parent设置成动态创建的窗体试一下!
      

  7.   

    把Frmnew的Parent设置成动态创建的窗体也不行啊,还是报同样的错!