2010-05-30 12 views

Répondre

4

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; 
+0

Merci ... cela fonctionne bien. – Bill

1

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.

+0

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 ... –