Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отрисовать такое в VirtualDrawTree, отрисовка элементов 
:(
    Опции темы
GORA
Дата 10.1.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.8.2007
Где: Stavropol

Репутация: нет
Всего: нет



Вот возникла потребность выводить имена пользователей в VirtualTreeView примерно в таком виде:

user posted image

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

Создал такие типы для хранения пользователей:

Код

type

  PUser = ^TUser;
  TUser = record
    Nick, n: WideString;
    ImageIndex:integer;
    Indent:integer;
    icon1: TIcon;
    icon2: Ticon;
    icon3: Ticon;
    icon4: Ticon;
    Image: Tbitmap;
    Tag:integer;
    State:integer; 
    
  end;

  TCategories = class
   public
    Num_Cat : string;
    Cat_name: string;
    Cat_users: TList;
  end;


Так вот, интуиция подсказывает, что использовать надо VirtualDrawTree, Подскажите пожалуйста как сделать что то подобное

PM MAIL ICQ   Вверх
MetalFan
Дата 10.1.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



отрисовываешь ручками, ловишь куда пользователь кликнул. реагируешь.
есть какие-то более точные вопросы?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
GORA
Дата 10.1.2008, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.8.2007
Где: Stavropol

Репутация: нет
Всего: нет



Я более точный вопрос как раз и задал,

Цитата(MetalFan @  10.1.2008,  19:04 Найти цитируемый пост)
отрисовываешь ручками, ловишь куда пользователь кликнул. реагируешь


вот как это отрисовать ручками (примерно)?
И как реагировать на на клик?
PM MAIL ICQ   Вверх
MetalFan
Дата 10.1.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



1. определяешь координаты иконки относительно отрисовываемого элемента
2. отрисовываешь иконку
3. к п.1, если есть еще иконки

клик:
1. берешь координаты ректа иконки
2. проверяешь вхождение координат клика с пом PtInRect. делаешь выводы.
3. если есть еще иконки, то к п.1

что еще непонятно? конкретная реализация? попробуй сам, если не получится - спрашивай)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Sanchezzz
  Дата 10.1.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 5
Всего: 60



качаещь ссылка help+примеры к компоненту русский все ровно пригодится в нем есть пример Fig 1.5 посмотри более подходит под твои замыслы.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
GORA
Дата 11.1.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.8.2007
Где: Stavropol

Репутация: нет
Всего: нет



MetalFan, Хорошо, попробую сам, и еще вопрос: как разделить отрисовку родительских нодов(категорий) и дочерних(юзеров)?
Ведь в родительских надо будет еще рисовать некое подобие треугольников при открытом ноде и при закрытом.
Если так сделать:
Код

if UsersTree.GetNodeLevel(Node) = 0 then begin...... end;
if UsersTree.GetNodeLevel(Node) = 1 then begin...... end;

Или как то по другому?
PM MAIL ICQ   Вверх
VICTAR
Дата 11.1.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Например проверять Assigned(NodeParent[Node]) если правда, то это НЕ родитель.
PM MAIL   Вверх
MetalFan
Дата 11.1.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



GORA, ну тут еще можно вариант предложить - при загрузке выставлять флаг, что это за элемент... группа или элемент группы

Добавлено через 13 минут и 21 секунду
кстати, треугольник вместо квадратика рисуется в случае ButtonStyle := bsTriangle


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MetalFan
Дата 11.1.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



либо можно свои через StateImages


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
GORA
Дата 11.1.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.8.2007
Где: Stavropol

Репутация: нет
Всего: нет



Цитата(MetalFan @  11.1.2008,  12:41 Найти цитируемый пост)
кстати, треугольник вместо квадратика рисуется в случае ButtonStyle := bsTriangle

Ну так мне же его все равно отрисовывать придется, и тут хоть кружок, хоть звезду ставь, разницы никакой, я правильно понимаю?
PM MAIL ICQ   Вверх
MetalFan
Дата 11.1.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(GORA @  11.1.2008,  18:50 Найти цитируемый пост)
я правильно понимаю? 

нет. он отрисовывается средствами VT


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
GORA
Дата 11.1.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.8.2007
Где: Stavropol

Репутация: нет
Всего: нет



MetalFan, А тогда как получается? я пишу только обработку отрисовки самих элементов группы, а сами группы как отрисовывать?
PM MAIL ICQ   Вверх
MetalFan
Дата 11.1.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



как-как? ручками)
тем более, если тебе нужен такой-же треуголничег, как и на картинке, то и его придется ручками рисовать...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
aktuba
Дата 12.1.2008, 04:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата(MetalFan @  12.1.2008,  00:25 Найти цитируемый пост)
тем более, если тебе нужен такой-же треуголничег, как и на картинке, то и его придется ручками рисовать... 

Неа... Можно и VT заставить это делать ;)

Цитата(GORA @  11.1.2008,  20:00 Найти цитируемый пост)
MetalFan, А тогда как получается? я пишу только обработку отрисовки самих элементов группы, а сами группы как отрисовывать? 


Вот же, ответ уже дали:

Цитата(Sanchezzz @  10.1.2008,  20:54 Найти цитируемый пост)
качаещь ссылка help+примеры к компоненту русский все ровно пригодится в нем есть пример Fig 1.5 посмотри более подходит под твои замыслы. 




--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 12.1.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(aktuba @  12.1.2008,  04:22 Найти цитируемый пост)
Можно и VT заставить это делать ;)

как? не нашел возможности изменения цвета треугольника....

Добавлено через 34 секунды
разве что через stateImages


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1023 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.