エラーが発生するコードは次のとおりです。
TAdvSmoothDockItems = class(TCollection)
private
FOwner: TAdvSmoothDock;
FOnChange: TNotifyEvent;
protected
function GetItem(Index: Integer): TAdvSmoothDockItem; virtual; //YLM_TMS_01
procedure SetItem(Index: Integer; const Value: TAdvSmoothDockItem); virtual; //YLM_TMS_01
function GetOwner: TPersistent; override;
public
constructor Create(AOwner: TAdvSmoothDock); overload; virtual; //YLM_TMS_01
function Add: TAdvSmoothDockItem; virtual; //YLM_TMS_01
function Insert(Index: Integer): TAdvSmoothDockItem; virtual; //YLM_TMS_01
property Items[Index: Integer]: TAdvSmoothDockItem read GetItem write SetItem; default;
procedure Delete(Index: Integer); virtual; //YLM_TMS_01
published
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
TKHAdvSmoothDockItems = class(TAdvSmoothDockItems)
private
FOwner: TKHAdvSmoothDock;
FOnChange: TNotifyEvent;
protected
function GetItem(Index: Integer): TKHAdvSmoothDockItem; override;
procedure SetItem(Index: Integer; const Value: TKHAdvSmoothDockItem); override;
function GetOwner: TPersistent; override;
public
constructor Create(AOwner: TKHAdvSmoothDock);
function Add: TKHAdvSmoothDockItem;
function Insert(Index: Integer): TKHAdvSmoothDockItem;
property Items[Index: Integer]: TKHAdvSmoothDockItem read GetItem write SetItem; default;
procedure Delete(Index: Integer); override;
published
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
このコードは私に次のエラーを与えます:
E2037 'GetItem' の宣言が前の宣言と異なります
なぜ ?基本クラスの GetItem を「仮想」として宣言した後、次のクラス (TKHAdvSmoothDockItems) でそれをオーバーライドしようとしました...? それを修正する方法は?