Неудовлетворенное прямое или внешнее объявление из родительского класса

Я создаю пользовательский компонент, который наследуется от 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? Есть ли способ отменить наследование метода (если это даже имеет смысл???)

0 ответов

Другие вопросы по тегам