procedure createform(s:string;frm:form);
begin
  s:='tform2';
  application.createfrom(s,frm);
end;
不能執行,内存地址出错,請幫手!

解决方案 »

  1.   

    楼主要先弄明白Application.CreateForm方法两个参数的类型及含义。
    第一个参数是要创建的组件类型,第二个参数则是对创建的对象的引用。
    而你的第一个参数是个字符型的,显示不能编译通过呀!!
      

  2.   

    CreateForm方法的参数(InstanceClass: TComponentClass; var Reference)
    而且你写的Form也是不对的,应该TForm
      

  3.   

    利用类引用。
    给你写了个小例子
    Form1unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,Unit2;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    type
      TFormClass =class of TForm;
    var
      Form1: TForm1;implementation
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      s: TFormClass;
    begin
      s:=TForm2;
      Application.CreateForm(s,Form2);//动态创建
      Form2.Show;
    end;end.Form2
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm2 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}end.
     
      

  4.   

    请问楼上,Form2在Options里属于auto-create forms还是available forms呢?