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 :

Tapplication.Processmessages..


Sujet :

Langage Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    760
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 760
    Points : 499
    Points
    499
    Par défaut Tapplication.Processmessages..
    Bonjours a tous , Tapplication.ProcessMessages permet d'executer mes messages en files t'attente..

    Cela ne semble pas fonctionner avec les evenements OnMouseLeave et OnMouseEnter .

    Quelqu'un connait il une astuce pour forcer des evements lors d'un Tapplication.ProcessMessages.

    merci

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 678
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 678
    Points : 7 098
    Points
    7 098
    Par défaut Re: Tapplication.Processmessages..
    Citation Envoyé par petitcoucou31
    Cela ne semble pas fonctionner avec les evenements OnMouseLeave et OnMouseEnter .
    Tu es sûr que tes évènement ont bien été déclanchés ?

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    760
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 760
    Points : 499
    Points
    499
    Par défaut
    En fait pour tester ces evements j'utilise un TLabel , meme si mon probleme vient d'un autre composant , il utilise les meme evenement

    j'ai les 4 routines suivantes ( ultra simple ).
    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
     
    Procedure TForm1.boucle ;
    repeat 
      application.processMessage;
    until false ; 
     
    procedure TForm1.Label1MouseEnter(Sender: TObject);
    begin
       Label1.Color:=clred;
       Label2.Caption:='Enter';
    end;
     
    procedure TForm1.Label1MouseLeave(Sender: TObject);
    begin
       Label1.Color:=cllime;
       Label2.Caption:='Leave';
    end;
     
    procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
       Label2.Caption:='Move';
    end;
    Je declanche mes evements avec ma souris donc oui ils sont bien declanchés , puisque çà marche quand la boucle est pas active .

    Par contre quand la boucle est active.

    1° quand je survole "label1" , il devient rouge , donc je passe bien par l'evenement OnmouseEnter , mais çà ne change pas la valeur de "label2" ??

    2° quand je survole plus "label1" , il passe pas au vert et je change pas non plus "label2" , donc je suposse ne pas passer par mon OnMouseLeave

    3° le "label2" change a tout les coup quand il est dans le OnMouseMove


    J'ai juste contaté que les message entre les evenement OnMouseLeave,
    , OnmouseEnter et OnMouseMove ne sont pas les meme , peut etre cela a t il un insidence sur le Tapplication message ??

    Pour l'instant je sais pas !!

    voila ou j'en suis de mes investigations

    bye

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 485
    Points
    485
    Par défaut
    A mon avis, ca vient du fait que les OnMouseEnter et OnMouseLeave sont des messages de Delphi.
    En principe, quand on implemente OnMouseLeave et OnMouseEnter, on utilise les messages CM_Enter et CM_Leave qui sont des messages special Delphi (non Windows).

    Or, application.ProcessMessage dis a l'application de traiter les messages dans la file d'attente de WindowProc et ce n'est pas la WindowProc qui recoit les messages de type Cm_xxx donc OnMouseLeave et OnMouseEnter ne sont donc pas declenches.

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    760
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 760
    Points : 499
    Points
    499
    Par défaut
    j'en etais arrive un peu aux memes explications que les tiennes , donc il me reste a traiter ce qui se passe dans mes evenements OnMouseleave et OnmouseEnter dans des evenements traiter par Application.ProcessMessages ... , a moins que je trouve mieux !

    merci quand meme et bye.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/08/2009, 15h15
  2. Réponses: 12
    Dernier message: 27/10/2006, 09h51
  3. doevents ou processmessage
    Par fbalien dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2006, 13h51
  4. [VBA] [Word] processmessage et optimisation de code
    Par Stef.web dans le forum VBA Word
    Réponses: 2
    Dernier message: 14/12/2005, 19h18
  5. problème avec Application->ProcessMessages()
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/08/2005, 10h27

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