![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> надо будет новый компонент регистрировать на базе Tlistview ?
и это не поможет, проще будет заново написать свой список с нуля.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#12 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
таки тогда можно слегка пооффтопить ? можно ли всё-таки малой кровью добавить что-то в VCL-компонент ? я правда подобным никогда не озадачивался, мне интересен принцип. Я пробовал , написал tmylistview= class(tlistview) добавил 1 поле и в рантайме создаю компонент обычным способом (owner, parent - форма), он появляется и работает с добавленным полем. Правда поле простого типа, а не сложное, как Tlistitems. Пробовал и наследовать tlistitems, но уже не получилось добиться работы...
есть какие-то мысли по этому поводу здесь и сейчас? или мне лучше погуглить толковые статьи по усовершенствованию стандартных компонент ? думаю, и ТС это будет полезно и другим людям пытающихся создавать дочерние классы стандартных компонент (это слово в развитие темы ![]() Последний раз редактировалось phomm; 17.04.2011 в 09:22. |
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> добавить что-то в VCL-компонент ?
визуальные компоненты особо ничем в этом плане не отличаются от остальных классов. Да, можно унаследовать свой класс от любой компоненты и навешать сколько угодно новых свойст на него, но эти свойства будут известны только вам, и на работу базового класса никак не повлияют. > Правда поле простого типа, а не сложное, как Tlistitems. проблема тут не в том, что поле "сложное", а в том, что элементы TListItems создаются самим TListView, и всё зависит от того, какой базовый класс этих элементов прописан в исходниках TListView. Кстати, заглянув в исходники, обнаружил, что начиная с 6-той Дельфи, в TListView добавили вот такое событие: Код:
Код:
А перекрыв методы, можно управлять и тем, какого класса (наследника от TListItems) будет внутренний список элементов у TListView. (Забавно, ещё во времена 6-той Дельфи борландовцы озаботились этими проблемами, кто б мог подумать )). А теперь вернёмся в 5-ю Дельфи, где такого события и таких методов нет. И мы никак не можем повлиять на то, какой класс будет у создаваемых элементов списка, и у самого внутреннего списка. > Пробовал и наследовать TListItems опять же, наследовать можно сколько угодно, но пока в TListView прописано такое (строка из исходников к Дельфи 4): Код:
> и другим людям пытающихся создавать дочерние классы стандартных компонент достаточно всего двух вещей: — понимания, как работает ООП; — исходников компонент ![]()
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 06.12.2010
Сообщений: 300
|
![]()
Вообще добавить в список наследника вполне возможно. Items.AddItem - и добавляйте на здоровье. Плюс у каждого итема есть поле Data. Туда можно поместить указатель на что угодно, к примеру на рекорд с произвольными полями.
|
![]() |
![]() |
![]() |
#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 |