Form2都关闭了,你还引用它,肯定会出错啦!
这不是BUG。
换个地方试试吧,例如OnCloseQuery等等。

解决方案 »

  1.   

    不能在FormClose事件里写这些代码。因为当执行到此时间的时候,此Form内的子控件都已经被释放了,你在FormCloseQuery里写吧。
      

  2.   

    但是写在FormCloseQuery这里也是出错啊
      

  3.   

    to: mercedes() and  mshawk(憨憨)我这里有一个试验,我把那句代码写到Form2.FormClose中,程序完全可以通过,但是加入到我的程序中就是无法通过。。而且就是说Form1.TreeView1.Items.Assign(Form2.TreeView1.Items);这句出错,如果你们不行可以留下邮箱,我把试验发给你们
      

  4.   

    每当更改Form2的TreeView时,同步更改Form1的TreeView
    example:
      Form2.TreeView1.Add(...);
    然后
      Form1.TreeView1.add(...);
      

  5.   

    TO:zzllabc(龙)
    试验过了,可以在新建工程中通过,但是就是无法在Fun.exe中通过,系统的错误就是那些英文,然后断点停在Form1.TreeView1.add(...);
      

  6.   

    TreeView的节点创建有三种可能。1设计时创建;2运行时从节点属性文件中载入(这个文件可用文本文件打开浏览);3运行时从数据库中载入。你可以用的二种方法,处理:
    在每次Form2.Close中保存节点属性文件,并重新装在Form1内的TreeView1;
      

  7.   

    你是否是说关闭Form2的时候保存一个树型控件的文件让Form1上的树型控件去读,呵呵,试验过了,仍然是那行英语,我真的要崩溃了
      

  8.   

    为什么遇到一点问题就叫是DELPHI的BUG呢?难道DELPHI的BUG很多吗?
    难道CSDN上一定要这样才能吸引别人的注意力吗?
    编译运行,如果关闭Form2就报错,内容是:
    Project Fun.exe raised exception class EAccessViolation with message 'Access Violatio at Address 004C9AB7 in module 'fun.exe'. Read of address 000003A0'.process Stopped use step or run to continue.
    >>>> 但是我新建工程,按照这些步骤同样是实现两个窗口中的两个树型控件
               ^^^^^^^^ 
    >>>> 节点同步的问题时就可以,而且方法全部一样....
                                      ^^^^^^^^^^
    >>>> 以上错误发生时,断点停留在Form1.TreeView1.Items.Assign(Form2.TreeView1.Items);这里看到了没有,如果新建工程就没有错误。所以不是这里代码的问题。你自己要么把代码贴出来,要么自己检查一下你的FORM1这个变量定义了没有,一般如果用
    With TForm1.Create(nil) do
    begin
      ShowModal;
      Free;
    end;
    这种方法创建的窗体根本就没有定义FORM1这个变量,用这个访问自然会出错。如果不是这个错误,你把断点设置到ASSIGN方法上,执行到这里的时候,首先检查各个变量是否都是已定义的(不是NIL),其次用F7跟踪到VCL里面去,一直到非法访问出现为止,看看是什么操作引起非法访问。没有一点研究的精神,动不动一点小小的问题就到这里来发帖子问是不是BUG,CSDN上这种总是不思进取、想不劳而获的人越来越多了。
      

  9.   

    为什么遇到一点问题就叫是DELPHI的BUG呢?难道DELPHI的BUG很多吗?
    难道CSDN上一定要这样才能吸引别人的注意力吗?
    编译运行,如果关闭Form2就报错,内容是:
    Project Fun.exe raised exception class EAccessViolation with message 'Access Violatio at Address 004C9AB7 in module 'fun.exe'. Read of address 000003A0'.process Stopped use step or run to continue.
    >>>> 但是我新建工程,按照这些步骤同样是实现两个窗口中的两个树型控件
               ^^^^^^^^ 
    >>>> 节点同步的问题时就可以,而且方法全部一样....
                                      ^^^^^^^^^^
    >>>> 以上错误发生时,断点停留在Form1.TreeView1.Items.Assign(Form2.TreeView1.Items);这里看到了没有,如果新建工程就没有错误。所以不是这里代码的问题。你自己要么把代码贴出来,要么自己检查一下你的FORM1这个变量定义了没有,一般如果用
    With TForm1.Create(nil) do
    begin
      ShowModal;
      Free;
    end;
    这种方法创建的窗体根本就没有定义FORM1这个变量,用这个访问自然会出错。如果不是这个错误,你把断点设置到ASSIGN方法上,执行到这里的时候,首先检查各个变量是否都是已定义的(不是NIL),其次用F7跟踪到VCL里面去,一直到非法访问出现为止,看看是什么操作引起非法访问。没有一点研究的精神,动不动一点小小的问题就到这里来发帖子问是不是BUG,CSDN上这种总是不思进取、想不劳而获的人越来越多了。
      

  10.   

    TO:passos(古月春秋)批评的很好,但是我要说,我从来不用什么题目来吸引谁的注意力,我的问题一向没有人关注,早就习惯了,曾经我有一个程序告诉我Form1.Width和Form1.Height没有定义?而且就是在Form1中访问这两个属性值,我没有放上来问,因为我重新新建工程又是正常的,所以整个程序我全部重写,现在这个问题,我已经碰到很久了,一直没有解决,所以才问的,而且为什么只是在我的程序中无法通过,但是新建工程却可以通过,你说我不怀疑这个Bug是什么,你如果要源代码,我已经贴出来了,全部的代码只有一行就是我贴的那一行,出错也是在那一行,断点设置那一行执行没有问题,但是一越过这一行就有问题!你说我不怀疑是Bug,你让我怀疑什么?
      

  11.   

    在Form的OnClose不会释放的阿
    发来瞧瞧
    [email protected]
      

  12.   

    我建议在Form1.TreeView1.Items.Assign(Form2.TreeView1.Items);
    前面加一个空循环。
    如:
    for i:=1 to 10 do
    begin
    end;可能是内存分配出现问题了。我以前碰到类似的问题。
      

  13.   

    问:奇怪问题,为什么我的窗口不能使用Form1.ShowModal;而只能Form1.Show
      

  14.   

    Linun2001
    我运行你的程序完全没有问题啊
      

  15.   

    对啊, xzgyb(老达摩) 兄,你一定没有看我的信的内容吧,我发的是楼上的二位说不能在onclose中写代码的例子,其实是可以,怎么可能不可以!我的那个程序昨天搞定了,但是原因没有找到
      

  16.   

    呵呵,Linux2001兄
    那哪个是不可以的
      

  17.   

    xzgyb(老达摩)兄,不可以的是我的一个程序,那个东西牵涉的东西比较多,原谅我不能发给你,:-P,但是问题我已经搞定了,谢谢大家,但是就是还不知道原因
      

  18.   

    我同意你的观点,Delphi确实存在一些内存分配等方面的让人难以捉摸的问题,我也曾经遇到一些类似的问题!