我想做一个函数,传入一个窗体作为参数,然后创建并显示此窗体。
如果用application.createform()则必须提供类名,请问怎样做!
我的代码是:
function ShowForm(varForm:TForm):boolean;
begin
.
.
.
if (varForm = nil) then
Application.CreateForm( “这里不知怎末写",varForm);
varForm.Show;
Result := true;
.
.
.
end;

解决方案 »

  1.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      F: TForm;
    begin
      Application.CreateForm(TForm, F);    <----输入TForm
      F.ShowModal;
      F.Caption := 'DEMO';
      F.Free;
    end;
      

  2.   

    我的意思是创建一个已存在的窗体的实例!所以我的函数传入的varForm是我已经做好的窗体。楼上只是创建了一个新窗体而已!
      

  3.   

    引用junqicsdn(aa)
      “我的意思是创建一个已存在的窗体的实例!”既然是“已存在的窗体的实例”那何谓创建呢。
    已经存在的说明是已经创建好的了。
      

  4.   

    可能是我的语法有问题!
    比如:
          我新建了一个窗体varForm,我想显示它,通常我这末写:
    if (varForm = nil) then
    Application.CreateForm(TvarForm,varForm);
    varForm.Show;那在我的函数中这末写就提示TvarForm未定义,(注意我是把窗体作为参数传入函数的,实际我要操作的窗体不一定叫varForm,也就是说varForm只是形参),明白了末?
    汗ing...
      

  5.   

    TFormClass = class of TForm;function ShowForm(varForm:TForm; formClass: TFormClass):boolean;
    begin
    .
    .
    .
    if (varForm = nil) then
      varForm := TFormClass.create(self);
    varForm.Show;
    Result := true;
    .
    .
    .
    end;
      

  6.   

    sorry, 更正:
      varForm := formClass.create(nil);
      

  7.   

    你有没有用过在调用dll中的窗体,在dll中的窗体都是应用程序动态创建的;
    一般时导出一个函数如showform