//--窗体2
type
   TForm2=class(TForm)
   ...
end;
//--窗体1
type
   TForm1=class(TForm)
   public
     showform(MyFormClass:Class(TForm));
end; procedure TForm1.showform(MyFormClass:Class(TForm));
var
   F:TForm;
begin
   F:=MyFormClass.Create(nil);
   F.show;
end;procedure TForm1.button1onclick(Sender:TObject);
begin
   showform(TForm2);
end;问题是要实现上述功能(主要是过程showform传入参数的问题),由于编译出错,请高手指点迷津

解决方案 »

  1.   

    你有没有uses Form2到Form1中
      

  2.   


    将您的ShowForm方法实现改成如下,OK了!procedure TForm1.ShowForm(TFrmClass: TClass);
    var
      FrmResult:TForm;
    begin
      FrmResult := TForm(TFrmClass.Create).Create(Application);  if (FrmResult <> nil ) then FrmResult.Show;
    end;
      

  3.   

    下班了,没空试验。定义的时候定义一个指针,然后传指针试试吧。
    或者用Application.CreateForm,来试试。
      

  4.   

    实现如下:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type  TMyForm = Class of TForm;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;type
       TForm2=class(TForm)
       public
         procedure CShowForm(MyFormClass: TMyForm);
      end;var
      Form1: TForm1;
      Form2: TForm2;
    implementation{$R *.dfm}procedure TForm2.Cshowform(MyFormClass:TMyForm);
    var
       F:TForm;
    begin
       F:=MyFormClass.Create(nil);
       F.show;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
       Form2.Cshowform(TForm1);
    end;end.