Форум: "Компоненты";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];
Вниздобавить свойство классу 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c