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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2018, 10:25   #1
Сергей Д
 
Регистрация: 27.09.2018
Сообщений: 6
По умолчанию Картинки в VirtualTreeView

Добрый день
Вывод картинок в столбцах VirtualTreeView.
Есть ImageList с 5 картинками. В VirtualTreeView в обработчике GetImageIndex в зависимости от условий устанавливаю индекс картинки. Картинки с индексами 0-3 выводятся. Начиная с индекса 4 - не выводятся. Вместо них выводится картинка с индексом 0. Почему так или что я делаю не так?
Вот упрощенный код:
Код:
unit PageList;

interface

uses
  Windows, SysUtils, Classes, Graphics, Controls, Forms,
  VirtualTrees, ImgList, StdCtrls;

type
  TVSTNodeData=record
    Caption:string;
   end;
  PVSTNodeData=^TVSTNodeData;

  TMainForm = class(TForm)
    GBResults: TGroupBox;
    VST: TVirtualStringTree;
    ImageList: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure VSTGetImageIndex(Sender: TBaseVirtualTree;
      Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
      var Ghosted: Boolean; var ImageIndex: Integer);
    procedure VSTGetText(Sender: TBaseVirtualTree;
      Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
      var CellText: WideString);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
var
 node:PVirtualNode;
 p:PVSTNodeData;
 i:integer;
begin
 VST.NodeDataSize:=sizeof(TVSTNodeData);
 for i:=0 to 4 do
  begin
   node:=VST.AddChild(nil);
   p:=VST.GetNodeData(node);
   p.Caption:=inttostr(i);
  end;
end;

procedure TMainForm.VSTGetImageIndex(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
  var Ghosted: Boolean; var ImageIndex: Integer);
begin
 ImageIndex:=-1;
 case column of
     1 : ImageIndex:=0;
     2 : ImageIndex:=1;
     3 : ImageIndex:=2;
     4 : ImageIndex:=3;
     5 : ImageIndex:=4;
 end; {case}
end;

procedure TMainForm.VSTGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
 p:PVSTNodeData;
 s:string;
begin
 p:=sender.GetNodeData(node);
 s:='';
 case Column of
     0 : s:=p.Caption;
 end; {case}
 CellText:=s;
end;

end.
Сергей Д вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Группировка в virtualtreeview phpmullin Компоненты Delphi 3 03.06.2016 14:58
VirtualTreeView bilibian Общие вопросы Delphi 6 06.08.2014 17:02
Dragdrop в Virtualtreeview NaumOff Компоненты Delphi 0 14.11.2012 00:01
VirtualTreeView vs. Delphi XE Kasyan666 Компоненты Delphi 6 30.06.2011 15:54
Работа с VirtualTreeView Mitron Общие вопросы Delphi 31 20.07.2010 13:45