Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как скрыть __published свойство


Автор: Vyacheslav 3.6.2002, 13:44
Речь идет о сокрытии опубликованных свойств компонента-предка в производном компоненте.
Скрыть "штатно"  опубликованное свойство нельзя. Поэтому разработчики как правило в иерархию вставляют промежуточный класс TCustomXXX, который отличается от конечного класса TXXX только тем, что в нем не опубликованы добавленные разработчикрм свойства. Если такой Custom компонент есть, то лучше свои компоненты  порождать от него, публикуя выборочно только те свойства, которые нужны.
Если такого компонента нет, или по какой-то причине хочется использовать конечный компонент, то можно немного cхитрить, объявив в своем компоненте свойство с таким же именем и типом. При этом у свойства, как минимум, не должен быть задан атрибут write. В нижеследующем примере у TMyComponent скрывается свойство Tag

Исходный код:

class PACKAGE TMyComponent : public TComponent
{
private:
protected:
public:
published:
__property int Tag  = {};
};




Правда программно придется к Tag обращаться, используя полную квалификацию типа
TMyComponent* c = new TMyComponent(this);
c->TComponent::Tag = 1;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)