Mas*_*ler 4 delphi delphi-2010 tchecklistbox
我在表单上有一个TCheckListBox.它的Columns属性设置为2,如果有多个项目可以放在屏幕上的两列中,它会在控件底部放置一个水平滚动条.
事实上,这种形式的布局,垂直滚动会更方便.但我似乎无法弄清楚如何让盒子做到这一点.我认为将Columns设置为1应该可以工作,但事实并非如此.
任何人都知道如何使TCheckListBox垂直滚动而不是水平滚动?
您需要设置Columns
为0.
对于所有正值,VCL将LB_SETCOLUMNWIDTH
消息发送到基础本机列表框控件,其中width参数设置为列表框客户端宽度除以列数.不适合的项目将启动具有相同列宽的新列,因此水平滚动条变为可见.
如果Columns
为0,则有一列跨越列表框的整个客户端宽度,而不适合的项将使垂直滚动条可见,并隐藏水平滚动条.
编辑:
当负值用于Columns
房产时,似乎真正感兴趣的是什么.
该方法根据不同于0 的属性TCustomListBox.CreateParams()
设置LBS_MULTICOLUMN
列表框样式.Columns
对于负值,设置样式标志,但VCL不发送LB_SETCOLUMNWIDTH
消息,因此本机控件使用默认列宽.据记载是:
列表框使用的字体的平均字符宽度的15倍.
(搜索"LBS_MULTICOLUMN样式指定"以查找相关的文本段落.)