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 :

Pb de modification de libellé d'un noeud de TTreeView


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 23
    Par défaut Pb de modification de libellé d'un noeud de TTreeView
    Bonjour,
    Dans un TTreeview, je laisse le soin à l'utilisateur de modifier le texte des noeuds.
    Lorsque l'utilisateur à modifier un noeud, j'utilise l'évènement "OnEdited" du TTreeView, pour récuperer la nouvelle valeur du noeud.
    Je lui propose alors, à l'aide d'un message (Application->MessageBox) si il souhaite valider sa modification.
    Si il valide, tout marche correctement.
    Si il annule, il y a un problème à l'AFFICHAGE. Lorsque je modifie la propriété Text du noeud sélectionné, pour lui remettre l'ancienne valeur, il me conserve quand même la nouvelle valeur.
    Savez-vous comment affecter la valeur du noeud, de manière à ce que ce soit visible ?
    Merci de vos réponse.

    Ci dessous le code de la fonction "OnEdited" du TTreeView

    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
    // Type énuméré pour conserver les valeurs du noeuds
    typedef struct MyRec{<div style="margin-left:40px">AnsiString asTitre;</div><div style="margin-left:40px">AnsiString asNomChamps;</div><div style="margin-left:40px">int iCucle;</div>} TMyRec;
    typedef TMyRec* PMyRec;
     
    //fonction OnEdited
    void __fastcall TFrch::TVAntePatEdited(TObject *Sender, TTreeNode *Node, AnsiString &S)
    {
      int iOkCancel = 6;
      AnsiString asTemp = "";
      AnsiString asQuery = "";
      switch(Node->ImageIndex){
        // Noeuds libellés des dossiers spécialité
        case 0 : {
          AnsiString asDOTITRE = PMyRec(TVAntePat->Selected->Data)->asTitre;
          asDOTITRE = asDOTITRE.Trim();
          asTemp = "Vous êtes sur le point de modifier le libellé de ce dossier, \n\nAncien libellé : " + asDOTITRE + "\nNouveau libellé : " + S + "\n\nConfirmez-vous ?";
          iOkCancel = Application->MessageBox(asTemp.c_str(),"TEST",MB_OKCANCEL);
          if(iOkCancel == IDOK){
            // On fait quelquechose...
          }
          else {
            // Sinon le noeud reprend son ancienne valeur, c'est là que cela ne marche pas !!
            TVAntePat->Selected->Text = asDOTITRE;
          }
          break;
        }
        case 6 : {
          break;
        }
      }
    }

  2. #2
    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
    Essaye en faisant un Refresh() après le ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TVAntePat->Selected->Text = asDOTITRE;

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 23
    Par défaut
    Non cela ne marche pas, j'avais déjà essayé.
    Merci quand même :-))

  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
    As tu vérifié en débugage que ta variable asDOTITRE contient bien la bonne valeur ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 23
    Par défaut
    Oui j'ai vérifié, elle contient la bonne valeur.
    Il semblerait que le problème soit uniquement au niveau de l'affichage.
    Mystère...

Discussions similaires

  1. [WB17] Modification Couleur Libellé Dynamique
    Par iziwas dans le forum WebDev
    Réponses: 5
    Dernier message: 20/10/2013, 17h14
  2. [AC-2010] Modification du libellé d'un champ
    Par cluster26 dans le forum IHM
    Réponses: 2
    Dernier message: 28/09/2010, 23h15
  3. Réponses: 9
    Dernier message: 23/11/2009, 17h23
  4. Récuperer le libellé d'un noeud dans TreeView
    Par damene dans le forum Débuter
    Réponses: 2
    Dernier message: 02/02/2009, 20h21
  5. [C#] [1.1] Modification d'attributs d'un noeud XML
    Par Sup@Lou dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/08/2006, 16h35

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