[ASTUCE] COMMENT AFFICHER LES ICÔNES DES FICHIERS LISTÉS DANS UN TFILELISBOX

Signaler
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
-
Messages postés
1
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
17 octobre 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41025-astuce-comment-afficher-les-icones-des-fichiers-listes-dans-un-tfilelisbox

Messages postés
1
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
17 octobre 2008

Salut,

Je viens de tomber sur ce code, et c'est de la bombe en boite ! Félicitations à l'auteur !

Par contre, si l'auteur ne sait pas quoi faire pour améliorer son code, j'ai des idées (à défaut des compétences pour modifier le composant moi même ;) ).

1. Quand un répertoire est caché, l'afficher 'en pale'
1 bis. De la même manière, quand un fichier est caché, dans TFileListBox, on pourrait, là aussi, l'afficher en pâle...
2. Dans le répertoire C:\Documents and Settings\\Favoris, on remarque que cette icone est une étoile... En effet, elle est définie par le fait que ce répertoire contient un fichier (caché) desktop.ini contenant le chemin de l'icone.
3. Pour le TDirectoryListBox, dans la procédure SetBmp, je préfère (mais ce n'est qu'un avis personnel) avoir de petites icones, que des grandes. Ainsi, au lieu d'avoir :
Flags := SHGFI_ICON Or SHGFI_LARGEICON;
J'ai plutôt fait :
Flags := SHGFI_ICON Or SHGFI_SMALLICON;
C'est un détail...

En tous cas, je vous félicite tous à nouveau car ce code est terrible.

A+

Philippe.
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Bonjour à tous,

@ cirec, comme cela c'est plus clair, loin de moi de mettre en doute tes capacités.

Je n'ai pas pensé au point d'arrêt .

De plus, c'est déjà surprenant avec un composant obsolète de pouvoir afficher les icônes avec clarté.

Merci pour la correction

@+,

Cincap
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Tu me déçois un peut là ....
Si tu avais pris le temps (2 secondes) de mettre un point d'arrêt dans l'unité concernée tu aurais pu remarquer que l'erreur vient de borland ... et plus exactement du TFileListBox.

Quand aucune sélection n'est faite ou que la liste est vide, ItemIndex renvoi -1
Jusque là rien d'anormal ...
Mais si la propriété MultiSelect est à True ItemIndex renvoi 0 et ce même si la liste est vide

Il suffit donc de remplacer dans "procedure TFileListBox.CMHintShow"
Ceci : If ItemIndex > -1 Then

Par : If (ItemIndex > -1) and (ItemIndex < Count) Then

et ça fonctionne ;-)
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Bonjour à tous,

@ cirec, j'espère que tu vas bien, je constate en utilisant ton unité (CustomFileCtrl.pas), que si avec le composant "TfileListbox", sa propriété "Multiselect" est à true, on obtient une erreur en le survolant avec la souris dans le cas ou le mask de ce composant affiche une extension définie ex: *.avi et que l'on se rend dans un répertoire ou dossier ou il n'y a pas ces fichiers avec cette extension.

@+,

Cincap
Afficher les 33 commentaires