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 :

TreeView et PopupMenu dans XE4 [Interface]


Sujet :

C++Builder

  1. #1
    Membre �clair�
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Consultant technique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par d�faut TreeView et PopupMenu dans XE4
    Bonjour,

    Le context :
    J'utilise C++Builder XE4 et FireMonkey HD pour faire une application que je compile pour Win32 et Win64.

    J'ai un TTreeView qui contient des TTreeViewItem g�n�r� dynamiquement.
    Chaque TTreeViewItem � un PopupMenu.

    Si l'utilisateur ne s�lectionne pas un TTreeViewItem et qu'il fait un clieck droit dessus, le PopupMenu s'ouvre.
    Vous pouvez en voir une illustration dans l'image jointe � ce post.

    Le probl�me c'est que dans ce cas, je n'arrive pas � d�terminer quel est le TTreeViewItem responsable de l'appel.

    Quand l'utilisateur � s�lectionn� un TTreeViewItem, je peux me baser sur celui qui est sl�ectionn� mais le probl�me c'est que je ne suis pas certain que l'utilisateur � fait surgir le popup du TTreeViewItem s�lectionn�.

    Et comme j'utilise Firemonkey, je ne retrouve pas les donn�es habituelles qui me permettent de retrouver l'initiateur de ce PopupMenu.

    Pouvez-vous m'aider ?

    Merci.
    Images attach�es Images attach�es  

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Salut, voici comment je fais avec fmx pour faire appara�tre un popup menu:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
        PopupMenu1->PopupComponent = (TButton *)Sender;
        System::Types::TPointF MousePos = Screen->MousePos();
        PopupMenu1->Popup(MousePos.X, MousePos.Y);
    J'ai mis ce code dans un �v�nement OnMouseDown quand Button est �gal a TMouseButton::mbRight.

  3. #3
    Membre �clair�
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Consultant technique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par d�faut
    Merci pour cette id�e.

    Il n'y a pas de moyen de conna�tre le composant initiateur de l'ouverture du popup ?

    Car mon probl�me actuel n'est pas l'ouverture du popup au bon endroit.
    Je recherche � retrouver le composant ayant ouvert le popup suite � l'action d'un utilisateur.

    Sinon c'est vrai que l'on peut ouvrir manuellement par code le popup ou sinon attribuer un popup diff�rent � chaque objet mais ces 2 syst�mes sont lourd.

    Le fait que l'on utilise FireMonkey ne devrait pas nous emp�cher de remonter � la source de l'�v�nement. Des points de vue fonctionnel et d�veloppement, il n'est pas normal que le PopupMenu ne puisse pas savoir quel est l'objet � l'origine de son ouverture.

    J'ai essay� de remonter � utilisant les parents mais cela ne fonctionne pas non plus car j'arrive au TTreeView et non pas au TTreeViewItem alors que je n'ai associ� aucun PopupMenu au TreeView.

    Quelqu'un a-t-il une autre id�e ?

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Salut, �tant donn�e que tu g�n�res tes TTreeViewItem dynamiquement tu pourrais facilement forcer la s�lection d'un item, m�me avec le clique droit de la souris.

    LTreeViewItem �tant un TTreeViewItem g�n�r� dynamiquement, tu ajoutes ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    LTreeViewItem->HitTest = true;
    LTreeViewItem->OnMouseDown = TreeViewItemMouseDown;
    Avec le code suivant pour faire la s�lection:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm1::TreeViewItemMouseDown(TObject *Sender, TMouseButton Button,
              TShiftState Shift, float X, float Y)
    {
        TTreeViewItem* TreeViewItem = static_cast<TTreeViewItem*>(Sender);
        TreeView1->Selected = TreeViewItem;
    }
    Ensuite lorsqu'un TMenuItem de ton TPopupMenu est cliqu� il suffit de regarder la valeur dans TreeView1->Selected.

    Quand penses-tu?

  5. #5
    Membre �clair�
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Consultant technique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par d�faut
    C'est tr�s astucieux et correspond parfaitement au besoin.
    Et d'un point de vue fonctionnel, c'est logique de le s�lectionner.

    J'ai acheter la version XE4 depuis peu de temps et je ne connaissais pas encore l'utilit� de la propri�t� HitTest.

    Je t'en remercie grandement.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 23
    Dernier message: 16/08/2011, 23h17
  2. Popupmenu dans delphi 2009
    Par jeffray03 dans le forum EDI
    R�ponses: 0
    Dernier message: 02/02/2009, 13h42
  3. R�ponses: 3
    Dernier message: 13/02/2007, 16h21
  4. [D5] ajouter un popupMenu dans un component TImage
    Par pavlacki dans le forum Delphi
    R�ponses: 1
    Dernier message: 25/06/2006, 02h00
  5. Ajouter un PopupMenu dans un JList
    Par Sloneczko dans le forum Composants
    R�ponses: 3
    Dernier message: 04/12/2005, 17h37

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