TfileListBox

Résolu
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 - 4 janv. 2007 à 09:41
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 - 9 janv. 2007 à 07:08
Bonjour,

Désolé de revenir sur le sujet mais je n'ai pas encore eu de solution concrète à ce problème sans devoir utiliser un composant spécial.

Avec un TfileListBox et un Timage je récupère l'icône du fichier listé, mais j'aimerai le récupérer en tant que glift à coté du fichier dans le filelistbox.

procedure TForm1.FileListBox1Click(Sender: TObject);
Var Uicon: Hicon;
 Nbr: integer;
begin
Image1.Picture := NIL;
Nbr := ExtractIcon(Form1.Handle, Pchar(FileListBox1.FileName), 0);
If Nbr = 0 then
begin
ShowMessage('Ce fichier ne contient aucune icônes.');
end
else
begin
Uicon := ExtractIcon(Form1.Handle, Pchar(FileListBox1.FileName), 0);
DrawIcon(Image1.Canvas.Handle, 0, 0, UIcon);
end;
end;


procedure TForm1.DirectoryListBox1Click(Sender: TObject);
begin
Directorylistbox1.Opencurrent;
FileListBox1.setfocus
end;
end.

Merci de votre attention.

Cincap
[url]mailto:/url

6 réponses

cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
6 janv. 2007 à 10:24
Bonjour,

Pas de réponse, pourtant ce message s'adressait principalement à DRJEROME qui filtre ses aides et ses explications alors que les amis CIREC et WHITEHIPPO entres autres n'hésites pas à trouver et à proposer à tous, une solution exploitable.

@+,

Cincap

[url]mailto:/url
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
6 janv. 2007 à 14:43
Salut cincap,

FileListBox est un vieux compo (écrit pour Win 3.1) qui ne permet pas en lui-même de dessiner sur son Canvas.
Je te conseille donc de l'abandonner et de remplacer, p.ex, par un TListBox :  il a une propriété Canvas et surtout un événement OnDrawItem qui permet, après avoir défini Style à lbOwnerdraw(...) d'afficher ce que l'on veut.

Voici un exemple simplifié de compo sur base d'un TListBox pour lister des fichiers :

type
TMyFileListBox = class(TListBox)
  public
    procedure ListFiles(Directory: string);
  end;

//...

procedure TMyFileListBox.ListFiles(Directory: string);
var
  SearchRec: TSearchRec;
begin
  Clear;
  if FindFirst(Directory + '\*.*',  faAnyFile, SearchRec) = 0 then
  repeat
     if (SearchRec.Attr and faDirectory) <= 0 then // trouvé un fichier et non un dossier
         Items.Add(SearchRec.Name);
  until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;

Avec ceci, tu as le même résultat qu'un FileListBox, sauf à ajouter éventuellement des filtres de fichiers (*.xls...).
Bien entendu, si tu ne veux pas créer un nouveau compo, tu te sers uniquement de la procédure ci-dessus adaptée à ton ListBox.
Tu n'as plus qu'à coder l'événement OnDrawItem... mais ici, je te laisse consulter l'aide de Delphi...

A +
Thierry
0
cs_dugueclin Messages postés 66 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 10 juillet 2012
6 janv. 2007 à 15:19
Bonjour à tous,
Je ne pense pas que sur ce site, certains soient plus aidé que d'autres, ou que certains répondent uniquement qu'à leurs petits amis, cette question à déjà été posée par moi-même, des  réponses ont été apportées, elles ne s'adressaient pas qu'à moi ou à une certaine catégorie de personne, un lien  à été donné:
http://jansfreeware.com/jfdelphi.htm)
ce composant est très bien, je te le recommende vivement, il te donnera pleinement satisfaction.
Je ne pense pas qu'il existe une autre solution.
Sincères salutations et bon codding à tous !!!
Dugueclin.
0
cs_dugueclin Messages postés 66 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 10 juillet 2012
6 janv. 2007 à 15:21
Bonjour à tous,
Je ne pense pas que sur ce site, certains soient plus aidé que d'autres, ou que certains répondent uniquement qu'à leurs petits amis, cette question à déjà été posée par moi-même, des  réponses ont été apportées, elles ne s'adressaient pas qu'à moi ou à une certaine catégorie de personne, un lien  à été donné:
http://jansfreeware.com/jfdelphi.htm)
ce composant est très bien, je te le recommende vivement, il te donnera pleinement satisfaction.
Je ne pense pas qu'il existe une autre solution.
Sincères salutations et bon codding à tous !!!
Dugueclin.
0

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

Posez votre question
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
6 janv. 2007 à 19:08
Bonsoir,

@ ThWilliam, merci à toi de ta réponse, je sais que c'est beaucoup plus facile d'utiliser un TlistBox, mais comme l'ami DRJEROME soumettait un exemple (je précise sans le code) à la demande de Dugueclin, il aurait été intéressant pour tout le monde de connaître sa méthode.


@ Duegueclin, forcément que les questions posées s'adressent à tout le monde sur ce site, et que les réponses sont données gratuitement afin d'enrichir les connaissances de chacun.

Par contre, tu conviendras avec moi avant que tu ne repostes cette question, l'ami DRJEROME t'avais fait parvenir un exécutable montrant la possibilité apparemment sans composant de réaliser ce que tu demandais, sans pour cela te faire avancer (extrait de son message du 19/12/2006 en s'adressant à toi).

"je conclue que mon exemple ne te convenais pas... 

http://phidels.com/php/forum/forum.php3?forumtable=posts&mode=showpost&postid=112071

never mind..."

Quant a l'ami CIREC, il avait bien cerné la méthode employée pour cet exemple mais je pense qu'il est aussi resté sur sa faim.

Pour le composant cité, il répond trop facilement à la question d'extraire l'icône avec et sur un composant TfileListBox, dommage.

Pour ton info, je connaissai celui ci "GlyphFileListBox.pas" de GNU General Public.

@+,

Cincap

P. S. Il y a toujours des membres qui vont plus loin qu'une simple réponse et je les remercie vivement au nom de tous.

[url]mailto:/url
0
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
9 janv. 2007 à 07:08
Bonjour,


Bravo pour ce super code qui répond au challenge lancé il y a quelque temps.


Cela ne m'étonne pas que ce soit l'ami Cirec à l'origine de cette réponse, comme quoi.............


@+,


Cincap

[url]mailto:/url
0
Rejoignez-nous