Когда я пытаюсь подсчитать количество элементов в группе, я получаю общее количество элементов в коллекции. Как получить количество элементов в каждой группе?
Подсчитайте количество элементов в группе TListview
Ответы (2)
Это, пожалуй, самый простой способ.
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;
person
Andreas Rejbrand
schedule
30.05.2010
Только в Vista и более поздних версиях сообщения LVM_GETGROUPINFO
и LVM_GETGROUPINFOBYINDEX
возвращают структуру LVGROUP, которая имеет элемент cItems
, определяющий количество элементов в группе.
person
Remy Lebeau
schedule
31.05.2010
Это гораздо лучшее решение. В частности, это, вероятно, намного быстрее в очень больших списках. Однако, по моему опыту, группы просмотра списка плохо работают с большими объемами данных, поэтому на практике эта разница может не иметь большого значения...
- person Andreas Rejbrand; 30.12.2017