我在Form1中用一个按钮show一个Form2,在Form2中有一个DriveComboBox1控件,当对DriveComboBox1做过操作后!在form1中关闭Form2,就会出现问题(例如:死机)!请问如何解决?

解决方案 »

  1.   

    最怪的是:
    implementation
     uses unit2;
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var form2:tform2;
    begin
       form2:=tform2.Create(application);
       form2.Show;
       form2.ComboBox1.Items.add('asldfj');
       form2.ComboBox1.Items.Add('really????');
    //在这边添加form2.ComboBox1.Items.Add('really????');不会出错
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    form2.ComboBox1.Items.Add('really????');//这一句绝对产生一个Exception
    //在这边添加就会出错。。
    //怪了怪了
    end;
    神!!!!
      

  2.   

    是不是跟你form2是动态创建的有关?
      

  3.   

    你的操作很奇怪,在form2中关闭自己不就可以了吗
      

  4.   

    hansion3406
    老兄你先别说怪
    看看你的代码
    你在button1的click事件中定义的局部变量form2
    你到button2的click事件中调用不出错等什么呢!!!!
      

  5.   

    对呀,Form2只是一个局部变量。
      

  6.   

    我 按你的操作 来了 一下 
    到是  没有出现你说的那样的错
    到是 在第二个事件中 我加不进新的元素(我给你form2.ComboBox1.Items.Add('????');//这一句改了)
    到是没 有你说的那样的错
      

  7.   

    上面的人都是在说一些让我faint的事。。
    我知道我的问题所在了。。
    是这一句。。
    var form2:tform2;
    这一句在内存中形成了两个对象(加上CREATE的那一个!)
    结果DELPHI是告诉我地址是只读的。。
    所以。。和上面的人所说的一点关系都没有。。
    至于我为什么要这么做;是因为我想试一下怎么关闭一个现有的窗口,
    就这么简单。。和实现的内容无关。。我只想知道细节而已
    谢谢各们的喷场!!!THANKS
    还有楼主。。把那句除掉就可以实现你的操做了。。implemetation
     uses unit2;procedure tform1.showclick(sender:tobject);
    //var form2:tform2;  //千万不要加这句。我想楼主就是加了这一句吧。。
    //如果在VC里面就没有这种情况。。它不允许创建两个同名的实例。
    begin
    form2:=tform2.create(application);
    //动态创建
    form2.show;
    end;procedure tform1.closeclick(sender:tobject);
    begin
    postmessage(form2.handle,wm_destroy,0,0);
    //播一条消息给form2,可以是wm_close
    end;
      

  8.   

    吐血吐血人生没有意义!!我失恋了faint
      

  9.   

    哈哈哈哈!我终于解决了!
    原来DriveComboBox1做过操作后程序原来的隐藏目录变量会改变!
    谢谢大家!散分!散分!