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 :

manipulation d'icone dans TTreeView


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Par défaut manipulation d'icone dans TTreeView
    Hello.

    Je tente de placer dans une TTreeView une liste de fichiers avec l'icone correspondante (une icone par TTreeNode).

    J'extrait l'icone par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        HICON N;
       N=ExtractAssociatedIcon(HInstance,buffer,&IconIndex);
    N étant donc un handle d'icone. Jusque là, ça marche.

    Ensuite, c'est un peu difficile, on ne sait pas injecter directement l'icone dans le TTreeNode (ou alors, j'ai rien compris)

    J'exploite alors une TImageList. Je place les images dedans et je le récupère par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        TNode->ImageIndex= ...
       TNode->SelectedIndex= ...

    Mais là où ça coince, c'est que pour ajouter une icone dans une TImageList, on exploite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ImageList->AddIcon(Icon); //avec Icon qui est de type TIcon.
    Si on essaie de placer le handle obtenu par ExtractAssociatedIcon dans le TIcon avant de l'employer avec AddIcon, soit ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     TIcon *Icon;
    Icon =new TIcon;
    Icon->Handle=ExtractAssociatedIcon(HInstance,FName,&IconIndex);
    ça foire...

    Comment procéder?
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut


    J'ai de la difficulté à comprendre ton message, c'est vrai qu'ici c'est la fin de journée et que j'ai programmé depuis ce matin

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Par défaut Pour faire plus clair
    Objectif : placer les icones des fichiers dans une TTreeView (une icone par TTreeNode).

    J'extrait l'icone par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HICON N;
    N=ExtractAssociatedIcon(HInstance,buffer,&IconIndex);[/color]
    N étant donc un handle d'icone. Jusque là, ça marche.

    Problème 1 : on ne sait pas injecter directement l'icone dans le TTreeNode (ou alors, j'ai rien compris)

    Solution 1 : J'exploite une TImageList. Je voudrais placer les icones dans la TImageList et les récupèrer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TNode->ImageIndex= ...
    TNode->SelectedIndex= ...
    Problème 2, issus de la solution 1 :

    Si on essaie de placer le handle obtenu par ExtractAssociatedIcon dans le TIcon avant de l'employer avec AddIcon, soit ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TIcon *Icon;
    Icon =new TIcon;
    Icon->Handle=ExtractAssociatedIcon(HInstance,FName,&IconIndex);
    ça foire... (enfin, ça plante)

    Comment procéder?
    Merci d'avance et merci pour le conseil sur les balises :-)

    Et si tu veux mon très humbles avis, on ne devrait jamais programmer après 22h (ni avant midi d'ailleurs :-))

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Comment fait tu pour récupérer ton parametre HInstance ?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Par défaut
    En fait HInstance contient l'instance de l'application, c'est une variable d'environnement recueillie par C++ Builder (merci à lui)

    Le problème n'est pas dans ExtractAssociatedIcon, qui lui marche très bien et sort un HICON en retour (vérifié dans un canvas).

    Le problème est de placer ce HICON (handle d'icone) dans le handle du TIcon (soit : TIcon->Handle).
    Je pensais que cela suffirait pour que le TICon se remplisse avec l'icone mais dans la réalité, ça plante (or mon TIcon est correctement déclaré et créé).

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Ca plante en disant quoi ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/02/2006, 17h13
  2. Icone dans barre taches napparait pas tjr(lancement session)
    Par souch dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/06/2004, 10h51
  3. icon dans treeview ou listview
    Par Sebinou dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2004, 00h29
  4. Afficher une icone dans DBgrid
    Par boyerf dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/02/2004, 15h45
  5. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 10h49

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