| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Изображения в treeView |
| Автор: foxygun 10.5.2009, 23:48 |
| Всем привет! Можно ли в компоненте treeView, вместо значков "+" и "-" выводить изображения (иконки)? Слышал, что нужно создать ImageList. Но как это сделать? Заранее спасибо! |
| Автор: Partizan 11.5.2009, 00:47 |
| foxygun, нет, ImageList на значки +/- не влияет.... По сабжу читать вот это: http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.drawnode.aspx |
| Автор: Redsweet 11.5.2009, 00:48 |
| Есть такой компонент ImageList! Просто добавляшь его и загружаешь в него картинки. А потом в свойствах TreeView присваеваешь созданную коллекцию в ImageList. Таким образом добавится картинка перед каждым элементом дерева. |
| Автор: Partizan 11.5.2009, 00:51 |
| Redsweet, Назначение ImageList-а объекту TreeView никак не повлияет на отображение +/-....Это только даст возможность рядом с текстом показать нужную иконку... |
| Автор: Partizan 11.5.2009, 01:08 | ||||
ммм...а можно поинтересоваться видели ли вы как оно выглядит в WinXP? Боюсь вас разочаровать, конечно...но, что "стрелочки" в Vista(у вас ведь Vista, не так ли?), что +/- в XP - это всё от системной темы...и автору, насколько я понимаю, нужно именно в эту часть TreeViewItem-а нарисовать иконку...
Ну тут только могу посоветовать подтянуть английский... |
| Автор: diadiavova 11.5.2009, 01:32 |
| У TreeView есть свойство ShowPlusMinus. Мне кажется, это -как раз то что надо. А картинку для конкретных узлов можно менять в обработчиках событий AfterCollapse и AfterExpand например. |
| Автор: foxygun 11.5.2009, 10:04 |
| Создал ImageList, добавил туда картинки! Установил значение ImageList компонента treeView. Значение Imageindex установил на картинку! Для чего поле ImageKey? ImageIndex позволяет выбрать одну из двух картинок. В результате сего, в treeView, рядом с +/-, отображается одна и таже картинка. Почему так? |
| Автор: Redsweet 11.5.2009, 10:11 | ||||
Видела конечно! ![]()
У меня XP, но с Вистовской темой... От того и стрелочки везде вместо +/-... А я еще понять не могла, где там foxygun нашел +/-! ![]() Это точно... ![]() ![]() ![]() |
| Автор: Partizan 11.5.2009, 10:12 |
| foxygun, в aftercollapse/afterexpand меняйте ImageIndex у TreeNode |
| Автор: Redsweet 11.5.2009, 10:15 | ||
Зайдите в Edit Nodes и меняйте картинку хоть для каждого элемента! |
| Автор: foxygun 11.5.2009, 10:36 | ||
Узлы у меня будут создаваться динамически, а Вы предлагаете вариант, когда узлы создаются "вручную". |
| Автор: tososun 3.6.2009, 19:53 | ||||
Про .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, перерисовать ноду, иначе изображения накладываются |