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 :

[TImage] affecter une action au double-clic droit de la souris


Sujet :

Delphi

  1. #1
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut [TImage] affecter une action au double-clic droit de la souris
    Voilà tout est dans le titre.
    J'ai un TImage et je voudrais lorsque l'utilisateur double-clique avec le bouton droit de la souris executer un évènement.
    Est-ce possible et si oui Comment faire alors ?
    Merci

  2. #2
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut DbClick
    Bonjour.

    Voici un code qui fonctionne. Si ça peut t'aider...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Const
       Clique  : Integer = 0;
     
    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin   //
       Timer1.Enabled := True;
       Inc(Clique);
       If Clique = 2 Then Caption := 'Bouton droit';
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
       Timer1.Enabled := False;
       Clique := 0;
    end;
    Fixer l'interval du TTimer à 400 ms, et la propriété Enabled à False par défaut.
    Rien n'est moins sur que l'incertain : Pierre DAC

  3. #3
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    Excuse. J'ai fait une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <div style="text-align: left;">Const
       Clique  : Integer = 0;
     
    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
     
    begin   //
       If Button = mbRight Then
        begin
             Timer1.Enabled := True;
             Inc(Clique);
             If Clique = 2 Then Caption := 'Bouton droit';
        end;
    end;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
       Timer1.Enabled := False;
       Clique := 0;
    end;
    </div>
    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Plus simple
    Donc le OnMouseDown ou Up
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (ssDouble in Shift)and(Button = MbRight) then
      Showmessage('');

  5. #5
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Ca marche bien. Merci.
    Par contre, j'ai l'impression que je ne pourrais plus utiliser le PopupMenu (qui s'exécute avec un seul clic droit), du moins le PopupMenu a l'air d'être prioritaire.

    Faudra que je fasse un choix alors.

    Merci encore à tous les 2.

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Citation Envoyé par Guigui_
    Ca marche bien. Merci.
    Par contre, j'ai l'impression que je ne pourrais plus utiliser le PopupMenu (qui s'exécute avec un seul clic droit), du moins le PopupMenu a l'air d'être prioritaire.
    En effet, je pensais que ceci pouvait faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
      P : TPoint;
    begin
      if (Button = MbRight) then begin
         If SsDouble in Shift then begin
         ////Instruction double click droit/////////////
         ShowMessage('test');
         end else begin
         P := Panel1.ClientToScreen(Point(x,y));
         PopupMenu1.Popup(P.X,P.Y); //Ne pas attribué le popup dans les propriétés du composant concerné
         end;
      end;
    Et non , ca na va pas non plus .

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    par contre, la solution avec timer permet de tester si le clic droit est resté simple et donc de lancer le popup
    Delphi 5 Pro - Delphi 11.3 Alexandria 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 !

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

Discussions similaires

  1. [Graphics View] Double clic droit de la souris sur l'en-tête d'un item
    Par skanderbahloul dans le forum Débuter
    Réponses: 1
    Dernier message: 20/11/2014, 11h56
  2. [AC-2003] Affecter une valeur par double-clic sur une zone de liste
    Par schamax dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/02/2014, 12h33
  3. Affecter une action sur le clic de la molette
    Par Djang0 dans le forum C++Builder
    Réponses: 1
    Dernier message: 27/08/2009, 17h59
  4. Réponses: 2
    Dernier message: 26/05/2008, 15h27
  5. [VBA-Excel]Empecher l'insertion d'une feuille par le clic droit
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/09/2006, 11h10

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