Я пытаюсь очистить предупреждения компилятора в приложении, которое я унаследовал. Один из наших классов наследует от TControl. Предупреждение, которое я получаю, это «Переобучение измененных скрывает элемент в базовом классе»Redeclaration скрывает элемент в базовом классе
«Изменено» - это защищенная процедура в TControl. Класс Я смотрю уже переопределен его с логическим свойством
property Changed : Boolean read FChanged write FChanged stored true;
Есть несколько вариантов, я исключил уже:
Rename из «Изменено» к чему-то еще. Это не практический вариант, так как это свойство используется везде в приложении.
Скрыть предупреждение, используя директивы компилятора. Я могу это сделать, но я бы предпочел выяснить, что означает предупреждение и как его исправить.
Так что мой вопрос:
1) Является ли это предупреждение действительно проблема? Каковы последствия «скрытия базового элемента»?
2) Как удалить предупреждение компилятора без переименования объекта или скрыть предупреждение?
Я использую Delphi 2010
[Edit: Там было несколько suggesions использования инструмента рефакторинга переименовать свойство обижая. Я решил это, так как инструмент рефакторинга вообще не работает на этой кодовой базе]
Предупреждение действительно. Это означает, что вы не сможете вызвать 'TControl.Changed' из своего нового элемента управления. Ваш элемент управления должен вызвать это, чтобы уведомить себя и своего родителя о том, что его свойства были изменены. Они наблюдают за сообщением 'cm_Changed', которое отправляет этот метод. Подумайте о том, чтобы вместо этого использовать свою собственность 'Dirty'. (Кроме того, это похоже на странное свойство, которое нужно хранить в DFM, при загрузке нового экземпляра формы, действительно ли правильно сказать, что элемент управления изменился?) –
Хорошая точка! Не знаю, почему он хранится. – awmross