Bonjour !
Je suis en train de coder une petite appli pour générer des classes (je fais pas ça pour avoir le meilleur tools du monde, je veux juste m'entrainer à maitriser différents concepts liés à la POO).
En gros ma MainForm est composé d'un TTreeView et au lieu d'avoir plein de boutons j'ai décidé de tout gérer avec des TPopupMenu.
Ce que j'aimerais faire c'est que si l'utilisateur fait un clic droit sur une partie vide du TTreeView on a un popup "Ajouter une classe".
Si on fait un clic droit sur une classe on aurait les Popup suivantes : "Editer Classe" "Supprimer Classe" "Ajouter un Membre" "Ajouter une property" "Ajouter une Methode".
Et l'arbre se construit avec en noeud racine le nom de la classe (avec la classe elle-même dans Data) et des noeuds enfants correspondants à la visibilité (Privé, publics, protégés...) puis des noeuds enfants de ces derniers noeuds avec les différentés items possibles.
J'ai créé une classe de base de type TItemClass dont héritent mes classes TMembre, TProperty et TMethode. Mais ce n'est pas trop le problème.
J'ai créé autant de TPopupMenu que de "scénarios" possibles (il n'y a pas d'item cliqué, l'item cliqué est une classe, l'item cliqué est un TItemClass..etc...) et j'aimerais les associer dynamiquement à mon TTreeView.
Pour celà j'utilise l'évènement OnClick et suivant le TreeView.Selected je renseigne la property PopupMenu de la TreeView.
Mais j'ai un problème avec cette solution : un clic droit sur un item ne génère pas l'évènement OnClick. Du coup je suis obligé de faire un clic gauche sur l'item puis un clic droit dessus pour avoir le Popup menu d'édition/Suppression.
D'où ma question : est-ce que je gère mal le problème : Les TPopupMenu "dynamiques" ça craint ?
Ou alors il y a une possibilité qu'un clic droit puisse générer un évènement OnClick ?
Peut-être existe-t-il des solutions moins complexes ?
Merci d'avances pour vos réponses, j'espère avoir été assez clair dans mes explications.
EDIT: J'ai réussi à faire générer l'évènement OnClick avec un clic droit en interceptant l'évènement OnMouseDown. Mais le TreeView.Selected ne change pas, il ne change qu'avec un réel clic gauche.
Partager