我有一个类对象  
type  
   TCustomFrame  =  class(TFrame)  
   public  
       procedure  CreateSelf(AOwner:  TComponent);  
   end;  
 
另外有一个函数,是LoadFrame,我想把TCustomFrame以参数的形势传递给LoadFrame函数,在函数里创建对象的实例是否可以。  
 
procedure  LoadFrame(AFrameClass:  T??????);  
var  
   FCustomFrame:  TFrame;  
beign  
   FCustomFrame  :=  AFrameClass.Create(Application);    
end;  
我就是不知道到底把那个参数定义为什么可以实现这样的方法。

解决方案 »

  1.   

    说实在的不是太明白你想做什么,猜一下你是不是想这样?
    ACustomFrame:=TCustomFrame.Create(self);
    LoadFrame(ACustomFrame);procedure LoadFrame(AFrameClass:TCustomFrame);
    var FCustomFrame:TCustomFrame;
    begin
      FCustomFrame:=ACustomFrame;
    end;
      

  2.   

    type  
       TCustomFrame  =  class(TObject)
       public
         class function CreateSelf(AOwner:  TComponent): TCustomFrame;
       end;
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  type
       TCustomFrame  =  class(TFrame)
       public
         class function CreateSelf(AOwner:  TComponent): TCustomFrame;
       end;var
      Form1: TForm1;implementation{$R *.dfm}{ TCustomFrame }class function TCustomFrame.CreateSelf(AOwner: TComponent): TCustomFrame;
    begin
      Result := TCustomFrame.Create;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      T: TCustomFrame;
    begin
      T := TCustomFrame.CreateSelf(nil);
      try
        // 
      finally
        T.Free;
      end;
    end;end.
      

  4.   

    可能我没有说清楚,大家有点理解错误。
    我的意思是调用LoadFrame时以TCustomFrame作为参数传递进取的。
    LoadFrame(TCustomFrame);来调用,而LoadFrame是来创建TCustomFrame的实例的。
      

  5.   

    你的意思是这样吗
    LoadFrame(参数) ,参数是某-类,如TCustomFrame
      

  6.   

    type TCustomFrameClass = class of TCustomFrame;procedure  LoadFrame(AFrameClass:  TCustomFrameClass);  
    var  
       FCustomFrame:  TFrame;  
    beign  
       FCustomFrame  :=  AFrameClass.Create(Application);    
    end;