【发布时间】:2011-12-31 13:58:50
【问题描述】:
我在 Windows 7 上遇到了 VirtualTreeView 组件的问题。我添加了一个 TVirtualStringTree 并使用 OnGetImageIndex 事件来分配始终在调试器非零值。
VirtualStringTree 使用具有 16x16 图标的 TImageList 作为 Images 属性。
在 Windows XP 上,它可以正常工作,在 Windows 7 上,它与 TImageList 中索引为 0 的图标重叠在普通图标之上。我在 Windows 7 上运行与 XP 相同的程序,因此代码相同,但绘图不同。
这张图片说明了这个问题:
灰色三角形图标的索引为 0,文件夹图标的索引为 5。
这是 VirtualStringTree 中的错误吗?我能以某种方式避免这种情况吗?
我正在使用存储库中最新的 VirtualTreeView 版本。
【问题讨论】:
-
显示您的 OnGetImageIndex 处理程序的代码。
-
在这种情况下,您可能会遗漏考虑到
Kind: TVTImageKind参数的代码。ikOverlay可能有效。仅此一项并不能解释您的症状,但这是一个不寻常的用例。 -
我认为你是对的......我只是查看了其他片段代码,我确实有一个处理程序: if (Kind == ikNormal || Kind == ikSelected) 仅在前者为真(否则为-1),并且似乎可以正常绘制。
标签: delphi c++builder virtualtreeview