我在 Windows 7 上遇到 VirtualTreeView 组件的问题。我添加了 TVirtualStringTree 并使用 OnGetImageIndex 事件来分配 ImageIndex ,该事件始终位于调试器非零值。
VirtualStringTree 使用带有 16x16 图标的 TImageList 作为 Images 属性。
在 Windows XP 上它可以正常工作,在 Windows 7 上它可以将 TImageList 中索引为 0 的图标重叠在普通图标之上。我在 Windows 7 上运行的程序与 XP 上运行的程序相同,因此代码相同,但绘图不同。
这张图片说明了这个问题:
灰色三角形图标的索引为 0,文件夹图标的索引为 5。
这是 VirtualStringTree 中的错误吗?我能以某种方式避免这种情况吗?
我正在使用存储库中的最新 VirtualTreeView 版本。
最佳答案
在 OnGetImageIndex
事件处理程序中,请注意 Kind: TVTImageKind
参数。根据需要分配 ImageIndex
(通常,这仅适用于 ikNormal
和 ikSelected
值),否则分配 -1。
例如,当 Kind
的值为 ikOverlay
时分配有效的图像索引将导致在正常图像上绘制覆盖图像。 (这可能与您的问题有关。)
关于delphi - Virtual Treeview (C++ Builder) 2 个图标在 Windows 7 上重叠,但在 XP 上不重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171671/