2009-07-18 5 views
1

Je veux obtenir tous les éléments et sous-éléments dans mon listview, mais tout ce que je reçois est « TListItem »Comment obtenir les éléments et sous-éléments d'une liste?

Voici mon code:

procedure TFrameAnalyzer.AddEntry(opcode:word;data:Array of byte;direction:byte); 
begin 
    MessageBox(0,PChar(sListView1.Items.Item[4].ToString),'',0); 
end; 

Comment puis-je obtenir le nom de l'élément sous forme de chaîne et la nom de ses 2 sous-éléments?

+0

Je ne suis pas sûr, mais la balise winforms est-elle vraiment appropriée? Si (comme je le suppose) vous utilisez Delphi 2009 ce ne serait pas. – mghie

Répondre

5

Vous ne pouvez pas obtenir le nom de l'élément, car il n'a pas de nom. Il a un Caption et une propriété SubItems de type TStrings. Tout cela peut facilement être trouvé dans la documentation Delphi BTW. Regardez dans TListItem et TListItems classes.

Ainsi, vous pouvez faire quelque chose comme

procedure TFrameAnalyzer.AddEntry(opcode:word;data:Array of byte;direction:byte); 
var 
    Item: TListItem; 
    s: string; 
begin 
    Item := sListView1.Items.Item[4]; 
    s := Item.Caption + #13#10 
    + ' ' + Item.SubItems[0] + #13#10 
    + ' ' + Item.SubItems[1]; 
    MessageBox(0, PChar(s), nil, 0); 
end; 

Toutes gestion des erreurs d'omission, vous devez certainement pas accéder aux propriétés du tableau de cette manière sans vérifier d'abord que les indices sont valides.

+0

Pourrait rendre plus lisible (IMHO) en supprimant les parenthèses et les séparateurs de virgules, les éléments précédents avec "+ # 13 +" et les sous-éléments avec "+ '' # 13 +" – Argalatyr

+0

Oui, merci pour le commentaire. Je voulais juste les faire ressortir correctement, ne pas les mettre dans une seule ligne de code. – mghie

+0

Merci, cela fonctionne. –