Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изображения в treeView, изображение вместо "+" и "-" 
:(
    Опции темы
foxygun
Дата 10.5.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет! 

Можно ли в компоненте treeView, вместо значков "+" и "-" выводить изображения (иконки)?

Слышал, что нужно создать ImageList. Но как это сделать?

Заранее спасибо!
PM MAIL ICQ Skype   Вверх
Partizan
Дата 11.5.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



foxygun, нет, ImageList на значки +/- не влияет....


По сабжу читать вот это:

http://msdn.microsoft.com/en-us/library/sy...w.drawnode.aspx


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Redsweet
Дата 11.5.2009, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 26.2.2009
Где: Казахстан

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



Есть такой компонент ImageList! Просто добавляшь его и загружаешь в него картинки. А потом в свойствах TreeView присваеваешь созданную коллекцию в ImageList. Таким образом добавится картинка перед каждым элементом дерева.

Это сообщение отредактировал(а) Redsweet - 11.5.2009, 00:51
PM MAIL   Вверх
Partizan
Дата 11.5.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Redsweet, Назначение ImageList-а объекту TreeView никак не повлияет на отображение +/-....Это только даст возможность рядом с текстом показать нужную иконку...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Redsweet
Дата 11.5.2009, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 26.2.2009
Где: Казахстан

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



Цитата(Partizan @  11.5.2009,  03:51 Найти цитируемый пост)
Redsweet, Назначение ImageList-а объекту TreeView никак не повлияет на отображение +/-....Это только даст возможность рядом с текстом показать нужную иконку...


Но как бы в TreeView и нет плюсов и минусов по умолчанию. Там стрелочки.

Цитата(Partizan @  11.5.2009,  03:47 Найти цитируемый пост)
По сабжу читать вот это:http://msdn.microsoft.com/en-us/library/sy...w.drawnode.aspx


Этот код создает +/-? Как вы разбираетесь в этом английском MSDN? Я в русском и то с трудом... 

PM MAIL   Вверх
Partizan
Дата 11.5.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Цитата

Но как бы в TreeView и нет плюсов и минусов по умолчанию. Там стрелочки.


ммм...а можно поинтересоваться видели ли вы как оно выглядит в WinXP?
Боюсь вас разочаровать, конечно...но, что "стрелочки" в Vista(у вас ведь Vista, не так ли?), что +/- в XP - это всё от системной темы...и автору, насколько я понимаю, нужно именно в эту часть TreeViewItem-а нарисовать иконку...


Цитата

Как вы разбираетесь в этом английском MSDN? Я в русском и то с трудом... 


Ну тут только могу посоветовать подтянуть английский...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
diadiavova
Дата 11.5.2009, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



У TreeView есть свойство ShowPlusMinus. Мне кажется, это -как раз то что надо.  А картинку для конкретных узлов можно менять в обработчиках событий AfterCollapse и AfterExpand например.



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
foxygun
Дата 11.5.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Создал ImageList, добавил туда картинки! Установил значение ImageList компонента treeView. Значение Imageindex установил на картинку! 
Для чего поле ImageKey?

ImageIndex позволяет выбрать одну из двух картинок. В результате сего, в treeView, рядом с +/-, отображается одна и таже картинка. 
Почему так? 
PM MAIL ICQ Skype   Вверх
Redsweet
Дата 11.5.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 26.2.2009
Где: Казахстан

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



Цитата(Partizan @  11.5.2009,  04:08 Найти цитируемый пост)
ммм...а можно поинтересоваться видели ли вы как оно выглядит в WinXP?

Видела конечно! user posted image


Цитата(Partizan @  11.5.2009,  04:08 Найти цитируемый пост)
Боюсь вас разочаровать, конечно...но, что "стрелочки" в Vista(у вас ведь Vista, не так ли?), что +/- в XP - это всё от системной темы...и автору, насколько я понимаю, нужно именно в эту часть TreeViewItem-а нарисовать иконку...

У меня XP, но с Вистовской темой... От того и стрелочки везде вместо +/-... А я еще понять не могла, где там foxygun нашел +/-! user posted image


Цитата(Partizan @  11.5.2009,  04:08 Найти цитируемый пост)
Ну тут только могу посоветовать подтянуть английский...

Это точно... user posted imageuser posted imageuser posted image
PM MAIL   Вверх
Partizan
Дата 11.5.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



foxygun, в aftercollapse/afterexpand меняйте ImageIndex у TreeNode


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Redsweet
Дата 11.5.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 26.2.2009
Где: Казахстан

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



Цитата(foxygun @  11.5.2009,  13:04 Найти цитируемый пост)
ImageIndex позволяет выбрать одну из двух картинок. В результате сего, в treeView, рядом с +/-, отображается одна и таже картинка. Почему так? 

Зайдите в Edit Nodes и меняйте картинку хоть для каждого элемента!
PM MAIL   Вверх
foxygun
Дата 11.5.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Redsweet @  11.5.2009,  10:15 Найти цитируемый пост)
Зайдите в Edit Nodes и меняйте картинку хоть для каждого элемента!


Узлы у меня будут создаваться динамически, а Вы предлагаете вариант, когда узлы создаются "вручную". 
PM MAIL ICQ Skype   Вверх
tososun
Дата 3.6.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(foxygun @ 11.5.2009,  10:36)
Цитата(Redsweet @  11.5.2009,  10:15 Найти цитируемый пост)
Зайдите в Edit Nodes и меняйте картинку хоть для каждого элемента!


Узлы у меня будут создаваться динамически, а Вы предлагаете вариант, когда узлы создаются "вручную".

Про .Net не знаю, пользую старый, добрый билдер 6.0 - там задачка тривиальная

В ImageList загружаешь три изображения состояния ноды
к примеру:
индекс 0 - закрытая книга
индекс 1 - открытая книга
индекс 2 - лист

в TreeVew

property Images = твоему списку изображений

далее обрабатываем события

void __fastcall TForm1::TreeView1GetImageIndex(TObject *Sender,
      TTreeNode *Node)
{
     if ( Node -> HasChildren ) {
       if ( Node -> Expanded ) {
         Node -> ImageIndex = 1;
    }
    else {
      Node -> ImageIndex = 0;
    }
  }
  else {
    Node -> ImageIndex = 2;
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::TreeView1GetSelectedIndex(TObject *Sender,
      TTreeNode *Node)
{
  Node -> SelectedIndex = Node -> ImageIndex;
}
//---------------------------------------------------------------------------

И незабудь, к примеру в OnExpended & OnColapsed, перерисовать ноду, 
иначе изображения накладываются
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

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


 




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


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

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