[TListView] Ajout d'un nouvel élément avec ListView.items.addItem
Bonjour,
j'ai un TListview en mode Icon dans lequel je veux ajouter un nouvel élément,
seulement j'observe des comportements que je ne comprends pas :
Code:
1 2 3 4 5 6 7 8
|
//CAS1
var
item:TListItem;
begin
item:=Listview.items.add;
item.Caption:='Test';
end; |
Dans ce cas-ci, RAS l'élément est bien ajouté au Listview et le libellé 'Test' apparaît bien.
Code:
1 2 3 4 5 6 7 8 9 10
|
//CAS2
var
item:TListItem;
begin
item:=TListItem.Create(ListView.Items);
item.Caption:='Test';
item.subitems.add('sub1');
ListView.items.addItem(item);
end; |
Dans ce cas-ci l'élément et son sous élément 'sub1', sont bien ajouté au Listview mais le libellé 'Test' n'apparaît pas, est-ce normal ?
Si je pousse un peu plus loin en ajoutant un gestionnaire CustomDrawItem que je debuggue, je m'aperçois que dans le CAS2 :
- Item.caption n'est pas vide 8O , malgré qu'il ne soit pas affiché
- Item.caption peut être remplacé par une nouvelle valeur qui là s'affichera
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
procedure TfrmMain.listviewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
str:string;
begin
//un test en debug m'indique bien que Item.caption est initialisé à 'Test'
//comme prévu pourtant le libellé ne s'affiche pas.
//si j'affecte à Item.caption une autre valeur que 'Test' alors
//celle-ci s'affiche (?)
item.Caption:='valeur';
end; |
Vous y comprenez quelque chose ?
Etes-vous déjà arrivé à insérer un nouvel élément comme dans le cas 2 mais en ayant l'affichage du libellé de l'élément ?