【问题标题】:How to increase row height of listview in report style?如何在报表样式中增加列表视图的行高?
【发布时间】:2011-08-15 00:10:14
【问题描述】:

我只需要将 2px :) 添加到列表视图中一行的高度(自定义绘制的进度条现在太窄了)。

Change Listview item heighthttp://www.delphipages.com/forum/showthread.php?t=49939有两个很好的答案,但是我做不到。

我知道可以使用图像列表,但我已经有 16x16 图像:)

有人可以帮助我吗? 我会很感激的。

【问题讨论】:

    标签: delphi listview row-height


    【解决方案1】:

    回复CN_MEASUREITEM控制通知消息,如下:

    type
      TListView = class(ComCtrls.TListView)
      private
        procedure CNMeasureItem(var Message: TWMMeasureItem); message CN_MEASUREITEM;
      end;
    
      TForm1 = class(TForm)
        ...
    
    procedure TListView.CNMeasureItem(var Message: TWMMeasureItem);
    begin
      inherited;
      Inc(Message.MeasureItemStruct.itemHeight, 2);
    end;
    

    注意:仅当OwnerDraw 属性为真时才会发送此消息。

    【讨论】:

    • 哇!谢谢!!!我看到了 TMS 的 TAdvListView 的源代码,这条消息 CNDrawItem(var Message: TWMDrawItem); 也被处理(链接 delphipages 与 TMS 中的代码相同)。为什么?
    • 不知道 TAdvListView。默认的 TListView 已经有 OnDrawItem 事件。
    • id 没关系 :) 它有效!!!作为一个人,你是一个优秀的程序员!谢谢!
    • 一个“小”而有趣的错误 :) -> ListView1.Align:=alClient; 请添加项目,调整窗口大小,看看会发生什么 :) 如何修复?谢谢!
    • 这不适用于TCustomListView - 似乎找不到这样做的方法。
    【解决方案2】:

    无需编写任何代码的快速而肮脏的替代方法是添加一个 TImageList,将其宽度设置为 1,将其高度设置为您想要的行高,然后将其分配给列表视图的 SmallImages。

    【讨论】:

    • 我不认为这是一个“肮脏”的选择,完美无副作用!
    • 我实际上使用的是 SmallImages 属性,因此这对我来说不是一个好的解决方案。但是,正如在 stackoverflow.com/a/6564492/1960514 中发现的那样,您也可以为此目的使用 StateImages!
    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多