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:
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;
}
}
} |