Delphi 如何使TCheckListBox垂直滚动?
我在表格上有一个列表框。它的Columns属性设置为2,如果两列中的项目超过屏幕显示的数量,它会在控件底部放置一个水平滚动条 问题是,这种形式的布局方式,垂直滚动会方便得多。但我似乎不知道如何让盒子做到这一点。我认为将列设置为1应该有效,但事实并非如此Delphi 如何使TCheckListBox垂直滚动?,delphi,delphi-2010,tchecklistbox,Delphi,Delphi 2010,Tchecklistbox,我在表格上有一个列表框。它的Columns属性设置为2,如果两列中的项目超过屏幕显示的数量,它会在控件底部放置一个水平滚动条 问题是,这种形式的布局方式,垂直滚动会方便得多。但我似乎不知道如何让盒子做到这一点。我认为将列设置为1应该有效,但事实并非如此 有人知道如何使TCheckListBox垂直滚动而不是水平滚动吗?您需要将列设置为0 对于所有正值,VCL向基础本机列表框控件发送一条LB_SETCOLUMNWIDTH消息,宽度参数设置为列表框客户端宽度除以列数。不合适的项将以相同的列宽开始一个
有人知道如何使TCheckListBox垂直滚动而不是水平滚动吗?您需要将
列设置为0
对于所有正值,VCL向基础本机列表框控件发送一条LB_SETCOLUMNWIDTH
消息,宽度参数设置为列表框客户端宽度除以列数。不合适的项将以相同的列宽开始一个新列,因此水平滚动条将可见
如果Columns
为0,则有一列横跨列表框的整个客户端宽度,不合适的项将使垂直滚动条可见,并隐藏水平滚动条
编辑:
当列
属性使用负值时会发生什么,这似乎是人们真正关心的问题
方法TCustomListBox.CreateParams()
根据列
属性不同于0来设置列表框样式。对于负值,设置样式标志,但VCL不发送LB_SETCOLUMNWIDTH
消息,因此本机控件使用默认列宽。它将是:
列表框使用的字体的平均字符宽度的15倍
(搜索“LBS_MULTICOLUMN style Specified”以找到相关的文本段落。)因此我们知道0的作用,知道正值的作用,那么负值的作用呢?天哪,我不相信。我一直在调试VCL试图禁用H滚动条。