Начиная с релиза 4.8.5 в
Virtual TreeView сломался механизм прорисовки узлов дерева. Симптомы поломки - иконки узлов выглядят как будь то на них налеплено несколько картинок. По этому поводу в
гугл багтрекере даже есть
тикет. После некоторых хождений отладкой выяснилось что проблема возникает из-за внутренних ограничений компонента. Virtual TreeView обнуляет индекс overlay изображения, если он больше 3. Из-за чего картинка выводится со своим значком и значком с индексом 0 поверх него.
Решение: проверять тип запрашиваемого изображения.
procedure TForm1.VTGetImageIndex(
Sender: TBaseVirtualTree;
Node: PVirtualNode;
Kind: TVTImageKind;
Column: TColumnIndex;
var Ghosted: Boolean;
var ImageIndex: Integer);
begin
if Kind <> ikOverlay then
begin
imageIndex:= 4;
end;
end;зы. В последнем на данный момент релизе 4.8.6 проблема так же наблюдается.
UPD:
Если же оверлейные изображения нужны, то придется еще потанцевать с бубном. Об этом написано в
ветке форума Embarcadero. Мое решение заключается в том, что я использую оверлейные изображения с индексом более 15. Изображения с индексами меньше требуют дополнительных усилий для отображения.