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 :

désactiver le popupmenu


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut désactiver le popupmenu
    Bonjour

    J'ai une grille avec un popuMenu affectée, et suivant la valeur de SelectedField j'aimerai activer desactiver le popupmenu.
    Comment faire ?


    Merci d'avance

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je ferai un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure Tfrm_SavPlanningTrv.DBGrid1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
      DbGrid1.PopupMenu := nil;
      if button = mbLeft then
      begin
        if La_Condition then // mettre la condition ici
        begin
          PopupMenu1.Popup(X,Y);
        end;
      end;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Ou depuis OnPopup du menu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not La_Condition then Abort;

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    ou sur le MaGrid.OnContextPopup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if PasDePopup then 
      Handled := true;

  5. #5
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Merci bien pour tous

    En faite ce bout de code donne une position fausse
    Citation Envoyé par Rayek Voir le message
    PopupMenu1.Popup(X,Y);
    [/code]
    j'ai trouvé ce ci sur le net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    popMenu1.Popup(DBGrid1.Left+x+left,DBGrid1.Top+y+top+15);
    ça marche. mais je ne sais pas pourquoi...

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Parce que X et Y sont relatifs au coin supérieur gauche de la grille, alors que Popup attend des coordonnées écran.

    Mais l'exemple que tu as récupéré n'est pas très bon. En suivant ce principe, il faudrait additionner les left/top de toute la hiérarchie de parent.

    La solution est de convertir les coordonnées X/Y relatives en coordonnées écran par ClientToScreen:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      with TControl(Sender).ClientToScreen(Point(X,Y)) do
        PopupMenu1.Popup(X, Y);
    end;
    Une 2ème solution est de simplement utiliser les coordonnées de la souris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      with Mouse.CursorPos do
        PopupMenu1.Popup(X, Y);
    end;

Discussions similaires

  1. Désactiver un PopupMenu
    Par OutOfRange dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/12/2008, 14h50
  2. PopupMenu sur item de TListBox
    Par nmathon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2003, 17h28
  3. Désactivation de la souris
    Par mika dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/03/2003, 13h15
  4. Désactiver les touches F1, F2, F3, F4, F5 dans IE
    Par ZiZouJH dans le forum Flash
    Réponses: 7
    Dernier message: 17/02/2003, 09h59
  5. Réponses: 8
    Dernier message: 17/05/2002, 09h08

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