Pour renommer un noeud d'un treeview, j'ai utilis=E9 le style
TVS_EDITLABELS qui permet comme son nom l'indique, d'=E9diter
directement le label dans le treeview.
Je me suis heurt=E9 =E0 un premier probl=E8me : lorsqu'on =E9dite un label,=
et
que l'on clique ailleurs pour terminer l'=E9dition, c'est l'ancien texte
qui remplace celui qu'on viens de taper. Pour r=E9soudre ce probl=E8me, au
niveau du code, j'ai intercept=E9 le message TVN_ENDLABELEDIT et fais :
Code C++ :
TreeView_SetItem(hTreeView, ((LPNMTVDISPINFO)lParam)->item);
pour remplacer l'ancien texte par le nouveau.
Est-ce la meilleur fa=E7on de proc=E9der ?
D'autre part, lors de l'=E9dition, l'appui sur les touches entrer et
=E9chap n'a aucun effet, ni pour annuler ni pour valider l'=E9dition. J'ai
essay=E9 de sous-classer le control, mais je ne re=E7ois pas le message
WM_KEYUP. Comment faut-il que je m'y prenne ?
Voila, j'esp=E8re avoir =E9t=E9 assez clair.
Merci d'avance,
XWindoo
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian ASTOR
On 19 sep, 16:08, XWindoo wrote:
Bonjour à tous,
Pour renommer un noeud d'un treeview, j'ai utilisé le style TVS_EDITLABELS qui permet comme son nom l'indique, d'éditer directement le label dans le treeview. Je me suis heurté à un premier problème : lorsqu'on édite un labe l, et que l'on clique ailleurs pour terminer l'édition, c'est l'ancien texte qui remplace celui qu'on viens de taper. Pour résoudre ce problème, a u niveau du code, j'ai intercepté le message TVN_ENDLABELEDIT et fais :
Code C++ : TreeView_SetItem(hTreeView, ((LPNMTVDISPINFO)lParam)->item);
pour remplacer l'ancien texte par le nouveau. Est-ce la meilleur façon de procéder ?
D'autre part, lors de l'édition, l'appui sur les touches entrer et échap n'a aucun effet, ni pour annuler ni pour valider l'édition.
Ce n'est pas normal (si pas dans Dialog Box (DWLP_MSGRESULT)...) Pour un TreeView dans une fenêtre classique, par ex =>
On 19 sep, 16:08, XWindoo <khan.temu...@gmail.com> wrote:
Bonjour à tous,
Pour renommer un noeud d'un treeview, j'ai utilisé le style
TVS_EDITLABELS qui permet comme son nom l'indique, d'éditer
directement le label dans le treeview.
Je me suis heurté à un premier problème : lorsqu'on édite un labe l, et
que l'on clique ailleurs pour terminer l'édition, c'est l'ancien texte
qui remplace celui qu'on viens de taper. Pour résoudre ce problème, a u
niveau du code, j'ai intercepté le message TVN_ENDLABELEDIT et fais :
Code C++ :
TreeView_SetItem(hTreeView, ((LPNMTVDISPINFO)lParam)->item);
pour remplacer l'ancien texte par le nouveau.
Est-ce la meilleur façon de procéder ?
D'autre part, lors de l'édition, l'appui sur les touches entrer et
échap n'a aucun effet, ni pour annuler ni pour valider l'édition.
Ce n'est pas normal (si pas dans Dialog Box (DWLP_MSGRESULT)...)
Pour un TreeView dans une fenêtre classique, par ex =>
Pour renommer un noeud d'un treeview, j'ai utilisé le style TVS_EDITLABELS qui permet comme son nom l'indique, d'éditer directement le label dans le treeview. Je me suis heurté à un premier problème : lorsqu'on édite un labe l, et que l'on clique ailleurs pour terminer l'édition, c'est l'ancien texte qui remplace celui qu'on viens de taper. Pour résoudre ce problème, a u niveau du code, j'ai intercepté le message TVN_ENDLABELEDIT et fais :
Code C++ : TreeView_SetItem(hTreeView, ((LPNMTVDISPINFO)lParam)->item);
pour remplacer l'ancien texte par le nouveau. Est-ce la meilleur façon de procéder ?
D'autre part, lors de l'édition, l'appui sur les touches entrer et échap n'a aucun effet, ni pour annuler ni pour valider l'édition.
Ce n'est pas normal (si pas dans Dialog Box (DWLP_MSGRESULT)...) Pour un TreeView dans une fenêtre classique, par ex =>
Le TreeView est effectivement dans une Dialog Box ; quel problème cela engendre ? Le code que tu m'a donné, pour une fenêtre classique ne peut pas être appliqué au Dialog Box ?
Merci.
Merci pour ta réponse.
Le TreeView est effectivement dans une Dialog Box ; quel problème cela
engendre ?
Le code que tu m'a donné, pour une fenêtre classique ne peut pas être
appliqué au Dialog Box ?
Le TreeView est effectivement dans une Dialog Box ; quel problème cela engendre ? Le code que tu m'a donné, pour une fenêtre classique ne peut pas être appliqué au Dialog Box ?
Merci.
Christian ASTOR
XWindoo wrote:
Merci pour ta réponse.
Le TreeView est effectivement dans une Dialog Box ; quel problème cela engendre ? Le code que tu m'a donné, pour une fenêtre classique ne peut pas être appliqué au Dialog Box ?
Non, car il faut ajouter en plus DWLP_MSGRESULT Par ex, pour valider le nouveau texte d'un item :
(Et éventuellement subclasser le contrôle Edit (TreeView_GetEditControl()) dans TVN_BEGINLABELEDIT si la Dlg se ferme sur OK ou Esc (comme KB130692))
XWindoo wrote:
Merci pour ta réponse.
Le TreeView est effectivement dans une Dialog Box ; quel problème cela
engendre ?
Le code que tu m'a donné, pour une fenêtre classique ne peut pas être
appliqué au Dialog Box ?
Non, car il faut ajouter en plus DWLP_MSGRESULT
Par ex, pour valider le nouveau texte d'un item :
Le TreeView est effectivement dans une Dialog Box ; quel problème cela engendre ? Le code que tu m'a donné, pour une fenêtre classique ne peut pas être appliqué au Dialog Box ?
Non, car il faut ajouter en plus DWLP_MSGRESULT Par ex, pour valider le nouveau texte d'un item :