Сокрытие свойств предка в наследнике

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сокрытие свойств предка в наследнике

Сообщение VirtUX »

Как скрыть published свойство в наследуемом классе?
Например:

Код: Выделить всё

TMother = class(TComponent)
...
published
  property AnyProp: TAnyType read FAnyProp write SetAnyProp;
end;

TNewClass = class(TMother)
// убрать из видимости в "Инспекторе объектов" AnyProp, или вообще сделать его недоступным
end;
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Ан, не получится...
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Может есть какие-то обходные пути? В С++ есть такая возможность. Теплется надежда, что и в FPC можно как-то устроить...
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Может в FPC, что и придумали, я компонентами не замарачиваюсь (не пишу давно уже со времён D7).
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Mr.Smart писал(а):не пишу давно уже со времён D7

Я никогда не заморачивался с написанием компанент. Только простенькие на основе чужих в Делфях. Но недавно попробывал - и вкупил, какая это класная и удобная фича. Вот практикуюсь, переписывая старые проекты.
В одном вот - понадобилось скрыть свойство. Конечно - это не вкрай принципиально, но так было бы безопасней и красивее.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

В Object Pascal область видимости при наследовании может только расширяться. Уменьшать ее нельзя.
Из-за этого VCL/LCL имеют две параллельные иерархии TCustomXXX и TXXX, где основная функциональность содержится в TCustomXXX, а TXXX только публикует нужные свойства.
Ответить