【问题标题】:Delphi 2010: Group TListView items in vsReport ViewStyleDelphi 2010:在 vsReport ViewStyle 中对 TListView 项目进行分组
【发布时间】:2011-06-23 10:05:14
【问题描述】:

首先这可能吗?

我有两个问题 - 第一个问题是在运行时创建时我无法让组出现在 TListView 中。我正在使用以下代码:

lg := lvResults.Groups.Add;
lg.Header := 'New Starters';
lg.GroupID := 0;

第二个是即使我在设计时创建组 - 我可以在表单设计器中看到它们 - 它们在运行时不存在 - 甚至在我刷新数据以添加我自己的项目之前......

补充: 我已经确认以下答案适用于一个处女项目。但是它在我想使用它的项目中失败了!我已经用调色板中的一个新的 TListView 替换了我的 TListView,但并不高兴。列表视图位于 tpagecontrol 上

【问题讨论】:

  • 解决方案是项目禁用了“启用运行时主题” - 没有它,组显然无法工作
  • 这是有道理的。将它们反向移植到 Windows Classic 是很愚蠢的。
  • @DanKelly 启用“启用运行时主题”有什么不利影响(如果有的话)?

标签: delphi delphi-2010 tlistview


【解决方案1】:

下面的代码会产生可见的组。您是否忘记将GroupView 设置为True

procedure TMyForm.FormCreate(Sender: TObject);
var
  Group: TListGroup;
  Item: TListItem;
begin
  ListView1.ViewStyle := vsReport;
  ListView1.GroupView := True;
  ListView1.Columns.Add.Caption := 'My column';
  Group := ListView1.Groups.Add;
  Group.Header := 'My header';
  Item := ListView1.Items.Add;
  Item.GroupID := Group.GroupID;
  Item.Caption := 'My item';

Delphi documentation中有一个代码示例。

【讨论】:

  • 出于兴趣:您也尝试过使用 vsReport 吗?这就是问题标题中的内容(在问题中重复它会更聪明)......
  • @Marjan 没发现那一点谢谢。现在已更新答案以涵盖该角度。
  • 谢谢,但对我不起作用。我已经从设计的列表视图中删除了所有列、项目等,用上面的代码替换了代码,将我的所有注释都注释掉了,我得到的只是“我的列”和“我的项目”
  • 好的,刚刚在一个新项目上进行了测试,它可以工作...是时候发现差异了...谢谢
  • GroupID是自动分配的(从0开始),所以Group.GroupID := 0;不是必须的,而是使用Item.GroupID := Group.GroupID;
猜你喜欢
  • 2014-09-24
  • 2018-08-29
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 2020-12-03
相关资源
最近更新 更多