如何动态创建窗体

解决方案 »

  1.   

    例如创建form1
    application.createform(Tform1,form1);
    from1.showmodal;//
    ..........
    form1.free;
      

  2.   

    但是如果在form1里创建其他的,不是该窗体本身,比如application.createform(Tform2,form2);
    怎么就出错啊,怎么定义TForm2呢?
      

  3.   

    但是如果在form1里创建其他的,不是该窗体本身,比如application.createform(Tform2,form2);
    怎么就出错啊,怎么定义TForm2呢?描述清楚哪里出错
    出什么错什么怎么定义TForm2??
      

  4.   

    uses Unit2;
    procedure TForm1.Button1Click(Sender: TObject);
    begin  //方法1
      application.createform(Tform2,form2);
      form2.Show;
      //方法2
      form2 := TForm2.Create(self);
      try
        form2.ShowModal;
      finally
        form2.Free;
      end;end;方法2比较常用,因为系统运行期间,内存消耗相对较小,并且创建对象和释放对象匹配出现,不容易造成内存泄漏。
    这个问题未免太简单,不过有那么多勋章的,应该可以猜测问题所在。
      

  5.   

    with TForm2.Create(Application) do
    begin
      ShowModal;
      Free;
    end;以上这种创建方式创建的窗体在显示时,只能操作 Form2 窗体中的内容(即创建的是模式窗口)。with TForm2.Create(Application) do
    begin
      Show;
    end;以上这种创建方式创建的窗体则可以操作其它窗体中的内容(即非模式窗口)。此时,为避免重复创建窗体,则需要在创建前先判断本类型的窗体是否已经被创建了。
      

  6.   

    uses uint2;form2:=Tform2.create(self);
      

  7.   

    delphi里有相关的例子,在New Items/projects/MDI Application就是可以动态创建窗体的例子!
      

  8.   

    form2 := TForm2.Create(self);
      try
        form2.ShowModal;
      finally
        form2.Free;
      end;
      

  9.   

    但是如果在form1里创建其他的,不是该窗体本身,比如application.createform(Tform2,form2);
    怎么就出错啊,怎么定义TForm2呢?不用定义