IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

icon dans treeview ou listview


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par d�faut icon dans treeview ou listview
    salut a tous,

    comment faire pour trouver lister les fichiers d'un repertoire dans un treeview ou list view et surtout affichier les icons suivant le type de fichiers?

  2. #2
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Salut

    Tu dois associer une ImageList au TreeView et ensuite affecter un num�ro d'image au noeud en fonction du type de fichier.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par d�faut
    y a pas une autre solution?
    je veux dire y a pas un moyen de recuperer les icons system de tel ou tel autres fichiers?
    je vais pas devoir creer autant de image que de type de fichier?
    dois bien avoir une autre soluce qd meme?
    genre recupere l'icon d'un fichier? non?

  4. #4
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Fais une recherche approfondie sur le forum avec "ExtractIcon", o� un truc comme �a.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par d�faut
    bon, je suis arrive ici:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    HICON IconApp; 
         IconApp = ExtractIcon(HInstance, NomFichier, 0);
    ceci me recupere l'icone de l'application dans IconApp

    mais je vois pas du tout comment faire pour charger l'icon du fichier dans le listview

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
      if (OpenDialog1->Execute())
      {
      ListItem = ListView1->Items->Add();
      ListItem->Caption = OpenDialog1->FileName;
      ListItem->SubItems->Add("taille");
      ListItem->SubItems->Add("attribut");
      ListItem->SubItems->Add("date");
      }
    Si qq a une piste?

  6. #6
    Membre confirm�
    Homme Profil pro
    Micka�l
    Inscrit en
    Mai 2003
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Micka�l
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par d�faut
    pour afficher les icones correspond a un fichier, je passe par un TImageList contenant les icones.

    ensuite il suffit de mettre a jour la propri�t� ImageIndex de ton item.


    Pour remplir un TImageList avec les icones des fichiers :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
     DWORD ImageHandle;
     SHFILEINFO info;
     ImageHandle = SHGetFileInfo("", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_SYSICONINDEX);
     if (ImageHandle != 0) {
      ObjImgFichierLarge->Handle = ImageHandle;
      ObjImgFichierLarge->ShareImages = true;
     }

    Miky

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par d�faut
    bon voila, j'ai place dans une form:
    un Tbutton, un Topendialogue, un Timagelist, un Tlistview et dans l'evenement buttonclick j'ai mis ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TListItem  *ListItem;
    DWORD ImageHandle;
    SHFILEINFO info;
     
      OpenDialog1->Title = "Visualisation de l'icon";
      if (OpenDialog1->Execute())
      {
            ImageHandle = SHGetFileInfo(OpenDialog1->FileName.c_str(), 0, &info, sizeof(info), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_SYSICONINDEX);
            if (ImageHandle != 0)
            {
                ListView1->ViewStyle = vsIcon;
                ListView1->SmallImages = ImageList1;
                ListView1->LargeImages = ImageList1;
                ImageList1->Handle = ImageHandle;
                ImageList1->ShareImages = true;
                ListItem = ListView1->Items->Add();
                ListItem->Caption = ExtractFileName(OpenDialog1->FileName);
             }
      }
    }
    mais sa fonctionne toujours pas! je ne recupere pas l'icon du fichier!
    j'ai un icon qui represente une main!
    je comprends pas du tout

  8. #8
    Membre confirm�
    Homme Profil pro
    Micka�l
    Inscrit en
    Mai 2003
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Micka�l
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par d�faut
    salut,

    Il te manque l'affectation de l'icon dans l'item de ta liste (ListItem->ImageIndex) .

    je ne connais plus le nom exacte de la propri�t�, mais c'est dans "info"


    Par contre, ce que je fais, j'appel
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     ImageHandle = SHGetFileInfo("", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_SYSICONINDEX);
     ...
    dans la cr�ation de mon formulaire, cela initialise mon TImageList.


    Puis lorsque j'ai besoin de connaitre l'icone d'un fichier, j'appel
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     ImageHandle = SHGetFileInfo(nomFichier, 0, &info, sizeof(info), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_SYSICONINDEX);
     ...
    et cela me retourne l'index de l'icone se trouvant dans le TImageList

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par d�faut
    merci pour ton aide mikyfpc mais rien ne fonctionne!
    A l'aide! j'en peux plus!

  10. #10
    Membre confirm�
    Homme Profil pro
    Micka�l
    Inscrit en
    Mai 2003
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Micka�l
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par d�faut
    voil� le code exact d'une fonction que j'utilise pour r�cup�rer l'icone d'un fichier.

    Au pr�alable, dans le constructeur de ma form, je fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
     SHFILEINFO info;
     DWORD ImageHandle = SHGetFileInfo("", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_SYSICONINDEX);
     if (ImageHandle != 0) {
      ObjImageFichier->Handle = ImageHandle; // ObjImageFichier est un TImageList
      ObjImageFichier->ShareImages = true;
     }


    J'ai attach� mon objet TImageList a ma listview (SmallImage pour mon cas)

    Et la, c'est le code de ma fonction qui place l'icone du fichier
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     SHFILEINFO info;
     DWORD result;
     
    ...
     
      result = SHGetFileInfo(filenamepath.c_str(), 0, &info, sizeof(info), SHGFI_TYPENAME | SHGFI_ICON |SHGFI_SMALLICON | SHGFI_SYSICONINDEX);
      if(result != 0) {
       pItem->ImageIndex =  info.iIcon;
     }
     
     ...

    il se passe quoi dans ton cas ? Erreur de compil, erreur d'execution, ou rien ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par d�faut
    voila le source de mon code avec tes modifs!

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    SHFILEINFO info;
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     DWORD ImageHandle = SHGetFileInfo("", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_SYSICONINDEX);
     if (ImageHandle != 0) {
      ObjImageFichier->Handle = ImageHandle; // ObjImageFichier est un TImageList
      ObjImageFichier->ShareImages = true;
     }
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    DWORD result;
    TListItem  *pItem;
     
      OpenDialog1->Title = "Visualisation de l'icon";
      if (OpenDialog1->Execute())
      {
        result = SHGetFileInfo(OpenDialog1->FileName.c_str(), 0, &info, sizeof(info), SHGFI_TYPENAME | SHGFI_ICON |SHGFI_SMALLICON | SHGFI_SYSICONINDEX);
        if(result != 0)
        {
            pItem->ImageIndex =  info.iIcon;
            pItem = ListView1->Items->Add();
            pItem->Caption = ExtractFileName(OpenDialog1->FileName);
        }
    j'ai une fenetre Debbugger Exception Notification avec ecris:
    Project .exe raised execption class EAccessViolation with message 'Access violation at adresse 4013cffb in module vcl60.bpl. read of adresse 00000025. process Stopped. use step or run to conitnue.

    si je fais run sa me donne :
    'Access violation at adresse 4013cffb in module vcl60.bpl. read of adresse 00000025.

  12. #12
    Membre confirm�
    Homme Profil pro
    Micka�l
    Inscrit en
    Mai 2003
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Micka�l
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par d�faut
    le probleme vient de ta cr�ation d'item. Tu d�clares un pointeur vers un TListItem et tu essayes de renseigner ImageIndex avant l'allocation de ton pointeur.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    TListItem *pItem; 
    pItem = ObjLFichiers->Items->Add();
    pItem->ImageIndex =  info.iIcon; 
    etc...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par d�faut
    Merci mikyfpc sa marche nickel!
    j'avais pas capter l'histoire d'allocation!
    merci bien! vais pouvoir finir le reste de mon prog!
    tu pense que dans le cas d'un fichier sur une serveur ou fichier sur FTP sa marche aussi?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probl�me affichage icon dans treeView
    Par midos_ab dans le forum JSF
    R�ponses: 2
    Dernier message: 01/02/2011, 16h00
  2. Image ou icon dans un Treeview
    Par Dereck07 dans le forum Delphi
    R�ponses: 8
    Dernier message: 23/04/2007, 18h45
  3. image(icone) dans un treeview
    Par t0ine dans le forum C++Builder
    R�ponses: 8
    Dernier message: 19/03/2007, 13h31
  4. icone dans un treeview
    Par maxxou dans le forum VB.NET
    R�ponses: 2
    Dernier message: 15/03/2007, 20h01
  5. Probl�me d'icone dans un treeview
    Par t0ine dans le forum C++Builder
    R�ponses: 1
    Dernier message: 09/03/2006, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo