Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2008, 23:57   #1
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию TreeView и ImageList

Добрый вечер!
Бьюсь уже очень долгое время по этой причине решил спросить у вас господа эксперты и кто знает.
Мне необходимо в дереве отобразить иконки, которые я загрузил в ImageList, проблем с этим не было, привязал TreeView к ImageList. Теперь у меня встал такой вопрос, как отображать разные иконки в дереве? скажем, иметься такой список:

+1 Иконка 1
---- Иконка 2
+2 Иконка 1
---- Иконка 2. И так далее. Как я понял нужно обращаться к свойству Image Index, нашел, как описывает это Архангельский

"Свойство Image Index определяет индекс пиктограммы. Индекс соответствует спискам изображений, хранящимся в отдельных компонентах ImageList (см. раздел 9.3). Указания на эти компоненты вы можете задать в свойствах LargeImages для режима vsIcon и SmallImages для режимов vsSmallIcon, vsList и vsReport. Индексы начинаются с 0. Если вы укажете индекс -1 (значение по умолчанию), пиктограммы изображаться не будут. Свойство State Index в панели Item Properties позволяет добавить вторую пиктограмму в данный объект. Подобная пиктограмма может просто служить дополнительной характеристикой объекта. Индекс, указываемый как State Index, соответствует списку изображений, хранящихся в отдельном компоненте ImageList, указанном в свойстве StateImages компонента ListView."

Но так и не чего у меня не вышло, что то я недопонимаю объясните на примере пожайлусто если вас это не затруднит.

Спасибо.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 27.03.2008 в 00:01.
Stanislav вне форума Ответить с цитированием
Старый 27.03.2008, 00:36   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну вот, например:
Код:
procedure Tfmain.TreeViewGetImageIndex(Sender: TObject; Node: TTreeNode);
begin
if {какое-то условие} then
begin
if Node.Expanded then
Node.ImageIndex:=1 else
Node.ImageIndex:=0;
end else
if Node.Selected then
Node.ImageIndex:=2 else
Node.ImageIndex:=0;
end;
По аналогии - с использованием любого другого условия...

Вот еще можно:
Код:
procedure Tfmain.TreeViewGetSelectedIndex(Sender: TObject;
  Node: TTreeNode);
begin
if ((TreeView.Selected=nil) or (Node=nil)) then
exit;
Node.SelectedIndex:=Node.ImageIndex;
end;
Убей-зарежь - не помню для чего поставил

Последний раз редактировалось mihali4; 27.03.2008 в 00:41.
mihali4 вне форума Ответить с цитированием
Старый 27.03.2008, 01:04   #3
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну вот, например:
Код:
procedure Tfmain.TreeViewGetImageIndex(Sender: TObject; Node: TTreeNode);
begin
if {какое-то условие} then
begin
if Node.Expanded then
Node.ImageIndex:=1 else
Node.ImageIndex:=0;
end else
if Node.Selected then
Node.ImageIndex:=2 else
Node.ImageIndex:=0;
end;
По аналогии - с использованием любого другого условия...

Вот еще можно:
Код:
procedure Tfmain.TreeViewGetSelectedIndex(Sender: TObject;
  Node: TTreeNode);
begin
if ((TreeView.Selected=nil) or (Node=nil)) then
exit;
Node.SelectedIndex:=Node.ImageIndex;
end;
Убей-зарежь - не помню для чего поставил


Что-то не могу понять первый премер:
[Error] Unit1.pas(228): Expression expected but 'THEN' found
[Error] Unit1.pas(229): 'THEN' expected but 'BEGIN' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Второй работает но иконки как были у всех одинаковые так и остались...

Все что мог исправить в первом примере:


Код:
procedure TForm1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
begin
if Node.Expanded then
Node.ImageIndex:=1 else
Node.ImageIndex:=0;

if Node.Selected then
Node.ImageIndex:=2 else
Node.ImageIndex:=0;
end;

end.
В принципе работает но не так как бы хотелось...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 27.03.2008, 01:17   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
В принципе работает но не так как бы хотелось...
Так вы привяжите к нодам объекты с указанием уровня вложенности, они и будут определять индекс картинки.
Или, что даже проще - смотрите индекс картинки у родителя и добавляйте единичку детенышу.
А вообще, меня всегда удивляет - в Борланде расстарались, приложили к Дельфи кучу демок, и хоть бы кто туда додумался заглянуть. Почему-то большинство предпочитает тыкаться, как слепой телок, нежели посмотреть готовые примеры... Это я так, ворчу просто...
Ответ на ваш вопрос есть. Смотрите у себя на диске:
Borland\Delphi7\Demos\CustomDraw
mihali4 вне форума Ответить с цитированием
Старый 27.03.2008, 01:26   #5
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Так вы привяжите к нодам объекты с указанием уровня вложенности, они и будут определять индекс картинки.
Или, что даже проще - смотрите индекс картинки у родителя и добавляйте единичку детенышу.
А вообще, меня всегда удивляет - в Борланде расстарались, приложили к Дельфи кучу демок, и хоть бы кто туда додумался заглянуть. Почему-то большинство предпочитает тыкаться, как слепой телок, нежели посмотреть готовые примеры... Это я так, ворчу просто...
Ответ на ваш вопрос есть. Смотрите у себя на диске:
Borland\Delphi7\Demos\CustomDraw

Большое спасибо mihali4 и пусть мне даже за это влепят:
"Вы нарушили правила Форум программистов" но не поблагодорить вас это было бы не вежливо столько мучилься и на.

p.s Я смотрел демки просто я пыталься найти папку схожую с названием TreeView.

Еще раз спасибо.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Toolbar и Imagelist... prizrak1390 Общие вопросы Delphi 2 12.04.2008 13:25
загрузить в компонент imagelist 3 рисунка, а потом по очереди выводить их Stanislav Компоненты Delphi 2 25.11.2007 01:43
Как из ImageList получить HBITMAP нужного мне bitmap. reiserfs Win Api 6 12.11.2007 21:13
Имиджы и imagelist Marsik Помощь студентам 10 09.11.2007 21:59