Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 07.12.2018, 11:25   #1
Сергей Д
 
Регистрация: 27.09.2018
Сообщений: 5
Репутация: 10
По умолчанию Картинки в 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.

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Группировка в virtualtreeview phpmullin Компоненты Delphi 3 03.06.2016 15: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


15:54.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru