delphi - Virtual Treeview (C++ Builder) 2 个图标在 Windows 7 上重叠,但在 XP 上不重叠

标签 delphi c++builder virtualtreeview

我在 Windows 7 上遇到 VirtualTreeView 组件的问题。我添加了 TVirtualStringTree 并使用 OnGetImageIndex 事件来分配 ImageIndex ,该事件始终位于调试器非零值。

VirtualStringTree 使用带有 16x16 图标的 TImageList 作为 Images 属性。

在 Windows XP 上它可以正常工作,在 Windows 7 上它可以将 TImageList 中索引为 0 的图标重叠在普通图标之上。我在 Windows 7 上运行的程序与 XP 上运行的程序相同,因此代码相同,但绘图不同。

这张图片说明了这个问题:

virtualtreeview issue

灰色三角形图标的索引为 0,文件夹图标的索引为 5。

这是 VirtualStringTree 中的错误吗?我能以某种方式避免这种情况吗?

我正在使用存储库中的最新 VirtualTreeView 版本。

最佳答案

OnGetImageIndex 事件处理程序中,请注意 Kind: TVTImageKind 参数。根据需要分配 ImageIndex(通常,这仅适用于 ikNormalikSelected 值),否则分配 -1。

例如,当 Kind 的值为 ikOverlay 时分配有效的图像索引将导致在正常图像上绘制覆盖图像。 (这可能与您的问题有关。)

关于delphi - Virtual Treeview (C++ Builder) 2 个图标在 Windows 7 上重叠,但在 XP 上不重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171671/

相关文章:

delphi - 如何从 TStringList 添加到 VirtualTreeView?

delphi - 在 VirtualTreeView 中编辑根节点单元格文本

德尔福错误: "Cannot focus a disabled or invisible window"

Delphi菜单合并问题

c++ - if else 程序切换程序

c++ - 调用 DOS 命令的 Win 应用程序

具有继承性的 C++ 构建器模式

delphi - (RAD Studio) 虚拟 TreeView : how to initialize all nodes at once?

delphi - 隐藏 Delphi 2009 应用程序中的主窗体

java - 将Java代码转换为delphi的问题