在做多窗体项目时总是要遇到创建很多窗体的问题,想写一个通用的过程,只调用一下就可以创建。
说明:不是MDI程序,每个创建的窗体不同,就是预先设计好的。
我这样写的
procedure TMain.MyCreateForm(frm: TForm);
begin
    if not assigned(frm) then
    begin
        Application.CreateForm(TForm,frm);
        try
            frm.ShowModal;
        finally
            frm.Free;
            frm:=nil;
        end;
    end else
        frm.ShowModal;
end;
//调用时: 
Form1:TForm1;
MyCreateForm(Form1);
可这样Form1实际上从TForm创建的,不是我已经设计好的form1.
不知道该怎样写?

解决方案 »

  1.   

    form1只是个指针,TForm1才是窗口类。
    你都可以删除var form1:TForm1;
    然后:
    With TForm1.Create(Application) do
    Try
      ShowModal;
    finally
      free;
    end;
      

  2.   

    procedure MyCreateForm(
      InstanceClass: TComponentClass;
      frm: TForm);
    begin
        if not assigned(frm) then
        begin
            Application.CreateForm(InstanceClass, frm);
            try
                frm.ShowModal;
            finally
                frm.Free;
                frm:=nil;
            end;
        end else frm.ShowModal;
    end;MyCreateForm(TForm1, Form1);
      

  3.   

    zswang(伴水清清)(专家门诊清洁工) 的方法比较常用,我也喜欢这样的用法,特别是有很多子窗体以及需要继承的时候,很好用.