我有一个窗体上的TCheckListBox。它的列属性被设置为2,并且,如果有更多的项目比可以在两列适合屏幕上的,它把一个水平滚动条横跨控制的底部。

事情是,该方式这种形式布置,这将是方便多了垂直滚动。但我似乎无法弄清楚如何使盒子做到这一点。我以为列设置为1应该工作,但它没有。

任何人都知道如何使TCheckListBox滚动垂直而不是水平?

有帮助吗?

解决方案

您需要设置Columns为0。

有关所有正值的VCL发送LB_SETCOLUMNWIDTH消息到底层本地列表框控件,宽度参数集到列表框客户宽度由列数除以。不适合的项目将开始与同一列宽度的新列,所以水平滚动条变得可见。

如果Columns是0,那么有一个单一的列,它不适合跨距列表框的整个客户端的宽度,和物品将使垂直滚动条可见,并隐藏水平滚动条。

修改

有似乎是真正的兴趣,当负值用于Columns属性会发生什么。

的方法TCustomListBox.CreateParams()设置LBS_MULTICOLUMN列表框样式取决于Columns属性从0是不同的负值的风格标志被设置,但VCL不发送LB_SETCOLUMNWIDTH消息,所以本机控制使用默认柱宽度。它是记录来是:

  

15倍用于通过列表框使用的字体的平均字符宽度。

(搜索“的LBS_MULTICOLUMN样式指定”查找文本的相关通道。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top