如何在报表样式中增加列表视图的行高?

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案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 属性,因此这对我来说不是一个好的解决方案。但是,正如在 ***.com/a/6564492/1960514 中发现的那样,您也可以为此目的使用 StateImages!

以上是关于如何在报表样式中增加列表视图的行高?的主要内容,如果未能解决你的问题,请参考以下文章

如何动态改变报表的行高列宽

如何专门防止或锁定列表控件中的行选择(报表视图)

如何根据文本内容增加 NSTableView 中的行高?

请教:android gridlayout 如何设置列宽和行高?

wps表格,如何设置行列高亮提示

如何减少列表视图项的高度