父母级别的前瞻性或外部声明不满意

时间:2013-03-08 08:12:28

标签: delphi firemonkey tms firemonkey-fm2

我正在创建一个继承自TMSFMXGrid的自定义组件。我正在使用RAD XE3在Firemonkey中进行开发。 一切正常,除了样式没有正确应用(我认为这是因为我的自定义组件的父级也继承了父类的样式)。 基本层次结构是TMSCustomGrid-> TMSGrid - > MyCustomGrid

进行一些研究,我认为正确应用样式的最佳方法我需要实现如下:

type
   MyCustomGrid= class(TTMSFMXGrid)
   protected
   function GetClassStyleName: String; override;
end;
implementation
{ MyCustomGrid}
function TTestGrid.GetClassStyleName: String;
begin
    Result := ClassParent.ClassName + 'style';
    Delete(Result, 1, 1);
end;

这在设计时工作正常,但在运行时我收到以下错误:

[dcc32错误] FMX.TMSCustomGrid.pas(505):E2065不满意的前向或外部声明:'TTMSFMXCustomGrid.ApplyStyle'

查看TMSCustomGrid.pas源文件,我得到以下内容

TTMSFMXCustomGrid = class(TTMSFMXGridData)
....
public
   procedure ApplyStyle; override;
....

ApplyStyle没有实现。此外,在我的自定义组件的父类中,未声明此方法。

当我在FMX.TMSCustomGrid.pas源代码中注释掉ApplyStyle过程时,一切都可以从我的自定义组件中正常工作。但是,当我创建TMSGrid(它是我的组件的父组件)时,样式未正确应用。

我感到困惑。为什么函数GetClassStyleName会抛出有关ApplyStyle过程的错误? 是否有一种方法可以取消继承方法(如果这样做甚至有意义?)

0 个答案:

没有答案