2010-05-30 85 views

回答

4

这可能是最简单的方法。

procedure TForm1.Click(Sender: TObject); 
begin 
    ShowMessage(IntToStr(GetNumItemsInGroup(1))); 
end; 

function TForm1.GetNumItemsInGroup(const GroupID: integer): integer; 
var 
    i: Integer; 
begin 
    result := 0; 
    assert((GroupID >= 0) and (GroupID <= ListView1.Groups.Count - 1)); 
    for i := 0 to ListView1.Items.Count - 1 do 
    if ListView1.Items.Item[i].GroupID = GroupID then 
     inc(result); 
end; 
+0

谢谢你..这很好地工作。 – Bill 2010-05-30 02:11:07

1

在Vista和后止,LVM_GETGROUPINFOLVM_GETGROUPINFOBYINDEX消息返回具有cItems部件指定所述组中的项的数目的LVGROUP结构。

+0

这是一个更好的解决方案。特别是,在非常大的列表视图中,它可能会快得多。然而,根据我的经验,列表视图组在大量数据方面效果不佳,所以这种差异在实践中可能并不重要。 – 2017-12-30 11:39:42