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

Composants VCL Delphi Discussion :

TreeView Edited PopupMenu


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 227
    Points : 156
    Points
    156
    Par défaut TreeView Edited PopupMenu
    Bonjour à tous;

    Est-il possible d'associer son PopupMenu quand le composant TreeView est en mode édition ?

    J'aimerais avoir le même PopupMenu associé au composant TreeView lorsqu'un node est en mode édition.

    Je voudrais ajouter le Copier - Coller, en gros je veux virer le menu par défaut de Windows.

    Nom : Untitled 1.png
Affichages : 131
Taille : 9,0 Ko

    Merci.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 398
    Points : 5 770
    Points
    5 770
    Par défaut
    Salut

    tout est possible, mais pour ce faire, il faut redéfinir la gestion du message qui se trouve dans l'ancêtreil y a une ligne très parlante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      if csDesigning in ComponentState then
      begin
        inherited;
        Exit;
      end;
    celle-ci dit si tu es en mode édition tu ne fais rien
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 368
    Points : 24 654
    Points
    24 654
    Par défaut
    OnContextPopup et Handled à True pour inhiber le menu par défaut

    Sinon, j'utilise pour ma part plutôt un InputQuery/Form spécifique pour la modification, pour un utilisateur lambda, la maitrise de la modification de libellé de noeud, c'est vraiment pas ça (oui mon expérience utilisateur concernant un TTreeView modifiable date de 2009 et 2017, ce n'est pas récent mais je ne crois pas que les utilisateurs se sont améliorés en compétence et en compréhension de cet affichage.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 227
    Points : 156
    Points
    156
    Par défaut
    J'ai jeté un coup d'œil au TControl Vcl.Controls.TControl.OnContextPopup

    Même le Handled défini a True dans TreeView.OnContextPopup, sa l'enlève bien le TPopupMenu de surface, en mode édition le menu par défaut de Windows et toujours présent.

    Néanmoins, OnContextPopup peut aussi être utilisé pour redéfinir le menu contextuel automatique qui s'affiche lorsque le contrôle a un menu déroulant associé à une propriété AutoPopup (de valeur True). Dans ce dernier cas, si le gestionnaire d'événements affiche son propre menu, il doit initialiser à True le paramètre Handled afin de supprimer le menu contextuel par défaut.
    Houston, we have a problem

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 368
    Points : 24 654
    Points
    24 654
    Par défaut
    Cela doit être celui du TreeView_GetEditControl qu'il faut contourner et cette fois via un changement de sa WndProc

    Tu peux chopper le inplace editor lors du OnEditing
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 227
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Cela doit être celui du TreeView_GetEditControl qu'il faut contourner et cette fois via un changement de sa WndProc

    Tu peux chopper le inplace editor lors du OnEditing
    Merci ShaiLeTroll

    Aurait il un exemple qui traine quelque part sur le site sur un changement WndProc d'un composant ?

    Merci

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 824
    Points : 11 213
    Points
    11 213
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je me suis servi ici du détournement de la procédure de traitement des messages d'un composant, par exemple.

    Je ne sais pas si c'est adaptable directement à ton problème, mais le principe y est.
    Delphi 5 Pro - Delphi 10.4 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 227
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Bonjour,

    Je me suis servi ici du détournement de la procédure de traitement des messages d'un composant, par exemple.

    Je ne sais pas si c'est adaptable directement à ton problème, mais le principe y est.
    Bonjour tourlourou,
    Merci

    Je vais y jeter un coup d'oeil ici

Discussions similaires

  1. [Interface] TreeView et PopupMenu dans XE4
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/08/2013, 01h03
  2. PopupMenu sur TreeView
    Par BuzzLeclaire dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/02/2009, 11h00
  3. treeview, custom draw et editing
    Par nek_kro_kvlt dans le forum Delphi
    Réponses: 4
    Dernier message: 13/11/2006, 16h15
  4. TREEVIEW : Editer (changer le nom) d'un Noeud
    Par cyberlewis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/07/2004, 16h00
  5. Image et rich edit
    Par :GREG: dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/05/2002, 12h33

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