|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.01.2013, 18:03 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
EasyListView - вставка своего компонента куда-нибудь, или аналог компонента ListView
Доброго времени суток!
Как вставлять в этом компонент др. компоненты хоть куда-нибудь? Или подскажите что-то похожее со след. функциями: 1. Группировка(сворачиваемая, разворачиваемая) 2. Сортировка групп, сортировка в группе отдельно от остального. 3. Вставка своих элементов управления. Последний раз редактировалось Человек_Борща; 15.01.2013 в 18:36. |
15.01.2013, 23:48 | #2 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Должны быть соответствующие события для рисования ноды. Рисуете вы например ноду самостоятельно и вот нужно разместить в ноде кнопку например - создаете кнопку настраиваете ее как вам нужно, указываете top, left и в качестве парента назначаете данный компонент для отображения списка.
Довольно часто сталкиваюсь с компонентом VirtualTreeview (а вот кстати и ссылки я вам на мануалы приводил), то в данном компоненте все это добро можно делать в событии AfterPaint()...так же и вот сюда можно еще добавить вызов Change().
Будь проще и люди к тебе потянутся
|
16.01.2013, 13:29 | #3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
VT все же проще как мне кажется.
Можете подсказать, как мне сделать VT похожим на ListView? И как в колонку вставлять свой редактор/компонент?(Выпад. список, поле редактирования(актуально оно для subitems?)) Ситуация такая: Есть списки TList. Они хранят объекты, объекты содержат строки и др. объекты а так же методы, функции, свойства и переменные. Есть ситуации когда объекты одного списка это группы, а элементы другого списка - дочерние элементы групп(ы). Вот тут мне категорически удобно разворачивать и сворачивать. Ближе всего мне TListView, там есть все что надо: 1. Удобное и простое отображение и хранение данных 2. Группировка Нету плюсиков и минусиков чтобы прятать дочерние элементы групп и это плохо. Поэтому на загуглил и нагуглил EasyListView, который схож с VirtualTree, оказалось не только родство но и тем фактом, что документации вообще 0. Пришлось его откинуть и вернуться к VirtualTree. Возникают вопросы: 1. как хранить в Node объекты списка? 2. Как отображать в subitem'ах какого-либо Node, в такой-то колонке, мой компонент(кнопка, поле ввода, ещё что-то)? Само VirtualTree выступает в роли редактора и рождается только тогда, когда пользователь открывает окно редактора какого-то списка. Из этого следует что дерево передается классу списка, и он его заполняет. Данные сами по себе существуют всегда, только если пользователь, редактором не прибил какой-то объект сам. Далее сортировка: Допустим у нас есть Tree в котором список групп и дочерних элементов к ним. Группы нужно сортировать в порядке приоритета, а элемента группы в ином порядке и по другому признаку. Чем это осуществить? Последний раз редактировалось Человек_Борща; 16.01.2013 в 18:02. |
18.01.2013, 03:51 | #4 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Для начала сделал простой пример. Посмотрите что к чему там, какие-то базовые вещи должны стать понятны.
Код конечно без комментариев, но чуть позже постараюсь в эту тему описать подробнее ваши вопросы.
Будь проще и люди к тебе потянутся
|
19.01.2013, 04:29 | #5 | ||||
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
По поводу
Цитата:
Что касается Цитата:
Цитата:
Цитата:
p.s. Примеры в аттачах писал "на коленке", так что красивость и правильность кода не гарантирована.
Будь проще и люди к тебе потянутся
Последний раз редактировалось spamer; 19.01.2013 в 04:33. |
||||
23.01.2013, 18:47 | #6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Кое что это прояснило.
Есть событие выделения ветвей? Ответ: Событие OnChange. Я начал по-тихоньку разбираться. И честно говоря - VirtualTrees это круче ListView в овер9000 раз. Теперь такая дилема: Ноды можно редактировать, и редактор появляется только тогда, когда я тыкаю по самому тексту нода. Это не хорошо. Чем отрегулировать это? В дереве у меня 2 колонки, и обе редактируются на ура. Однако хотелосьбы не тыкать на сам текст а както, проверять чтоли, что мышка находится в диапозоне колонки X и элемент Y переходит в редактирование... В ListView я так и делал, Брал координату мыши относительно ListView b cмотрел где находится она по оси X, если входит в предел от кролонки слева и до колонки справа то включается редактор.. Последний раз редактировалось Человек_Борща; 23.01.2013 в 23:53. |
24.01.2013, 02:23 | #7 | ||
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Цитата:
В обновленном аттаче показан пример использования MultiSelect режима. Цитата:
p.s. Исходник лучше смотреть дифом с предыдущей версией.
Будь проще и люди к тебе потянутся
Последний раз редактировалось spamer; 24.01.2013 в 02:26. |
||
24.01.2013, 03:26 | #8 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
хех придется делать по старинке, тогда.
Вот такой код писался чтобы проверить наличие мышки в такой-то позиции при дабл-клике: Код:
По событию OnClick действовала все та же функция только if not MauseInRange и если условие срабатывает, редактор прячется а новые данные запоминаются. А как вызывать редактор для item X в колонке Z? Последний раз редактировалось Человек_Борща; 24.01.2013 в 03:29. |
24.01.2013, 04:42 | #9 | |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Цитата:
Вот...из последнего вашего поста, я так понимаю нужно что-то наподобие этого: Код:
Будь проще и люди к тебе потянутся
|
|
24.01.2013, 09:51 | #10 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Я для создания редактора использую IVTEditLink Интерфейс =)
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как изменить программу так, чтобы круг двигался не по прямой, а по какому - нибудь другому закону.Например,по какой-нибудь кривой | kg250493 | C++ Builder | 2 | 24.11.2012 13:44 |
Куда пойти, куда податься | Delрhi | Свободное общение | 4 | 06.02.2012 12:39 |
Использование компонента idUdpClient без компонента TForm. | Riply | Компоненты Delphi | 2 | 18.02.2011 21:21 |
Куда отследить куда утекает память? | TwiX | Общие вопросы Delphi | 6 | 02.03.2010 03:10 |