【问题标题】:Autosize columns for TListView自动调整 TListView 的列大小
【发布时间】:2010-12-03 12:15:16
【问题描述】:

我想自动调整 TListView 中所有列的大小。我正在使用下面的代码,但它没有做任何事情。

ListView1.Columns.Add.Caption := 'Field Name';
ListView1.Columns.Items[0].Autosize := True;

如何在 Delphi 中自动调整 TListView 的列大小。

我设置了我的ViewStyle to vsReport

提前致谢

【问题讨论】:

    标签: delphi delphi-2006 tlistview


    【解决方案1】:

    我得到了答案。将列宽设置为LVSCW_AUTOSIZELVSCW_AUTOSIZE_USEHEADER 即可解决问题。

    使用LVSCW_AUTOSIZE设置将列标题设置为列中最大子项文本的大小,

    LVSCW_AUTOSIZE_USEHEADER 设置将列标题设置为列标题中文本的大小。

    uses CommCtrl;
    
    ListView1.Columns[0].Width := LVSCW_AUTOSIZE or LVSCW_AUTOSIZE_USEHEADER;
    

    【讨论】:

    • 当然,最好使用合适的常量:ColumnHeaderWidth = LVSCW_AUTOSIZE_USEHEADER;ColumnTextWidth = LVSCW_AUTOSIZE;
    • 只是想补充一点,如果您从 Object Inspector 设置宽度,这将不起作用。
    • 不幸的是,这会覆盖 MinWidth 属性。反之亦然。
    • 我应该在每次添加项目后设置此尺寸还是只设置一次?
    • 我已经更新了使用常量的答案。
    【解决方案2】:

    试试这个:

    // Assign vsReport;    
    ListView1.ViewStyle := vsReport; 
    
      { // Add your items  }
    
    // Assign vsList again;
    ListView1.ViewStyle := vsList; 
    

    【讨论】:

    • 这与提出的问题完全无关。
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多