我要调用个窗体,而且要向这个窗体传递一个参数,我重载了窗体的showmodal函数;
function showmodal(dbName:TDBgrid):integer;overload;
Function TCom_Query.showmodal(dbName:TDBgrid):integer;
begin
  ......
  .....
  Result:=Inherited showmodal;
end;
语法可以通过,但是编译不行,说'什么showmodal  virsion'没有的什么的?大家给我看以下解决一下;

解决方案 »

  1.   

    ShowModal不是事件,而是一个方法。
    编译信息是不是下面的:
    [Warning] Unit1.pas(15): Method 'ShowModal' hides virtual method of base type 'TCustomForm'
    指的是,ShowModal方法是一个虚方法,在父类TCustomForm中已定义。你这样做是不行的。
    编译可以通过,但不会达到你的目的。如果想实现你的想法,可以重构构造方法TForm1 = class(TForm)
    ...
      FDBname: TDBGrid;
        constructor CreateNew(AOwner: TComponent; dbName: TDBGrid);
        function ShowModal; override;
    ...
    constructor TForm1.Create(AOwner: TComponent: dbName: TDBGrid);
    begin
      FDBName := DBName;
      inherited;
    end;TForm1.ShowModal:Integer;
    begin
      //你来处理 dbName怎样怎样 
      //DBName....
      inherited;
    end;
      

  2.   

    不用这么多麻繁吧?因为ShowModal是个虚函数所以TForm1中重新定义就行了,将你的overload改成override 就行了
      

  3.   

    是吗,他想在窗口打开的时候,传入一个DBGrid,然后对这个DBGrid进行处理呀,你重定义了ShowModal,但你如何处理DBGrid?...该不会是定义一个全局变量吧。 
    哈哈,说句笑话,别在意。
      

  4.   

    To:haoco(程序员) 
       我用了Override,不行,所以我才Overload的.
    To:GoldProgramer()
       我去按你说的试一试.再顺便问一下,Showmodal是个虚拟函数,为什么不能Override.
      

  5.   

    杂没有人跟帖了呢?呢就结束吧.
    问题已经解决了,谢谢 GoldProgramer() 老兄,以后再向你请教问题,请多多指点一二.