代码之家  ›  专栏  ›  技术社区  ›  Mason Wheeler

如何使tchecklistbox垂直滚动?

  •  4
  • Mason Wheeler  · 技术社区  · 14 年前

    我在一张表格上有一个TcheckListBox。它的Columns属性设置为2,如果在两列中有超过屏幕所能容纳的项目,它会在控件的底部放置一个水平滚动条。

    事实上,按照这种方式布局,垂直滚动会更方便。但我似乎不知道如何让这个盒子做到这一点。我认为将列设置为1是可行的,但没有。

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

    1 回复  |  直到 14 年前
        1
  •  6
  •   mghie    14 年前

    你需要设置 Columns 到0。

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

    如果 如果为0,则列表框的整个客户机宽度范围内只有一列,不合适的项将使垂直滚动条可见,并隐藏水平滚动条。

    编辑:

    当一个负值被用于 财产。

    方法 TCustomListBox.CreateParams() 设置 LBS_MULTICOLUMN 列表框样式取决于 属性与0不同。对于负值,设置了样式标志,但VCL不发送 Lb_设置列宽 消息,因此本机控件使用默认列宽。它是 documented 成为:

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

    (搜索“LBS_多列样式指定”以查找文本的相关段落。)

    推荐文章