在虚拟模式列表视图中使用复选框

时间:2011-10-26 06:06:09

标签: delphi listview tcheckbox

我正在学习制作虚拟模式listview。到目前为止,我的问题是我无法使用listview中的复选框。我已经阅读了http://delphi-kb.blogspot.com/2011/02/draw-checkboxes-in-virtual-mode.html的链接,但我没有看到任何复选框。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

显然,您必须在启用OwnerData时自行绘制CheckBox(如问题中链接的文章中所述)。

所以你必须将OwnerDraw设置为True(除了OwnerData,这两个是独立标志!)并自己绘制CheckBoxes OnCustomDrawItem事件。

更新:

似乎这并非完全正确,OnCustomDrawItem事件也会在案件OwnerDraw = False中被触发。

http://docwiki.embarcadero.com/VCL/XE2/en/ComCtrls.TListView.OnCustomDrawItem

更新2:

问题中关联的代码仅在OwnerDraw = FalseCheckBoxes = True时有效。

否则VCL不会在左侧预留空间来绘制CheckBoxes。

顺便说一句:你最好使用更高级的组件,比如Mike Lischke的TVirtualTreeView。