|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
TreeView с картинками
Привет, форумчане!
Замыслил я в своей программе (это база данных) сделать банальную, казалось бы, вещь - поставить изображения в узлах дерева иерархии. Специфика в том, что это дерево иерархии формируется динамически - наименования узлов берутся из трёх связанных таблиц. В этих же таблицах есть поля с изображениями, и эти изображения должны появляться в узлах дерева. Я взял компонент ImageList, привязал его к дереву. Далее: - создаём новый узел; текстовое наименование его берём из таблицы; - из этой же таблицы берём изображение и добавляем его в ImageList. Поле изображения визуализируется в скрытом компоненте TDBImage; оттуда и берётся изображение; - к только что созданному узлу привязываем изображение (указываем полученный при вставке номер изображения). Упрощённый (без лишней ерунды) код: Код:
var imIndex: integer; n1: TTreeNode; n1 := tree.Items.Add(nil, fq1.FieldByname('Naimen').AsString);//Создаём корневой узел imIndex := imlt.Add(im1.Picture.Bitmap, nil);//Добавляем изображение в ImageList. Вот здесь - выскакивает ОШИБКА. n1.ImageIndex := imIndex;//Для только что добавленного узла n1.SelectedIndex := imIndex;//указываем номер изображения в ImageList |
#2
|
|||
|
|||
А у тебя точно битмап там лежит?
Попробуй создать отдельно битмап, отрисуй на нем im1.Picture.Graphic и уже этот битмап засовывай в лист. |
#3
|
||||
|
||||
Спасибо за подсказку! В ходе решения задачи этим методом я и увидел свой косяк, а именно - по старой привычке, для ускорения процесса, отключил DataSource, через который происходит визуализация всех полей, включая и графическое. А то я смотрю - размеры "imlt.Height" и "imlt.Width" почему-то при тестовой проверке оказывались = 0... Теперь всё отлично, спасибо! Напрямую через TDBImage (точнее, через TDBImageEh) всё шпарит как положено)
|
#4
|
|||
|
|||
Всегда пожалуйста
|