1 (edited by Ronin751 2020-06-22 13:09:48)

Topic: Не отображается иконка в TreeView

Доброго времени суток!
Пытаюсь добавить иконку в TreeView. Для этого создаю TImageList, но всё четно. Подскажите пожалуйста, что не так?
Заранее всем большое спасибо!

Post's attachments

Attachment icon TreeImage.rar 296.24 kb, 258 downloads since 2020-06-22 

I'm just learning

Re: Не отображается иконка в TreeView

Картинку вы так не добавите. Но код интересный, хочется услышать комментарии о том, за что отвечает свойство ImageIndex у строки )))

Form1.TreeView1.Row[form1.TreeView1.LastAddedRow].ImageIndex:=1;

А картинка в дерево добавляется по такому же алгоритму, что и в таблицу:

procedure Tree_AddGrControl(ATree:TdbTreeView);
// добавление колонки с графическими элементами управления деревом
var
  G: TGraphic;
  tmpImage:TdbImage;
  tmpName: string;
  i: integer;
begin
  // проверка, чтобы не добавлять дважды
  if not (ATree.Columns[0] is TNxGraphicColumn) then
  begin
    // из-за того, что колонка с картинкой добавляется, настройки надо сдвинуть
    for i:=0 to ATree.Columns.Count - 2 do
      ATree.Columns[i].Width := ATree.Columns[i+1].Width;
    // добавляем картинку
    ATree.Columns.InsertGraphicColumn(0);
    TNxGraphicColumn(ATree.Columns[0]).BorderWidth := 0; // убрать рамки вокруг картинок
    ATree.Columns[0].Options := ATree.Columns[0].Options - coCanSort; // отключить сортировку при клике на заголовке добавленной колонки
    ATree.Columns[0].Width := 30; // ячейка с изображением
    for i := 0 to ATree.RowCount - 1 do
    begin
      tmpImage := FindImage(frmStart,tmpName); // находим нужную картинку (например TdbImage на форме) - тут должен быть ваш алгоритм...
      G := TPngImage.Create;
      G.Assign( tmpImage.Picture ); // копируем картинку в графический объект дерева
      ATree.Cell[0, i].ObjectReference := G;
    end;
  end;
end;
Визуальное программирование: блог и телеграм-канал.

Re: Не отображается иконка в TreeView

k245, спасибо что уделили время теме!

Но код интересный, хочется услышать комментарии о том, за что отвечает свойство ImageIndex у строки )))

Честно говоря действовал, в этом вопросе абсолютно интуитивно. Не нашел в свойствах компонента ничего похожего на .Nodes.Add(,,[Key],[Text],[Image],) AS Node. Начал щупать и единственное, что хоть как то связано с Image было только TreeView.Row.

Я искренне признателен Вам за Ваш код. Но, откровенно сказать, не понимаю его. Какая разница между TTreeView и TdbTreeView? Но это скорее проблема уровня моих текущих познаний и отсутсвия достаточного количества базы читалок для программы. Приходится учиться на форуме. Буду дальше стараться.

I'm just learning

Re: Не отображается иконка в TreeView

Ronin751 wrote:

Какая разница между TTreeView и TdbTreeView?

TdbTreeView - это визуальный компонент из палитры компонентов My Visual Database, может работать с источником данных.


TTreeView - это стандартный компонент VCL, можно использовать с помощью скриптов.


В вашем проекте вы задействовали компонент TdbTreeView.

Визуальное программирование: блог и телеграм-канал.