Contare il numero di elementi in un gruppo TListView
Domanda
Quando si tenta di contare il numero di elementi in un gruppo ottengo il numero totale di elementi della collezione. Come si ottiene il numero di elementi in ogni gruppo?
Soluzione
Questo è probabilmente il modo più semplice.
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;
Altri suggerimenti
In Vista e versioni successive, i messaggi LVM_GETGROUPINFO
e LVM_GETGROUPINFOBYINDEX
restituiscono una struttura LVGROUP che ha un membro cItems
specificando il numero di articoli di questa categoria.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow