Неудовлетворенное прямое или внешнее объявление из родительского класса
Я создаю пользовательский компонент, который наследуется от TMSFMXGrid. Я занимаюсь разработкой в Firemonkey с использованием RAD XE3. Все работает нормально, за исключением того, что стиль применяется неправильно (я понял, что причина этого в том, что родительский компонент моего пользовательского компонента также наследует стиль от родительского класса). Основная иерархия - это 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 нет реализации. Кроме того, в родительском классе моего пользовательского компонента этот метод не объявлен.
Когда я комментирую процедуру ApplyStyle в исходном коде FMX.TMSCustomGrid.pas, все отлично работает с моими пользовательскими компонентами. Однако, когда я создаю TMSGrid (который является родительским компонентом моего компонента), стиль не применяется правильно.
Я запутался. Почему функция GetClassStyleName выдает ошибку о процедуре ApplyStyle? Есть ли способ отменить наследование метода (если это даже имеет смысл???)