我是这样写的
procedure createform (out aForm:TForm; FormClass:TClass);
begin
aForm:=TForm(FormClass.create);
end;
调用如下:
createform(form1, TForm1);
但是调试的时候总是通不过
请问正确的应该怎么写?

解决方案 »

  1.   

    procedure createform (out aForm:TForm; FormClass:TClass);
    begin
    aForm:=TForm.create(Aform);
    end;
      

  2.   

    procedure createform (out aForm:TForm; FormClass:TClass);
    begin
      aForm:=FormClass.Create(Self);
      aForm.Parent := Self;
      aForm.Show;
    end;
      

  3.   

    try
      Application.createform(Tform1,form1);
      Form1.showmodal;
    except
      Form1.free;
      Form1:=nil;
    end;
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  4.   

    to 各位高手:
    我的目的是用第二个参数所指明的“类”来创建一个form(就是第一个参数)to:slyse(slyse) 
    我就是你这样写的!
    但是调用的时候不能通过,错误是“实参与形参类型不一致!”
    如下:createform(form1, TForm1);
    其中TForm1是不同于TForm的派生类。请各位高手继续指教!
    谢谢!
      

  5.   

    这个思路好象不可能实现
    你想利用这个函数创建TForm1的窗体,
    看你的函数定义procedure createform (out aForm:TForm; FormClass:TClass);
    这里你的形参FormClass是Tclass类的,你给的实参是Tform1的;而out是Tform的,你又传了一个Tform1的实参,然编译不通过了。
    ----------------------------------------------
                       riff ur life
      

  6.   

    to: tweety(@@) 
    那你认为应该怎样定义呢?
      

  7.   

    我认为这个思路有问题,是无法实现的。在我看来,这不仅是不可能的任务,而且是无意义的任务。不知道有哪位高人可以实现。----------------------------------------------
                       riff ur life
      

  8.   

    好象不要你这样劳什子吧?
    Application.CreateForm(TForm1, Form1);
    这我是Delphi的函数,不可以吗?
      

  9.   

    uses Unit2;{$R *.dfm}procedure  CreateForm(MDIChildFormClass:TFormClass; Var Reference);
    var
      AForm: TForm;
    begin
      try
        Application.CreateForm(MDIChildFormClass,Reference);
        AForm := TForm(Reference);
        AForm.ShowModal;
      Except
      //...
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      ChildForm: TForm;
    begin
       CreateForm(TForm2, ChildForm);
    end;
      

  10.   

    type
      TFormClass = class of TForm;procedure CreateForm(AClass: TFormClass; out AForm: TForm);
    begin
      AForm := AClass.Create(Application);
    end;procedure CreateForm(AClass: TClass; out AForm: TForm);
    begin
      AForm := TFormClass(AClass).Create(Application);
    end;procedure CreateForm(AClass: TClass; out AForm: TComponent);
    begin 
      //TComponentClass 已经在Classes.pas定义
      AForm := TComponentClass(AClass).Create(Application);
    end;