什么意思,
form1:=tform1.create(application)

解决方案 »

  1.   

    我主要是想问一下tform1是属于什么类的
      

  2.   

    呵呵,类型类,也就是TMyFormClass = class of TForm就可以了,就可以传入TMyFormClass了!
    当然也可以用字符串,如:‘TForm1’,然后用GetClass把字符串转变为类!
      

  3.   

    form1 := Tform1.Create(application);
    with form1 do
    try
     showModal;
    finally
     free;
    end;
      

  4.   

    我给你写动态一个创建窗体的步骤:
     1.建一个窗体,并在这个窗体上添加一个按钮button1。
     2.在button1.onclick事件中加入如下代码:
       procedure TForm1.Button1Click(Sender: TObject);
       var
         F:TForm;//TForm为窗体所属的类
       begin
         F:=TForm.Create(self);
         F.Caption:='这是动态创建的窗体';
         F.Show;
       end;
    运行程序,单击button1就可以现示你所创建的窗体了。
      

  5.   

    谢谢各位,不过动态建立窗体我是会的,只不是不知怎样把它作为参数来动态建立
    VSaber(☆浪人☆):你说的是对的,我也想到,但不知怎样做, 用GetClass怎样转换呢?能否给个例子
      

  6.   

    var
      F : TForm;
    begin
      F := TForm1.Create(nil);
      try
        F.ShowModal;
      finally
        F.Free;
      end;
    end;
    好好看看多态是怎样讲的就行了
      

  7.   

    to hansonboy,你的意思是不是在自定义涵数里不仅要建立TForm类的窗口,还要建立
    TForm子类的窗口,可以象VSaber说的那么写:TMyClass = Class of TForm;procedure TFMain.CreateForm(FClass: TMyClass);
    begin
      with FClass.Create(self) do
        try
          ShowModal;
        finally
          Free;
        end;
    end;procedure TFMain.Button1Click(Sender: TObject);
    begin
       CreateForm(TForm2);
    end;
    但是用GetClass我不知如何实现???
      

  8.   

    谢谢tp168(tp168).我就是要这样,先试一下先
      

  9.   

    唉呀,tp168(tp168),还差一点,应该是用TMyClass作为参数才对
      

  10.   

    是不是这样子的:
    首先建立一个你要的窗体 TYourForm,然后在另一个窗体或主程序中的某个事件中:
    Procedure yourProc(sender:Tobject);
    var fForm:TYourForm;
    begin
        fForm:=TYourForm.Create(self);
        fForm.showmodal;
        ......
        fForm.free;
    end;