Virtual Treeview (C ++ Builder) 2 иконки перекрываются в Windows 7, но не в XP - PullRequest
2 голосов
/ 17 ноября 2011

У меня проблема с компонентом VirtualTreeView в Windows 7. Я добавил TVirtualStringTree и использовал OnGetImageIndex событие для назначения ImageIndex , которое всегда находится в отладчике, кроме нулевое значение.

VirtualStringTree использует TImageList с иконками 16x16 в качестве свойства Изображения .

В Windows XP он работает правильно, а в Windows 7 перекрывает значок с индексом 0 из TImageList поверх обычного значка. Я запускаю ту же программу в Windows 7, что и в XP, поэтому код идентичен, но рисунок другой.

Это изображение иллюстрирует проблему:

проблема виртуального дерева http://i42.tinypic.com/6sb8ko.jpg

Значок серого треугольника имеет индекс 0, а значок папки - индекс 5.

Это ошибка в VirtualStringTree? Можно ли как-то избежать этого?

Я использую последнюю версию VirtualTreeView из репозитория.

1 Ответ

8 голосов
/ 17 ноября 2011

В обработчике событий OnGetImageIndex обратите внимание на параметр Kind: TVTImageKind.Присвойте ImageIndex как требуется (обычно это только для значений ikNormal и ikSelected), в противном случае присвойте -1. ​​

Например, присвойте действительный индекс изображения, если Kind имеет значениеikOverlay приведет к тому, что наложенное изображение будет нарисовано поверх обычного изображения.(Что может быть связано с вашей проблемой.)

...