我 需要这应一个过程
  假如过程名是Fit
  begin
   form2:=Tform2.create(application);
    form2.show
   end
 我需要随即创建
     就是说 fit(3)
那么上面就是
 begin
   form3:=Tform3.create(application);
    form3.show
   end
这个过程怎么定义 谢谢

解决方案 »

  1.   

    那你可以定义多过程,然后判断:
    public
      YourChoice=false:boolean;
    end;
    .......
    procedure ????.?????(???);
    begin
    if 符合条件 then YourChoice:=true else YourChoice:=false;
    end;
    .......
    .......
    if (YourChoice) then 
        do procedure1 
      else 
        do procedure2
    repeat
      procedure1 或 procedure2
    until ...........
    ....
    end.
    这样做,代码会写的比较多!但这也是我所知道的!
      

  2.   

    这样行吗?
    定义一过程:
    procedure Fit(Form2: TForm);procedure TForm1.Fit(Form2: TForm);
    begin
      Form2:= TForm.Create(Application);
      Form2.Show;
    end;procedure TForm1.SB2Click(Sender: TObject);
    var Form3: TForm;
    begin
      Fit(Form3);
    end;
      

  3.   

    方法到是有一个,但做不到绝对的动态,原因很简单,你可以通过GetClass来依照一个类的名字来获取一个类的引用对象!但这个名字对应的类必须是系统注册的,而这个注册的过程需要你自己手动去完成,但手动注册不可能注册任意多个名字为TFormN的类,所以从这个意义上说,如果是有限个可以做到....如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2=class(TForm)
      end;
      ....
      TFormN=class(TForm)
      end;  TForm2Class=class of TForm2;
      ....
      TFormNClass=class of TFormN;  TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  procedure Fit(AFrmIndex:Integer)var
      Form1: TForm1;implementationprocedure Fit(AFrmIndex:Integer);
    var
      vForm:TForm;
    begin
      case AFrmIndex of
        2: vForm:=TForm2Class(GetClass('TForm'+IntToStr(AFrmIndex))).Create ;
        ....
        N: vForm:=TFormNClass(GetClass('TForm'+IntToStr(AFrmIndex))).Create ;
      end;
    end;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      Fit(StrToInt(Trim(Edit1.Text)));
    end;Initialization
      RegisterClasses([TForm2,....,TFormN]);end.
      

  4.   

    不行的,Delphi里面没有控件数组的用法
    但可以动态创建新的控件实例,我想你要的就是这个效果
    function fit(id:integer);
    begin
     case id of:
       2:
        begin
           form2:=Tform2.create(application);
           form2.show
        end
       3:
        begin
           form3:=Tform3.create(application);
           form3.show
        end;
     end;end;
      

  5.   

    是啊 楼主  但是我不希望写那么多 就是说
      我的把每个form2:=Tform2.create(application);
           全写那如果有N个呢?
       我还的全写
    所以我希望 动态创建它
      比如我写个 fit(3)他就是form3:=Tform3.create(application);
           form3.show
      

  6.   

    可以参考一下走马灯的算法,也要用到delphi里面没有象VB里面控件数组的解决方法! fsxlh的方法很有用!