Ajouter un élément dans un listview - vsReport ?

Picot56 Messages postés 18 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 7 septembre 2007 - 18 févr. 2006 à 23:38
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 19 févr. 2006 à 20:26
Bonjour !

Je cache pas que je susis débutant sur delphi. Mais jai un soucis pour ajouter des éléments dans ma ListView. Sachant que ma liste view est a deux colonne, la première 'Nom' et la seconde 'Taille. De ce fait je sais pas comment me baladé la dedans !
Si vous pouviez me venir en aide !
Je vous remerci par avance !

Bonne nuit !

5 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
19 févr. 2006 à 02:14
Salut,
Voici un bout de code que j'ai fait il n'y a pas longtemps :

Tu mets deux ImageList que tu nomes SmallImageList et LargeImageList et tu leurs affectes respectivement Width :16; High : 16; et Width := 32; High : = 32; le tout par l'inspecteur d'objets
un ListView ListView1 et toujours par l'inspecteur d'objets tu affectes les propiétées :
SmallIcon := SmallImageList
LargeIcon : = LargeImageList
tu mets trois colones une Nom une Type et une Chemin
et un Button Button1

et il te faut aussi ajouter dans la clause Uses de ta Form l'unité shellapi
et dans la procédure OnClick du Bouton tu écris ceci :

procedure TForm1.Button1Click(Sender: TObject);
Var
Icon : TIcon;
sr : TSearchRec;
Location : String;
Buffer : array[0..512] of Char;
ListItem : TListItem;
FileInfo : SHFILEINFO;
oldCursor : TCursor;


Begin
ListView1.Items.Clear; //efface les listes
LargeImageList.Clear;
SmallImageList.Clear;
OldCursor := Screen.Cursor; // mémorise le curseur
Screen.CurSor := crHourGlass; // affiche le sablier
Icon := TIcon.Create; // création d'une Icône
SetString(Location, Buffer, GetSystemDirectory(Buffer, SizeOf(Buffer))); // récupère le nom du répertoire système
Location := IncludeTrailingPathDelimiter(Location); // on lui ajoute un BackSlash " \ "
Try
ListView1.Items.BeginUpdate; // début de mise à jour
If FindFirst(Location + '*.scr', faAnyFile, sr) = 0 Then // trouve le premier fichier
Repeat
ListItem := ListView1.items.add; // prépare l'ajout
SHGetFileInfo(PChar(Location + SR.Name), 0, FileInfo,
SizeOf(FileInfo), SHGFI_TYPENAME Or
SHGFI_ICON); // recherche d'infos supplémentaires sur le fichier


Listitem.Caption := SR.Name; // ajoute le nom
ListItem.SubItems.Add(FileInfo.szTypeName); // le type
ListItem.SubItems.Add(Location); // le chemin
Icon.handle := FileInfo.hIcon; // affecte L'icone

LargeImageList.AddIcon(Icon); // ajoute à SmallImageList
SmallImageList.AddIcon(Icon); // et à LargeImageList
ListItem.ImageIndex := LargeImageList.Count - 1; // mise à jour de l'index


Until FindNext(sr) <> 0; // chercher le fichier suivant
FindClose(sr); // si il n'y en a pas on ferme la recherche
Finally
ListView1.Items.EndUpdate; // fin de mise à jour
Icon.Free; // on libère l'icone que l'on a crée
Screen.Cursor : = OldCursor; // et rétablie le curseur d'origine
End;
End;


Alors pourquoi deux ImageListe eh bien une pour mode vsIcone (Large) et une pour le mode vsReport (Small)

@+
Cirec

<HR>


Ne pas oublier de cliquer sur Réponse Acceptée si elle vous convient
0
Picot56 Messages postés 18 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 7 septembre 2007
19 févr. 2006 à 14:50
Merci beaucoup Cirec ... je suis en tain d'étudier tno code mais j'ai une erreur avec la varaible Buffer : [Error] Unit1.pas(34): Invalid compiler directive: 'Buffer' !

Et je ne sais pas de koi ça peu venir, si tu pouvais éclairer ma lanterne ...

Merci à toi !
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
19 févr. 2006 à 15:12
Salut,
sur quel ligne exactement se produit l'erreur ?
as-tu bien tout recopier ?
parce que j'ai fait le teste sous D4 et D9 et ça fonctionne très bien
et pour finir quel verdion de delphi utilises-tu ?

@+
Cirec
0
Picot56 Messages postés 18 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 7 septembre 2007
19 févr. 2006 à 20:09
J'utilise Delphi 7 Enterprise et mon erreur :

procedure TForm1.Button1Click(Sender: TObject);
Var
Icon : TIcon;
sr : TSearchRec;
Location : String;
Buffer : array[0..512] of Char; //Bug : [Error] Unit1.pas(34): Invalid compiler directive: 'Buffer'
ListItem : TListItem;
FileInfo : SHFILEINFO;
oldCursor : TCursor;
Begin
ListView1.Items.Clear; //efface les listes
LargeImageList.Clear;
SmallImageList.Clear;
OldCursor := Screen.Cursor; // mémorise le curseur
Screen.CurSor := crHourGlass; // affiche le sablier
Icon := TIcon.Create; // création d'une Icône
SetString(Location, Buffer, GetSystemDirectory(Buffer, SizeOf(Buffer))); // récupère le nom du répertoire système
Location := IncludeTrailingPathDelimiter(Location); // on lui ajoute un BackSlash " \ "
Try
ListView1.Items.BeginUpdate; // début de mise à jour
If FindFirst(Location + '*.scr', faAnyFile, sr) = 0 Then // trouve le premier fichier
Repeat
ListItem := ListView1.items.add; // prépare l'ajout
SHGetFileInfo(PChar(Location + SR.Name), 0, FileInfo,
SizeOf(FileInfo), SHGFI_TYPENAME Or
SHGFI_ICON); // recherche d'infos supplémentaires sur le fichier


Listitem.Caption := SR.Name; // ajoute le nom
ListItem.SubItems.Add(FileInfo.szTypeName); // le type
ListItem.SubItems.Add(Location); // le chemin
Icon.handle := FileInfo.hIcon; // affecte L'icone

LargeImageList.AddIcon(Icon); // ajoute à SmallImageList
SmallImageList.AddIcon(Icon); // et à LargeImageList
ListItem.ImageIndex := LargeImageList.Count - 1; // mise à jour de l'index


Until FindNext(sr) <> 0; // chercher le fichier suivant
FindClose(sr); // si il n'y en a pas on ferme la recherche
Finally
ListView1.Items.EndUpdate; // fin de mise à jour
Icon.Free; // on libère l'icone que l'on a crée
Screen.Cursor : = OldCursor; // et rétablie le curseur d'origine
End;
End;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
19 févr. 2006 à 20:26
remplace voir tous les Buffer par aBuffer et dit moi ce qui se passe

@+
Cirec
0
Rejoignez-nous