Вниз
Скачать: CL | DM;

как убрать published-свойство?   Найти похожие ветки 

← →
klyonov   (2003-12-29 15:51) [0]

я наследую свой компонент от TValueListEditor
у него ( TValueListEditor) есть published-свойство Strings: TStrings
как мне сделать так, чтобы у моего компонента его не было в published-части
описание свойства в protected-части как property Strings; не помогает


← →
alex_*** ©   (2003-12-29 15:52) [1]

наследоваться от чего-нибудь типа TCustomValueEditor


← →
Внук ©   (2003-12-29 15:55) [2]

>>описание свойства в protected-части как property Strings; не помогает
И не поможет, это противоречит концепциям ООП. Вероятно, выбран неподходящий класс предка. Можно, правда, переопределить методы доступа к свойству, но это не есть хорошо.


← →
klyonov   (2003-12-29 15:55) [3]

о!
скорее всего это поможет
спасибо за ответ
но еще вопрос, в догонку к теме:
разве не должна понижаться область видимости у свойства при переносе его в наследованном классе (например, из public в protected)


← →
MV   (2003-12-29 15:56) [4]

Нельзя.


← →
Skier ©   (2003-12-29 15:57) [5]


> разве не должна понижаться область видимости у свойства
> при переносе его в наследованном классе (например, из public
> в protected)

Нет.
Есть два выхода
1) Самый правильный. Наследоваться от TCustomValueEditor
2) Регистрировать для св-ва nil-овый редактор


← →
Юрий Зотов ©   (2003-12-29 15:58) [6]

> klyonov (29.12.03 15:55) [3]

В объектной модели Delphi видимость понизить нельзя. Можно только повысить.


← →
MV   (2003-12-29 16:00) [7]

Может, использовать не наследование, а делегирование? Тогда, если это Вас устроит, можно для требуемых членов класса создать члены-"врапперы", которые будут находиться в требуемой области видимости, и переназначать обращение к свойствам и методам экземпляра делегируемого класса. А наследоваться от какого-нибудь общего предка. Если Вас это устроит, конечно.


← →
KSergey ©   (2003-12-29 16:12) [8]

> [6] Юрий Зотов © (29.12.03 15:58)
> В объектной модели Delphi видимость понизить нельзя. Можно
> только повысить.

Я, конечно, прошу прощения, но вроде это справедливо только для published-видимости...
Нейжели я не прав?...


← →
Юрий Зотов ©   (2003-12-29 16:38) [9]

> KSergey © (29.12.03 16:12) [8]

Почему для published? Для всех. Возьмите какое-нибудь public-свойство, в потомке перенесите его в protected и посмотрите, будет ли она доступно в экземпляре потомка.


← →
KSergey ©   (2003-12-29 16:57) [10]

> [9] Юрий Зотов © (29.12.03 16:38)

Что ж, приношу извинения. Проверил.
С моей стороны было действительно большим нахальством даже на секунду предположить, что Вы допустите такой ляп. ;)

PS
Но я был уверен, что читал много раз про то, что лишь Published св-ства нельзя уже спрятать, а остальное можно. Но в книжках сейчас, увы, не нашел подтверждения или какого-либо упоминания... Может я все же лишь с чем-то путаю и что-то такое имеет место быть?... (ну должна же быть надежда, что я еще не совсем балбес ;)


← →
Юрий Зотов ©   (2003-12-29 17:03) [11]

> KSergey © (29.12.03 16:57) [10]

Просто обычно про published и пишут. Такое ощущение, что авторы почему-то забывают, что свойства могут быть и public, и даже protected. А, скажем, у Конопки этот вопрос изложен четко - повысить можно, понизить нельзя, для всех.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.018 c
1-37788
Jiurafdfg
2003-12-31 12:26
2004.01.13
Активная дочерняя форма.


4-37990
Ranger
2003-11-10 18:33
2004.01.13
Создание диалога


1-37676
ГС ТОФ
2003-12-26 14:17
2004.01.13
Exel


3-37522
Sandman25
2003-12-16 17:33
2004.01.13
Insert и Autoincrement


1-37625
Darmen
2003-12-27 19:32
2004.01.13
System TRAY




   Наверх