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 :

TTreeView : OnCustomDrawItem event


Sujet :

C++Builder

  1. #1
    Baf
    Baf est déconnecté
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mars 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant BI

    Informations forums :
    Inscription : Mars 2002
    Messages : 22
    Par défaut TTreeView : OnCustomDrawItem event
    Bonjour

    Je souhaiterais surcharger l'évènement OnCustomDrawItem sur une TTreeView. Chaque noeud possede un texte tel "blablabla=11".
    Mon but est pour chaque texte, cacher la partie du texte à partir du caractere "=" pour cela voici le code que j utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::trvCustomDrawItem(TCustomTreeView *Sender,
          TTreeNode *Node, TCustomDrawState State, bool &DefaultDraw)
    {
     TRect NodeRect ;
       NodeRect = Node->DisplayRect(true) ;
       AnsiString Text = Node->Text.SubString( 1, Node->Text.Pos( "=" ) - 1 ) ;
       ((TTreeView*)Sender)->Canvas->TextRect( NodeRect, NodeRect.Left, NodeRect.Top, Text ) ;
    }
    Ce code réalise ce que je souhaite afficher, cependant il apparait en arriere plan de celui texte de départ.

    Par conséquent comment pourrais je faire pour passer mon texte modifié en premier plan ?

    Je suis à l écoute de toute suggestion !

  2. #2
    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
    On ne surcharge pas un gestionnaire d'évenement, mais on l'écrit.

    En gros tu sélectionne ton TTreeView et dans l'inspecteur d'objet tu doubles cliques sur OnCustomDrawItem et C++ Builder te crée directement la fonction (sauf ce qu'il y a dedant). Tu le savais probablement déjà mais j'arrivais pas à trouver une phrase pour parler de ce code là .

    Eh bien ton code tu le met là et ça devrait marcher !

    EDIT : en gras, correction c'était OnDrawItem que j'avais écrit avant

  3. #3
    Baf
    Baf est déconnecté
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mars 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant BI

    Informations forums :
    Inscription : Mars 2002
    Messages : 22
    Par défaut
    Je l'ai réécrit l évènement, cependant mon probleme est que le texte modifié via l évènement apparait en arrière plan du texte avant modification d'où comment faire pour cacher le texte de départ ?

  4. #4
    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
    Tu as fait comme je t'ai dit ?
    Tu ne dois pas le réécrire mais l'écrire.

    Normalement si tu fais comme cela tu n'aura pas de problème !

  5. #5
    Baf
    Baf est déconnecté
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mars 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant BI

    Informations forums :
    Inscription : Mars 2002
    Messages : 22
    Par défaut
    Oui Neilos, je l'ai écrit mon code mais le résultat m'étonne car il fonctionne à "moitié", il écrit bien comme je le souhaite mais il ne supprime pas le texte de départ de l'item que je modifie

  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
    Ah ben ouais j'ai pas fait gaffe.

    C'est normal si tu regarde ton code, nul par tu n'efface ce qu'il y a..

    Il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NodeRect = Node->DisplayRect( true ); // Ta ligne à toi :D
    ((TreeView*)Sender)->Canvas->FillRect( NodeRect );
    Et là ça devrait marcher...

  7. #7
    Baf
    Baf est déconnecté
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mars 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant BI

    Informations forums :
    Inscription : Mars 2002
    Messages : 22
    Par défaut
    Cela ne marche toujours pas mon texte apparait derriere le texte principale alors que je le souhaiterai par dessus

  8. #8
    Baf
    Baf est déconnecté
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mars 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant BI

    Informations forums :
    Inscription : Mars 2002
    Messages : 22
    Par défaut
    J'ai trouvé il faut passer par l'évènement OnAdvancedCustomDrawItem à la place de OnCustomDrawItem et affecter la valeur cdPostPaint à la variable Stage !

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

Discussions similaires

  1. Accès à une case d'un DBGrid dans l'event OnKeyDown
    Par fba dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/03/2004, 12h48
  2. TTreeView
    Par lasconic dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/08/2003, 11h12
  3. TTreeView: AutoExpand
    Par nmathon dans le forum Composants VCL
    Réponses: 6
    Dernier message: 04/03/2003, 15h48
  4. TTreeView -> Comment ouvrir une unité ?
    Par DaLove dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2002, 11h30
  5. Couleur des noeuds ds 1 TTreeView
    Par vincent DD dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/09/2002, 13h54

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