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

Delphi Discussion :

[D7] Treeview: Popup uniquement sur items


Sujet :

Delphi

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut [D7] Treeview: Popup uniquement sur items
    Bonjour,

    J'ai attaché un popupMenu sur mon treeview et j'aimerais qu'il ne s'execute que si le clic droit a été fait sur un noeud (on ne peut pas attacher le popupMenu directement sur un noeud, c'est dommage...).

    J'ai réussi à faire en sorte que le clic droit sélectionne l'item en dessous mais je ne détecte pas SI il y a bien un item dessous:
    (tvMain = treeview, pmMain = PopupMenu)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TfrmMain.tvMainMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
    var
      mpos: TPoint;
    begin
      GetCursorPos(mpos);
      mpos := tvMain.ScreenToClient(mpos);
      if Button=mbRight then begin
        tvMain.Perform(WM_LBUTTONDOWN,1,MakeLParam(mpos.X,mpos.Y));
        tvMain.Perform(WM_LBUTTONUP,0,0);
        tvMain.PopupMenu := pmMain;
      end;
    end;
    En fait, je dois modifier le popupMenu selon qu'il soit sur un noeud ou un autre...

    De plus, j'ai peur de m'être compliqué la tache (qui me parait simple) en partant dans un truc de fou.

  2. #2
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    En fait, j'ai trouvé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TfrmMain.tvMainContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
    var mpos: TPoint;
    begin
      if (tvMain.GetNodeAt(MousePos.X,MousePos.Y)<>nil) then begin
        tvMain.Selected := tvMain.GetNodeAt(MousePos.X,MousePos.Y);
        GetCursorPos(mpos);
        pmMain.Popup(mpos.X,mpos.Y);
      end;
    end;
    (Je ne connaissait pas ContextPopup).

    Ca marche, mais si quelqu'un a quelque chose de plus optimisé, je suis prenneur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] TreeView clic sur item
    Par Vorens dans le forum VB.NET
    Réponses: 12
    Dernier message: 12/04/2012, 15h54
  2. [C#] [TreeView] [contextMenu] selection sur un click droit
    Par weejungle dans le forum Windows Forms
    Réponses: 25
    Dernier message: 03/08/2009, 11h52
  3. Comment installer le kernel 2.4.25-2 uniquement sur Mdk 10.0 ?
    Par Thrystan dans le forum Administration système
    Réponses: 8
    Dernier message: 12/08/2004, 11h32
  4. [D7][TreeView/ListView] Combien d'items possibles ?
    Par phplive dans le forum Composants VCL
    Réponses: 6
    Dernier message: 09/04/2003, 22h40
  5. PopupMenu sur item de TListBox
    Par nmathon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2003, 17h28

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