Newsgroup: it.comp.lang.delphi
Titolo: Aggiunta righe a ListView!

Mi potete postare un esempio di come aggiungere una riga a una ListView con
3 colonne?
ho provato questo ma non va...
// Carico la ListView
   for i:= 0 to Lista.Count - 1 do
   begin
      ana:= Lista[i];
      ListView1.Items.Add;
      ListView1.Items.Item[0].Caption:= ana.Cognome;
      ListView1.Items.Add;
      ListView1.Items.Item[1].Caption:= ana.Nome;
      ListView1.Items.Add;
      ListView1.Items.Item[2].Caption:= ana.Via;
   end;

      ListItem := Items.Add;
      ListItem.Caption := Names[I][0];
..
Bye
AS

Questo lo trovo anche sull'help ma volevo che mi postassi come effettuare il
carico della listview con 3 colonne.
Bisogna per forza dichiarare un oggetto di tipo TListItem?
Io ho fatto ListView1.Items.Add. Non è la stessa cosa?
Grazie.

 carico della listview con 3 colonne.
Devi usare la proprietà SubItems di TListItem.
Per ogni Item che aggiungi, puoi avere n SubItems, cioè n colonne (ovviamente devi avere
impostato prima la proprietà Columns).
__
Jax

Ho provato questa funzione ma mi assegna i valori dalla seconda colonna
omettendo naturalmente la via.
ex:
Cognome            Nome            Via
                           Rossi             Mario
                           Verdi             Dino
// Carico la ListView
   for i:= 0 to Lista.Count - 1 do
   begin
      ana:= Lista[i];
      ListItem:= ListView1.Items.Add;
      ListItem.SubItems.Add(ana.Cognome);
      ListItem.SubItems.Add(ana.Nome);
      ListItem.SubItems.Add(ana.Via);
   end;
Da cosa dipende?

 Da cosa dipende?
Il primo elemento e' da assegnare alla Caption:
type TPersona = record
                  Cognome, Nome: String;
                  Indirizzo: String;
                end;
const Persone: array [1..3] of TPersona =
((Cognome:'ROSSI';Nome:'Mario';Indirizzo:'Via dei cavolfiori, 1'),
 (Cognome:'BIANCHI';Nome:'Alberto';Indirizzo:'Via delle rose, 3'),
 (Cognome:'VERDI';Nome:'Giulio';Indirizzo:'Via dei tulipani, 2'));
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 1 to 3 do
  begin
    with ListView1.Items.Add do
    begin
      with Persone[I] do
      begin
        Caption := Cognome;
        SubItems.Add(Nome);
        SubItems.Add(Indirizzo);
      end;
    end;
  end;
end;
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Da cosa dipende?
Dipende dal fatto che per un ListItem, la prima colonna č la sua Caption.
Fai cosě:
for i := 0 to Lista.Count - 1 do
begin
    with ListView1.Items.Add do
    begin
        Caption := ana.Cognome;
        SubItems.Add(ana.Nome);
        SubItems.Add(ana.Via);
    end;
end;
Ciao.
__
Jax

 Io ho fatto ListView1.Items.Add. Non è la stessa cosa?
Add ti ritorna il riferimento al listItem che dopo devi riempire, quindi
o fai
with (lv1.Items.Add) do begin
 // riempi item
end;
oppure:
curListItem := lv1.Items.Add;
curListItem.Caption := 'Prima colonna';
curListItem.Data := OggettoAssociato;
curListItem.SubItems.Add('Seconda');
curListItem.SubItems.Add('Terza');
personalmente tendo ad evitare i with (al limite, uso variabili appoggio
come curListItem con nomi piu' corti, tipo li)
Infine, se devi mostrare molti item, puoi usare la ListView in virtuale
(OwnerData = true) ed usare OnData per valorizzare il ListItem che ti
viene passato nella chiamata dell'handler.
Saluti
Paolo Arosio