TListView项目焦点主题

时间:2011-08-20 15:37:09

标签: delphi listview tlistview

使用TListView并在应用程序中禁用主题时,焦点和所选项目将显示如下:

enter image description here

请注意三角形所在的两个图像。项目的绘制框不会绘制图标出现的位置。在TListBox中,绘制的项目填充整个选定的项目。

我如何能够填充所选项目的图标部分,就像处理文本部分一样?

我知道TListBox会像这样呈现,但我需要使用TListView作为Data属性,TListView也可以通过TImageList更好地处理图标。

感谢。

1 个答案:

答案 0 :(得分:4)

您需要使用TListView的OnCustomDraw事件。在事件处理程序中:

  1. 确定是否已选择该项目
  2. 确定控件是否已集中
  3. 如果选择了该项,则绘制相应的选择矩形(如果未选择该控件,则为灰色,如果未选中,则为蓝色)
  4. 绘制文字
  5. 使用TImageList.Draw
  6. 从图像列表中绘制图像

    有一些方法可以做这些事情,比如DrawText和FillRect。

    请注意,如果您愿意,可以使用TListBox而不是TListView。您表示您需要列表中项目的数据属性,我假设将它们绑定到您的实际模型对象。您可以使用TStrings.Objects对支持TStrings的任何内容(例如TListBox.Items)执行此操作。