Form2是在程序运行过程中创建的(Application.CreateForm(TForm2,Form2);
可是用Form2.Destroy只能析构一次
当我在用(Application.CreateForm(TForm2,Form2;)创建Form2的时候就析构出错了
真是晕阿
大家帮帮我了谢了先

解决方案 »

  1.   

    你要在projet中把form2由自动创建改为手工创建。
      

  2.   

    是这样的阿是不是Application.CreateForm(TForm2,Form2);这样不对阿?
      

  3.   

    Project--Options--将Form2改为手工创建,不用时在FREE
    用时再析构
      

  4.   

    Application.CreateForm(TForm2,Form2)//这样子当然不对了你可以这样,如果你真想完全动态创建窗体:
    在你的工程文件中把
    Application.CreateForm(TForm1, Form1);
    去掉,
    第二,在需要动态创建窗口的地方加入以下代码
    var
      Form1:TForm1;
    begin
      if Form1=nil then
       begin
          try
            Form1:=TForm1.create(nil);
            Form1.showmodal; 
          finally
            Form1.free;
          end; 
       end;end;而你现在的程序我想设计时已经有窗体了,只是程序动行时动态加载,所以应该这样:
    if not Assigned(Form2) then
      Form2:=TForm2.Create(Application);
      Form2.Show
      

  5.   

    要使用
      if not Assigned(Form2) then
    必须在form2的formclose或formdestroy事件里把form2这个变量置为nil
    form2:=nil;