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

Langage Delphi Discussion :

Problème de message et position avec le curseur de la souris


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 34
    Points : 22
    Points
    22
    Par défaut Problème de message et position avec le curseur de la souris
    Bonjour à tous,

    Je développe une application et j’ai besoin de savoir à un moment donné si le curseur de la souris survole la Form ou si au contraire il est en dehors de la fiche J’ai bien sûr rechercheé des infos à ce sujet sur les forums et j’en un trouvé quelques uns qui aborde ce sujet. Voilà le code que j’ai modifié et mis dans mon application :

    Pour l’évènement OnMouseMove de la Form :

    [CODE]

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

    var
    Tag : TagTrackMouseEvent;
    b : Boolean;

    begin
    Tag.cbSize := sizeof(Tag);
    Tag.dwFlags := TME_LEAVE;
    Tag.hwndTrack := Self.Handle;
    Tag.dwHoverTime := 10;
    b := TrackMouseEvent(Tag);
    // Vérifier que B est True si nécessaire. Indique que TrackMouseEvent à fonctionné.
    end;

    J’ai placé ce code dans Private…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    procedure TForm1.WMMOUSELEAVE(var Message: TMessage);
     
    begin
     Label1.Caption := 'la souris a quitté la fiche';
    end;
    ...et j’ai un Timer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    procedure TForm1.Timer1Timer(Sender: TObject);
     
    begin
       Label1.Caption := 'la souris est dans la fiche';
       FormMouseMove(Self, [SSShift], 0, 0);  //Pour rafraîchir la position de la souris
    end;
    Effectivement, cela fonctionne bien…sauf que sur ma forme j’ai un TEdit, plusieurs TCheckBox, etc. Quand la souris passe sur la form, cela m’indique bien « la souris est dans la fiche » mais le survole d’un des composants affiche le message «'la souris a quitté la fiche' » alors que le curseur est bien positionné sur la fiche. J’i essayé tout de sorte de manip mais je n’arrive à comprendre pourquoi ? Merci pour votrer aide.

    Cordialement

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    car la souris est avant tout sur la fenêtre enfant et donc plus sur la fiche
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    Je me suis peut-être mal exprimé !

    Je n'ai qu'une fiche dans mon application avec des composants : TEdit, TCheckBox et TGroupBox. Quand je passe sur un GroupBox par exemple, il me dit que je suis hors de la fiche, ce qui n'est pas le cas. Si le curseur survole la fiche entre les composants, il m'indique bien que je suis sur la fiche et non pas dehors.

    En fait, j'ai besoin de cette information pour dire au Timer : je suis sur la forme dont tu bosses (Timer1.OnTimer := Timer1Timer) ou je ne suis pas sur la fiche alors tu ne travaille pas (Timer1.OnTimer := nil).

    C'est pas aussi simple à résoudre, merci pour vos idées !

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/08/2012, 10h28
  2. Problème de gestion de positions avec contraintes
    Par iGwendal dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/03/2010, 16h07
  3. [C#]Comment récuperer la position absolue du curseur de la souris?
    Par PerpetualSnow dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/08/2006, 11h13
  4. Problème avec un Curseur...
    Par notfoune dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/10/2005, 07h55
  5. [débutant] problème avec le curseur (sablier)
    Par bat dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 01/12/2004, 08h26

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