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 :

Action de la souris sur un contrôle


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Action de la souris sur un contrôle
    Salut à tous,

    Quelqu'un peut-il me montrer comment poser cette condition :si le pointeur de la souris passe sur une contrôle alors.... c'est à dire :
    if pointeur souris then.
    Je veux faire un code dans le OnMouseMove d'un Label.
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Je ne vois pas trop ton souci, puisque tu as déjà la solution...

    Tu mets ton code dans le OnMouseMove.
    Se produit quand l'utilisateur déplace le pointeur de la souris au-dessus d'un contrôle.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    Le forum était en maintenance donc je n'ai pas pu envoyer mon post. A présent je vous explique : je connait qu'il y' a l'évènement OnMouseMove. mais voilà ce que je veux concrètement :
    J'ai une label et dans son OnMouseMove j'ai écrit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm3.Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
     Label2.Font.Color := ClBlue;
      Label2.Font.Style :=[FsUnderline];
    end;
    Si le pointeur de la souris passe sur le label le code ci-dessus s'exécute. Maintenant si la souris n'est plus dessus que l'effet contraire se produise comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Label2.Font.Color := ClLMaroon;
      Label2.Font.Style :=[FsUnderline]; //Plus de soulignement par exemple
    Comme fonctionne les liens web. C'est pour cela que je vaut faire une condition. Je pense que vous m'avez un peu compris?.
    Merci pour ce votre soutien...

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    OnMouseLeave...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    J'utilise Delphi et j'ai pas OnMouseLeave. Je le trouve nul part dans l'aide. Est-ce pour une version de Delphi supérieur à la mienne?.

  6. #6
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    je l'ai sous delphi 7

  7. #7
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Ok, c'est bien dommage pour moi alors...

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Tu peux toujours dériver un nouveau composant et y ajouter la gestion de ces deux messages:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure CMMouseEnter(var Msg: TMessage); message CM_MouseEnter;
    procedure CMMouseLeave(var Msg: TMessage); message CM_MouseLeave;

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    c'est assez facile a mettre en place

    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
    23
     
    TLABEL = Class(StdCtrls.TLABEL)
      private
       FOnMouseEnter  :TNotifyEvent;
       FOnMouseLeave  :TNotifyEvent;
    protected
       procedure WndProc(var Message : TMessage); override;
     ... 
    published
      property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
      property OnMouseLeave:TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    end;
     
    procedure TLABEL.WndProc(var Message : TMessage);
    begin
      case Message.Msg of
      // La souris 'entre' sur le composant
      CM_MOUSEENTER : if assigned(FOnMouseEnter) then FOnMouseEnter(self);
      // La souris 'sort' du composant
      CM_MOUSELEAVE : if assigned(FOnMouseLeave) then FOnMouseLeave(self);
      end;
       inherited; // Continuer à faire passer le message
    end;

    @+ Phil
    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

  10. #10
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    J'ai quelques problèmes à l'application de ton code. surtout cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    protected
       procedure WndProc(var Message : TMessage); override;
    ou faut-il la mettre?. Si je le met après private j'ai des erreurs.

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    quel genre d'erreur ?

    @+ Phil
    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

  12. #12
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Ceci
    [Erreur] Menu_Gle.pas(200): Déclaration forward ou external non satisfaite : 'TForm3.WndProc'

  13. #13
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut


    tu n'as pas bien lu mon source c'est le composant que je modifie pas la form
    @+ Phil
    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

  14. #14
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Franchement je ne m'ensors pas toujours.

    Après la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    type
      TForm3 = class(TForm)
     ........
    a la fin j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type
    TLABEL = Class(StdCtrls.TLABEL)
      private
       FOnMouseEnter  :TNotifyEvent;
       FOnMouseLeave  :TNotifyEvent;
    protected
       procedure WndProc(var Message : TMessage); override;
    published
      property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
      property OnMouseLeave:TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    end;
    Peut-être que ce n'est pas le bon endroits?...

  15. #15
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    met le de cet manière si tu ne veut pas creer un nouveau composant

    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
    23
    24
    25
    26
    27
    28
    29
     
    type
    TLABEL = Class(StdCtrls.TLABEL)
      private
       FOnMouseEnter  :TNotifyEvent;
       FOnMouseLeave  :TNotifyEvent;
    protected
       procedure WndProc(var Message : TMessage); override;
    published
      property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
      property OnMouseLeave:TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    end; 
     
      TForm3 = class(TForm)
     ........
    implementation 
     
    procedure TLABEL.WndProc(var Message : TMessage);
    begin
      case Message.Msg of
      // La souris 'entre' sur le composant
      CM_MOUSEENTER : if assigned(FOnMouseEnter) then FOnMouseEnter(self);
      // La souris 'sort' du composant
      CM_MOUSELEAVE : if assigned(FOnMouseLeave) then FOnMouseLeave(self);
      end;
       inherited; // Continuer à faire passer le message
    end;
     
    ...
    @+ Phil
    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

  16. #16
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    OK, c'est bon il n' ya plus erreur. Voilà ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm3.Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if assigned(FOnMouseEnter) then
         begin
           Label2.Font.Color := ClBlue;
           Label2.Font.Style :=[FsUnderline];
         end
      Else
        begin
          Label2.Font.Color := ClMaroon;
          Label2.Font.Style :=[];
        end;
    end;
    Je constate que le FOnMouseEnter ne s'exécuta pas pour la couleur et le soulignement.

  17. #17
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut
    bon on reprend je t'ai fait creer des propriete dans un Tlabel
    c'est pour s'en servir voici on possibilite d'utilisation

    Premièrement tu créer des methodes dans ta forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TForm3 = class(TForm)
      ...
      Procedure  DoLabelMouseEnter(Sender : TObject); 
      Procedure  DoLabelMouseLeave(Sender : TObject);
      ...
    end;
    deuxièmement tu assigne les methodes à ton ou tes label dans le formcreate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Constructor TForm3.FormCreate;
    begin
      Label2.OnMouseEnter := DoLabelMouseEnter;
      Label2.OnMouseLeave := DoLabelMouseLeave;
      ...
      Label4.OnMouseEnter := DoLabelMouseEnter;
      Label4.OnMouseLeave := DoLabelMouseLeave;
    end;
    enfin tu defini dans les methode de ta form ce que tu veut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Procedure  TForm3.DoLabelMouseEnter(Sender : TObject); 
    begin
       (Sender as TLabel).Font.Color := ClBlue;
       (Sender as TLabel).Font.Style :=[FsUnderline];
    end;
     
    Procedure  TForm3.DoLabelMouseLeave(Sender : TObject);
    begin
       (Sender as TLabel).Font.Color := ClMaroon;
       (Sender as TLabel).Font.Style :=[];
    end;

    @+ Phil
    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

  18. #18
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    Si je fais un ajout des ses 2 lignes dans la classe Tform3 il y'a une erreur :[Erreur] Menu_Gle.pas(106): Déclaration forward ou external non satisfaite : 'TForm3.DoLabelMouseEnter'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TForm3 = class(TForm)
      Procedure  DoLabelMouseEnter(Sender : TObject); 
      Procedure  DoLabelMouseLeave(Sender : TObject);
    end;

  19. #19
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    il faut lire la reponse dans son entier

    le compilateur dit qu'il ne trouve pas l'implémentation des ligne déclaré
    il se trouve que je t'ai fourni cet déclaration

    regarde bien tu doit avoir un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Procedure TForm3.do...
    @+ Phil
    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

Discussions similaires

  1. accorder une action lors du passage de la souris sur une zone de l'image
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 29/09/2010, 20h19
  2. Réponses: 1
    Dernier message: 23/03/2010, 01h36
  3. Positionner la souris sur un contrôle.
    Par curt dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/09/2008, 20h58
  4. Actions souris sur tableau Flex de ActiveX
    Par zeus7857 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 13/08/2008, 14h42
  5. Réponses: 6
    Dernier message: 10/07/2008, 13h03

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