当使用 TListView 并且主题在应用程序中被禁用时,焦点和选定的项目显示如下:
注意两个图像中三角形所在的位置。项目的绘制框不会在图标出现的位置绘制。在 TListBox 中,绘制的项目填充整个选定项目。
我如何才能填充所选项目的图标部分,就像处理文本部分一样?
我知道 TListBox 是这样渲染的,但我需要对 Data 属性使用 TListView,TListView 也可以通过 TImageList 更好地处理图标。
谢谢。
您需要使用 TListView 的OnCustomDraw事件。在事件处理程序中:
有一些方法可以做这些事情,例如 DrawText 和 FillRect。
请注意,如果您愿意,可以使用 TListBox 而不是 TListView。您表示您需要列表中项目的 Data 属性,我假设将它们绑定到您的实际模型对象。您可以使用TStrings.Objects对任何支持 TStrings(例如 TListBox.Items)的东西执行此操作。