[astuce] comment afficher les icônes des fichiers listés dans un tfilelisbox

Soyez le premier à donner votre avis sur cette source.

Vue 8 555 fois - Téléchargée 753 fois

Description

Unité : CustomFileCtrl

Crée en réponse à une question posée sur le forum de DelphiFr :
Comment afficher les icônes des fichiers listés dans un TFileLisBox
http://www.delphifr.com/infomsg_TFILELISTBOX_861879.aspx#13
Et
http://www.delphifr.com/infomsg_TFILELISTBOX_867341.aspx#5

J'en ai profité pour modifier également TDirectoryListBox et TDriveComboBox

ceci sans installation supplémentaire de composants contrairement au composant qui se trouve ici :
http://jansfreeware.com/janfilelistbox.zip qui était proposé par WhiteHippo

Il suffit simplement d'ajouter "CustomFileCtrl" dans les uses
(dans la partie Interface) de l'unité et surtout après FileCtrl (Voir Démo)

Les modifications ne sont pas visible en mode Designe Time
Uniquement en mode Run Time

Je précise également que je n'utilise pas d'ImageList

Source / Exemple :


All in Zip

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

the clansman
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.
cincap
Messages postés
490
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
cirec
Messages postés
3810
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
9 décembre 2019
34 -
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 ;-)
cincap
Messages postés
490
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
cs_dugueclin
Messages postés
66
Date d'inscription
jeudi 2 septembre 2004
Statut
Membre
Dernière intervention
10 juillet 2012
-
Bonjour à tous,
Désolé de répondre aussi tardivement.

Merci Cirec pour ton formidable code!!! j'ai qu'une chose à dire: Félicitation!!!

je l'utilise dans un de mes project.L'affichage des icônes est plus jolis.
Vivement la mise à jour !!!.

par contre,j'utilise la procédure suivante:
// je liste des classeurs excels.Vous la connaissez tous je pense...

Trouve:=FindFirst(('C:\Mes documents')+'*.xls*',faAnyFile, Fichiers);
While Trouve=0 do
begin
Filename:=Fichiers.Name;
Trouve:=FindNext(Fichiers);
ExtPart:=ExtractFileExt(FileName);
LgExt:=Length(ExtPart);
Delete(FileName, Length(FileName)-LgExt+1,LgExt);
Result:=(FileName);
FileListBox1.Items.Add(Result);
end;
begin
FindClose(Fichiers);
end;

mais le problème c'est que, ben ça marche plus et je n'ai pas réussi à déclarer le repertoire ainsi que l'extention ".xls" dans le fichier CustomFileCtrl.pas.

Quelqu'un pourrait-il me dire comment faire??.dans le TJanFileListBox j'avais réussi à le modifier, mais là, avec le nouveau code c'est plus compliqué pour moi.
En vous remercient par avance et en re-félicitant l'auteur,
Sincères salutations et bon codding à tous

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.