|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.04.2011, 06:08 | #11 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> надо будет новый компонент регистрировать на базе Tlistview ?
и это не поможет, проще будет заново написать свой список с нуля.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
17.04.2011, 09:20 | #12 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
таки тогда можно слегка пооффтопить ? можно ли всё-таки малой кровью добавить что-то в VCL-компонент ? я правда подобным никогда не озадачивался, мне интересен принцип. Я пробовал , написал tmylistview= class(tlistview) добавил 1 поле и в рантайме создаю компонент обычным способом (owner, parent - форма), он появляется и работает с добавленным полем. Правда поле простого типа, а не сложное, как Tlistitems. Пробовал и наследовать tlistitems, но уже не получилось добиться работы...
есть какие-то мысли по этому поводу здесь и сейчас? или мне лучше погуглить толковые статьи по усовершенствованию стандартных компонент ? думаю, и ТС это будет полезно и другим людям пытающихся создавать дочерние классы стандартных компонент (это слово в развитие темы ) Последний раз редактировалось phomm; 17.04.2011 в 09:22. |
17.04.2011, 12:32 | #13 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> добавить что-то в VCL-компонент ?
визуальные компоненты особо ничем в этом плане не отличаются от остальных классов. Да, можно унаследовать свой класс от любой компоненты и навешать сколько угодно новых свойст на него, но эти свойства будут известны только вам, и на работу базового класса никак не повлияют. > Правда поле простого типа, а не сложное, как Tlistitems. проблема тут не в том, что поле "сложное", а в том, что элементы TListItems создаются самим TListView, и всё зависит от того, какой базовый класс этих элементов прописан в исходниках TListView. Кстати, заглянув в исходники, обнаружил, что начиная с 6-той Дельфи, в TListView добавили вот такое событие: Код:
Код:
А перекрыв методы, можно управлять и тем, какого класса (наследника от TListItems) будет внутренний список элементов у TListView. (Забавно, ещё во времена 6-той Дельфи борландовцы озаботились этими проблемами, кто б мог подумать )). А теперь вернёмся в 5-ю Дельфи, где такого события и таких методов нет. И мы никак не можем повлиять на то, какой класс будет у создаваемых элементов списка, и у самого внутреннего списка. > Пробовал и наследовать TListItems опять же, наследовать можно сколько угодно, но пока в TListView прописано такое (строка из исходников к Дельфи 4): Код:
> и другим людям пытающихся создавать дочерние классы стандартных компонент достаточно всего двух вещей: — понимания, как работает ООП; — исходников компонент
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
17.04.2011, 13:36 | #14 |
Форумчанин
Регистрация: 06.12.2010
Сообщений: 300
|
Вообще добавить в список наследника вполне возможно. Items.AddItem - и добавляйте на здоровье. Плюс у каждого итема есть поле Data. Туда можно поместить указатель на что угодно, к примеру на рекорд с произвольными полями.
|
18.04.2011, 05:36 | #15 |
Пользователь
Регистрация: 31.07.2010
Сообщений: 52
|
Код:
Последний раз редактировалось xexxex; 18.04.2011 в 05:41. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Описать класс-родитель и класс-потомок. Delphi 7 | Andrew_M | Помощь студентам | 0 | 15.01.2011 14:42 |
Класс | Chartvit | Visual C++ | 2 | 05.01.2011 22:20 |
ошибка при добавлении елемента TListItem в TListVew | lowercase | Общие вопросы Delphi | 2 | 15.11.2010 20:48 |
Дочерний процесс. Создание и "слежение" | SNUPY | Общие вопросы Delphi | 8 | 16.12.2009 13:17 |
Программа, выполняет дочерний процесс | IgorArhangel | Помощь студентам | 3 | 24.01.2009 23:12 |