我在一个窗口中定义了自己的create方法:
public
  constructor Create(aUserNo: string; AOwner: TComponent);...constructor TfrmUserInfo.Create(aUserNo: string; AOwner: TComponent);
begin
  inherited Create(AOwner);
  FUserNo:=aUserNo;
end;编译器老提示:
[Warning] unUserInfo.pas(51): Method 'Create' hides virtual method of base type 'TCustomForm'加了,virtual或overload之后都不行,而且在继承的窗口中根本不调用这个方法。

解决方案 »

  1.   

    参数不对!
     constructor Create(AOwner: TComponent); override;
      

  2.   

    问一句,这样 create方法 有什么用呢?
      

  3.   

    要不你改个名字吧
    public
      constructor CreateForm(aUserNo: string; AOwner: TComponent);...constructor TfrmUserInfo.CreateForm(aUserNo: string; AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FUserNo:=aUserNo;
    end;
      

  4.   

    加override,不是overload或virtual
      

  5.   

    override——覆盖
    overload——重载virtual ——虚方法
    dynamic ——动态方法父类方法为虚方法或动态方法时,派生类的该方法应覆盖父方法,所以用override关键字
    overload是用来写重载函数的,不是一个概念
      

  6.   

    带多个参数的构造函数使用起来很方便,怎么会没有用?多谢各位的热心,我使用了下面的方法来达到这个目的,就是声明自己的构造函数。
    //TForm1是基类TForm1 = class(TForm)
    private
      FUserNo: string;
    public
      property UserNo: string read FUserNo write FUserNo;
      constructor MyCreate(AUserNo: string; AOwner: TComponent); virtual;
    end;implementation{$R *.dfm}{ TForm1 }constructor TForm1.MyCreate(AUserNo: string; AOwner: TComponent);
    begin
      Create(AOwner);
      FUserNo:=AUserNo;
    end;
    //TForm2是TForm1的派生类TForm2 = class(TForm1)...end;
    //在其他窗口中使用TForm2;procedure TForm3.Button1Click(Sender: TObject);
    var
      f: TForm2;
    begin
      f:=TForm2.MyCreate('00001234',Self);
      f.ShowModal;
    end;现在f中的UserNo就具有实际意义的值了,这样很直观,使用起来也方便。