Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何使TCheckListBox垂直滚动?_Delphi_Delphi 2010_Tchecklistbox - Fatal编程技术网

Delphi 如何使TCheckListBox垂直滚动?

Delphi 如何使TCheckListBox垂直滚动?,delphi,delphi-2010,tchecklistbox,Delphi,Delphi 2010,Tchecklistbox,我在表格上有一个列表框。它的Columns属性设置为2,如果两列中的项目超过屏幕显示的数量,它会在控件底部放置一个水平滚动条 问题是,这种形式的布局方式,垂直滚动会方便得多。但我似乎不知道如何让盒子做到这一点。我认为将列设置为1应该有效,但事实并非如此 有人知道如何使TCheckListBox垂直滚动而不是水平滚动吗?您需要将列设置为0 对于所有正值,VCL向基础本机列表框控件发送一条LB_SETCOLUMNWIDTH消息,宽度参数设置为列表框客户端宽度除以列数。不合适的项将以相同的列宽开始一个

我在表格上有一个列表框。它的Columns属性设置为2,如果两列中的项目超过屏幕显示的数量,它会在控件底部放置一个水平滚动条

问题是,这种形式的布局方式,垂直滚动会方便得多。但我似乎不知道如何让盒子做到这一点。我认为将列设置为1应该有效,但事实并非如此


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

您需要将
列设置为0

对于所有正值,VCL向基础本机列表框控件发送一条
LB_SETCOLUMNWIDTH
消息,宽度参数设置为列表框客户端宽度除以列数。不合适的项将以相同的列宽开始一个新列,因此水平滚动条将可见

如果
Columns
为0,则有一列横跨列表框的整个客户端宽度,不合适的项将使垂直滚动条可见,并隐藏水平滚动条

编辑:

属性使用负值时会发生什么,这似乎是人们真正关心的问题

方法
TCustomListBox.CreateParams()
根据
属性不同于0来设置列表框样式。对于负值,设置样式标志,但VCL不发送
LB_SETCOLUMNWIDTH
消息,因此本机控件使用默认列宽。它将是:

列表框使用的字体的平均字符宽度的15倍


(搜索“LBS_MULTICOLUMN style Specified”以找到相关的文本段落。)

因此我们知道0的作用,知道正值的作用,那么负值的作用呢?天哪,我不相信。我一直在调试VCL试图禁用H滚动条。