Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

[ООП] Хочу странного   Найти похожие ветки 

 
GrayFace ©   (2010-03-12 15:10) [80]

oxffff ©   (11.03.10 8:40) [79]
Это всего лишь реализация VCL. К формальной теории отношения не имеет.


При чем тут реализация VCL? Это свойство языка, которое было бы полезным.
Речь была о
Классические пуристы возражают против наследников, например, от TList. Их аргументы таковы, что наследнику в большинстве случаев не нужны методы предка Exchange, Move, и т.д.

Нету в Delphi возможность понизить область видимости - ну такой язык.


С этим данное "частичное" понижение видимости отлично бы справилось.


 
oxffff ©   (2010-03-12 17:18) [81]


> GrayFace ©   (12.03.10 15:10) [80]
> oxffff ©   (11.03.10 8:40) [79]
> Это всего лишь реализация VCL. К формальной теории отношения
> не имеет.
>
> При чем тут реализация VCL? Это свойство языка, которое
> было бы полезным.


Мой ответ связан с твоим тротестом против опубликования свойств в Custom. Причем здесь свойство языка и опубликование свойств?


> Речь была о
> Классические пуристы возражают против наследников, например,
>  от TList. Их аргументы таковы, что наследнику в большинстве
> случаев не нужны методы предка Exchange, Move, и т.д.
>
> Нету в Delphi возможность понизить область видимости - ну
> такой язык.
>
> С этим данное "частичное" понижение видимости отлично бы
> справилось.


А почему бы с этим не справится в рамках стандартной модели?
Объект делегатор с агрегатом внутри чем не устраивает?


 
GrayFace ©   (2010-03-12 21:09) [82]

Я не против опубликования свойств в Custom. Я говорил о том, что это сейчас единственный нормальный вариант не тащить в свой компонент лишние и вредные свойства. Но это очень неудобный вариант, приводящий к тому, что приходится следить за версиями VCL и добавлять новые свойства, появившиеся в VCL, в компонент.

oxffff ©   (12.03.10 17:18) [81]
А почему бы с этим не справится в рамках стандартной модели?
Объект делегатор с агрегатом внутри чем не устраивает?

<Посмотрев TList> Всем устраивает.


 
oxffff ©   (2010-03-12 23:08) [83]


> GrayFace ©   (12.03.10 21:09) [82]
> Я не против опубликования свойств в Custom. Я говорил о
> том, что это сейчас единственный нормальный вариант не тащить
> в свой компонент лишние и вредные свойства. Но это очень
> неудобный вариант, приводящий к тому, что приходится следить
> за версиями VCL и добавлять новые свойства, появившиеся
> в VCL, в компонент.


Какое отношение VCL имеет к языку Delphi?


> <Посмотрев TList> Всем устраивает.


Не понял.


 
GrayFace ©   (2010-03-13 20:32) [84]

oxffff ©   (12.03.10 23:08) [83]
Какое отношение VCL имеет к языку Delphi?

Прямое. Достаточно того, что он написан на Delphi. В VCL активно используются published и наследование. При совмещении этих 2 вещей проблема прятанья published свойств неизбежно встает. Тебе не нравится, что проблема иллюстрируется на конкретной библиотеке?

oxffff ©   (12.03.10 23:08) [83]
Не понял.

Объект делегатор с агрегатом внутри Всем устраивает.


 
oxffff ©   (2010-03-13 23:19) [85]


> GrayFace ©   (13.03.10 20:32) [84]
> oxffff ©   (12.03.10 23:08) [83]
> Какое отношение VCL имеет к языку Delphi?
> Прямое. Достаточно того, что он написан на Delphi. В VCL
> активно используются published и наследование. При совмещении
> этих 2 вещей проблема прятанья published свойств неизбежно
> встает. Тебе не нравится, что проблема иллюстрируется на
> конкретной библиотеке?


Считаю язык - это язык. А VCL - это один из возможных результатов применения инструмента(языка).
Поясни где проблема по твоему мнению при совмещении наследования и published в VCL.


 
oxffff ©   (2010-03-13 23:26) [86]


> GrayFace ©   (13.03.10 20:32) [84]


Для сериализации в VCL есть еще TPersistent.DefineProperties и использование RTTI в виде published. Достаточно продуманно.


 
GrayFace ©   (2010-03-19 14:23) [87]

oxffff ©   (13.03.10 23:19) [85]
Поясни где проблема по твоему мнению при совмещении наследования и published в VCL.

У меня был ListView, в котором мне надо было спрятать свойства LargeImages, SmallImages и еще несколько. Важно, чтобы они не показывались в редакторе свойств. Этот компонент, к тому же, наследовался от другого моего компонента. Чтобы это сделать, надо либо создавать TCustom варианты, а при наследовании от них расшаривать все желательные свойства, но надо знать список этих свойств для каждой версии Дельфи - вся проблема в этом - в каждой версии добавляются новые, а мне надо только спрятать несколько старых свойств. Я ошибся в своем утверждении - проблема в совмещении 3 вещей - наследования, published и использования списка всех published свойств для показа кому-то.

oxffff ©   (13.03.10 23:26) [86]
Для сериализации в VCL есть еще TPersistent.DefineProperties и использование RTTI в виде published. Достаточно продуманно.

Да, интересно. Надо будет попробовать - может так получится спрятать.


 
oxffff ©   (2010-03-19 14:41) [88]


> GrayFace ©   (19.03.10 14:23) [87]
> oxffff ©   (13.03.10 23:19) [85]
> Поясни где проблема по твоему мнению при совмещении наследования
> и published в VCL.
> У меня был ListView, в котором мне надо было спрятать свойства
> LargeImages, SmallImages и еще несколько. Важно, чтобы они
> не показывались в редакторе свойств. Этот компонент, к тому
> же, наследовался от другого моего компонента. Чтобы это
> сделать, надо либо создавать TCustom варианты, а при наследовании
> от них расшаривать все желательные свойства, но надо знать
> список этих свойств для каждой версии Дельфи - вся проблема
> в этом - в каждой версии добавляются новые, а мне надо только
> спрятать несколько старых свойств. Я ошибся в своем утверждении
> - проблема в совмещении 3 вещей - наследования, published
> и использования списка всех published свойств для показа
> кому-то.


1. Нужно наследоваться от самого закрытого и раскрывать все что-нужно.
2. Либо наследование от TControl и делегирование нужному контролу.
Полное делегирование с идентичным временем жизни=наследованию, хотя в большинстве случаев не бинарно совместимо.
3. Всегда есть возможность сделать run-time правки или перекрыть методы участвующие в сериализации.


 
GrayFace ©   (2010-03-19 23:49) [89]

oxffff ©   (19.03.10 14:41) [88]
1. Нужно наследоваться от самого закрытого и раскрывать все что-нужно.

Я и говорю - это надо от всех Дельфей иметь модули.


 
GrayFace ©   (2010-03-20 00:03) [90]

Чтобы написать
{$IFDEF D2006}
// список пропертей, в нем появившихся
{$ENDIF}



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.054 c
2-1265804991
Вася
2010-02-10 15:29
2010.08.27
A.V. при закрытии формы с TWebBrowser


15-1275731524
REX
2010-06-05 13:52
2010.08.27
Комментарии в SQL (Access)


4-1229333584
Nucer
2008-12-15 12:33
2010.08.27
GetTCPTable


11-1218719894
Дмитрий
2008-08-14 17:18
2010.08.27
Как узнать объем оперативной памяти


15-1275143388
oldman
2010-05-29 18:29
2010.08.27
Для тех, кто любит блюз (а тут любят блюз...)