在Delphi中一个派生类如何调用前两重祖先的虚函数?
jzy 2000-03-26 12:05:00
具体情况是这样的:
TDrawGrid有一虚函数DrawCell
而TDrawGrid的派生类TStringGrid又重载DrawCell如下:
procedure TStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState);
begin
if DefaultDrawing then
Canvas.TextRect(ARect, ARect.Left+2, ARect.Top+2, Cells[ACol, ARow]);
inherited DrawCell(ACol, ARow, ARect, AState);
end;
也就是说TStringGrid的DrawCell调用了其祖先TDrawGrid的虚函数DrawCell,
现在我用TStringGrid派生一个类TStringGrid1,并且重载DrawCell
(其实我的目的是要把TStringGrid的DrawCell在TStringGrid1中声明成public):
type TStringGrid1 = class (TStringGrid)
public
procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState);override;
end;
procedure TStringGrid1.DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState);
begin
inherited DrawCell(ACol, ARow, ARect, AState);
end;
但是这样行不通,运行的时候提示堆栈溢出错误。
我也试过不重载DrawCell,另外声明一个public的成员,在该成员中调用DrawCell,则无论是直接调用,还是用inherited声明调用,结果都提示堆栈溢出错误。
请教各位大虾,我该如何声明,才能够正确调用DrawCell呢?