Lorsque j'essaie de compter le nombre d'éléments dans un groupe, j'obtiens le nombre total d'éléments dans la collection. Comment obtenez-vous le nombre d'articles dans chaque groupe?Compter le nombre d'éléments dans un groupe TListview
Répondre
C'est probablement le moyen le plus simple.
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;
Sous Vista et versions ultérieures seulement, le retour d'une structure LVGROUP messages LVM_GETGROUPINFO
et LVM_GETGROUPINFOBYINDEX
qui a un membre cItems
spécifiant le nombre d'éléments dans le groupe.
C'est une bien meilleure solution. En particulier, il est probablement beaucoup plus rapide dans les très grandes vues de liste. Cependant, d'après mon expérience, les groupes de vues liste ne fonctionnent pas du tout avec de grandes quantités de données, donc cette différence peut ne pas avoir beaucoup d'importance dans la pratique ... –
Merci ... cela fonctionne bien. – Bill