如何使一个TCheckListBox垂直滚动?
-
21-09-2019 - |
题
我有一个窗体上的TCheckListBox。它的列属性被设置为2,并且,如果有更多的项目比可以在两列适合屏幕上的,它把一个水平滚动条横跨控制的底部。
事情是,该方式这种形式布置,这将是方便多了垂直滚动。但我似乎无法弄清楚如何使盒子做到这一点。我以为列设置为1应该工作,但它没有。
任何人都知道如何使TCheckListBox滚动垂直而不是水平?
解决方案
您需要设置Columns
为0。
有关所有正值的VCL发送LB_SETCOLUMNWIDTH
消息到底层本地列表框控件,宽度参数集到列表框客户宽度由列数除以。不适合的项目将开始与同一列宽度的新列,所以水平滚动条变得可见。
如果Columns
是0,那么有一个单一的列,它不适合跨距列表框的整个客户端的宽度,和物品将使垂直滚动条可见,并隐藏水平滚动条。
修改强>
有似乎是真正的兴趣,当负值用于Columns
属性会发生什么。
的方法TCustomListBox.CreateParams()
设置LBS_MULTICOLUMN
列表框样式取决于Columns
属性从0是不同的负值的风格标志被设置,但VCL不发送LB_SETCOLUMNWIDTH
消息,所以本机控制使用默认柱宽度。它是记录来是:
15倍用于通过列表框使用的字体的平均字符宽度。
(搜索“的LBS_MULTICOLUMN样式指定”查找文本的相关通道。)
不隶属于 StackOverflow