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

Вниз

добавить свойство классу TListColumn ?   Найти похожие ветки 

 
alo   (2004-12-27 00:25) [0]

делается компонент-наследник TCustomListView. нужно добавить новое свойство элементам Columns.
пока я думаю, что нужно сделать вот что:
1. создать класс-наследник TListColumn (TmyListColumn) и добавить туда новое свойство
2. создать класс-коллекцию, продублировав реализацию класса TListColumns с использованием TmyListColumn вместо TListColumn
3. в реализации TmyListView переопределить тип свойства Columns с TListColumns на TmyListColumns.

это правильный подход? если нет -- то как нужно делать правильно?


 
Юрий Зотов ©   (2004-12-27 13:48) [1]

1. Да.

2. Можно, но не обязательно. Достаточно передать свой класс элемента в конструктор коллекции.

3. Тоже можно, но надо убедиться, что не возникнут глюки (свойства невиртуальны, поэтому код VCL будет по-прежнему работать с оригинальным свойством предка, а не с новым свойством потомка).

К сожалению, в TCustomListView не предусмотрены виртуальные методы типа "CreateColumn" и "CreateColumns" (по аналогии с CreateListItem и CreateListItems), которые позволили бы легко подключать свои колонки. Но, поскольку свойство Columns имеет прямой способ доступа по чтению (и имело его во всех версиях Delphi, и вряд ли он когда-нибудь станет другим), можно использовать "хакерский" метод.

type
 PListColumns = ^TListColumns;

constructor TMyListView.Create(AOwner: TComponent);
var
 P: PListColumns;
begin
 inherited;
 P := @Columns; // Получили адрес поля FListColumns
 Colums.Free;
 P^ := TMyListColumns.Create(Self, TMyListColumn)
end;

Есть небольшое неудобство - чтобы добраться до новых свойств колонки, приходится использовать приведение типа.


 
alo   (2004-12-28 21:27) [2]

что-то в двух соснах запутался...
а как TMyListColumns-то написать?

Достаточно передать свой класс элемента в конструктор коллекции.

как это сделать?


 
alo   (2005-01-01 15:57) [3]

уважаемый ЮЗ, подскажите что делать.
сначала я обалдел от object pascal по причине его простоты (так показалось), теперь я в нем ничего не понимаю. где почитать в сети? (книги купить не могу, потому что их нет).
чтение исходников тоже не помогает -- явно выражается непонимание концепции..

прошу прощения за флейм.


 
Юрий Зотов ©   (2005-01-03 10:11) [4]

> alo (01.01.05 15:57) [3]

Если я правильно понял, сам язык, его синтаксис и пр. проблем не представляют, а нужно толковое описание принятой в Delphi объектной модели?

Тогда можно порекомендовать специализированную книгу именно по разработке компонентов, обычно эта тема лучше раскрывается как раз в таких изданиях. Но именно книгу, а не статьи в Сети, которые дадут обрывки знаний но не дадут понимания концепций.

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

М. Голованов, Е. Веселов. Создание компонентов в среде Delphi. Руководство разработчика.

В. Фаронов. Искусство создания компонентов Delphi.


 
alo   (2005-01-03 19:37) [5]

2ЮЗ
да, Вы правильно меня поняли. будем искать.
спасибо



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

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

Наверх




Память: 0.48 MB
Время: 0.042 c
5-1104426662
Stanislav_SM
2004-12-30 20:11
2005.10.23
Отображение события в инспекторе объектов


2-1127369002
alexm
2005-09-22 10:03
2005.10.23
как назначить одну процедуру многим компонентам


3-1126604417
Пытающийся
2005-09-13 13:40
2005.10.23
Помогите поднять SQL2000 Server


2-1127833868
dnk_arty
2005-09-27 19:11
2005.10.23
Олимпиада


14-1127968843
Ученик чародея
2005-09-29 08:40
2005.10.23
Почему в России TV такое серое.