begin process at 2010 02 09 22:18:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Système

 > 

Périphérique

 > 

Comment détecter la fin d'activation de la molette ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment détecter la fin d'activation de la molette ?

mardi 23 octobre 2007 à 11:56:36 | Comment détecter la fin d'activation de la molette ?

geocad

Bonjour,
J'ai une petite appli dévellopée en Delphi 5, dans laquelle je fais un traitement rapide mais provisoire quand on fait rouler la molette de la souris. Pour ça, c'est OK, j'utilise OnMouseWheel(...) Mais le Hic, c'est que je dois faire un traitement plus fin, dès qu' on arrête la manipulation de la molette. Ce serait facile s'il existait un évènement qu'on pourrait appeler "OnMouseWheelStop", mais voilà, j'ai pas trouvé, et je ne sais pas trop comment faire pour détecter la fin de la manip de la molette.
Quelqu'un a-t-il une idée?
mercredi 24 octobre 2007 à 13:25:19 | Re : Comment détecter la fin d'activation de la molette ?

geocad

Ca bouge pas beaucoup ici. Serait-ce à cause de la rentrée???
mercredi 24 octobre 2007 à 22:11:27 | Re : Comment détecter la fin d'activation de la molette ?

Caribensila

Membre Club
Salut,

Tu voudrais faire un événement avec un non-événement, quoi.

Et tu t'étonnes que personne ne bouge?

En fait, quand on fait rouler la molette, l'événement n'arrête pas d'arrêter et de recommencer...

mercredi 24 octobre 2007 à 22:48:37 | Re : Comment détecter la fin d'activation de la molette ?

Caribensila

Membre Club

Essaie ça quand même :

if ssMiddle in Shift then begin
    Repeat
     
//Traitement  rapide
      Application.ProcessMessages;
    until (GetAsyncKeyState(VK_MBUTTON) = 0
);//On teste l'état du bouton gauche.
 
//Traitement fin
  end;

mercredi 24 octobre 2007 à 22:55:01 | Re : Comment détecter la fin d'activation de la molette ?

Caribensila

Membre Club
Bien sûr, il faut presser la molette pendant tout le temps du traitement rapide...
mercredi 24 octobre 2007 à 23:30:50 | Re : Comment détecter la fin d'activation de la molette ?

Caribensila

Membre Club
Oups!
...
... //On teste l'état du bouton central.
...

Mille excuses
mercredi 24 octobre 2007 à 23:43:47 | Re : Comment détecter la fin d'activation de la molette ?

geocad

Mon soi-disant non-évènement, n'appelait pas forcément une non-réponse. Je vais pas dire à ceux qui utilisent mon appli de presser un bouton pour signaler qu'on a fini de tourner la molette! Ca serait de la non-informatique...
En tout cas le besoin que j'ai exprimé existe, et c'est même une solution élégante pour faire certains effets en DAO.

Ma solution: Un timer avec un intervale de 100 milli sec
var WheelOn : boolean = false;
var wheeltime : TDateTime = 0.0;
 
procedure TForme1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
 
TraitementProvisoireRapide; //
 
WheelOn := true;
Timer1.enabled := true; // Traitement Final dans OnTimer
Handled := true;
end;

procedure TForme1.Timer1Timer(Sender: TObject);
begin
// détection de la fin d'activation de la molette
// pour se substituer à un évènement manquant: "OnMouseWheelStop"
if WheelOn thenbegin WheelOn:=false; wheeltime := Now; exit; end;
 
//ici la molette n'a pas été activée depuis Timer1.interval milli sec
// On se donne un délai supplémentaire pour assurer
if( Now - wheeltime ) >0.0000023thenbegin{200 milli sec (1 s = 0.0000115)}
Timer1.enabled := false;
wheeltime := 0.0;
 
TraitementFinal;
 
end;
end;

 

Qui dit "mieux" ?
jeudi 25 octobre 2007 à 14:25:46 | Re : Comment détecter la fin d'activation de la molette ?

Caribensila

Membre Club

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
                WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  if ssMiddle in Shift then begin
      Repeat
        
  //...Traitement  rapide...
          Application.ProcessMessages;
      Until (GetAsyncKeyState(VK_MBUTTON) = 0 );
     
//...Traitement final...
  end;
end;


C'est concis, pas de Timer, pas de variables globales...

Qu'est-ce qui ne te plaît pas?
Que l'utilisateur doive appuyer sur la molette centrale?

jeudi 25 octobre 2007 à 18:12:40 | Re : Comment détecter la fin d'activation de la molette ?

geocad

Réponse acceptée !
Ben Oui


Cette discussion est classée dans : fin, traitement, détecter, activation, molette


Répondre à ce message

Sujets en rapport avec ce message

Détecter Fin de WindowsMediaPlayer [ par Also know as ] Bonjour, Voilà je me renseigne pour savoir s'il était possible de détecter quand le lecteur Windows Media à fini de lire sa vidéo Je m'explique : Détecter la fin de redimensionnement [ par Indelphini ] Bonjour (bonsoir...) je voudrais bloquer la mise à jour de mon interface pendant le redimensionnement de la forme. Je sais détecter le début du redi génératuer de nombre dans un memo [ par JackNUMBER ] Bonjour !! Voici mon problème: j'ai un edit nommé debut, un autre nommé fin, un memo nommé memo1 et un dernier edit nommé structure. Dans le medit deb Comment utiliser l'instruction "Goto"? [ par Manthis ] Salut,Je voudrais savoir comment utiliser l'instruction Goto.Je sais qu'en VB il suffit de faire:Goto Fin...(et plus loin dans le code)...Fin: instruc pb de Query [ par JesseJames ] Salut,Voilà mon problème, j'ai une application Delphi liaison avec base de données Access. Pour afficher mes données, j'extrait les données dans Query Comment avoir ma cle d'activation de delphi 6 personel [ par apz ] Salut a tous, Pour avoir ma cle d'activation j'ai visité trois fois le site de borland (lieu public et pas de machine) et a chaque fois il m'envoit to Ini : Saut de ligne à la fin d'une section [ par Bruto ] Salut,Je recherche une petite astuce :Je manipule des fichiers ini et je voudrais séparer chaque section ( [Key] ) par un saut de ligne.J'ai essayer d comment détecter un son [ par Bruto ] Je voudrais détecter si l'utilisateur joue un son, une musique sur son pc.Par ex, détecter s'il écoute un mp3 avec winamp, ou mediaplayer, ...Y a-t-il TServerSocket en Multithread [ par Cyrille2 ] Salut... je bloque à mort sur un bug... en faite, impossible de lire le socketstream voila la procédure : Code: procedure TServerThread.ClientExecute; Expressions régulières [ par DiableHautain ] Bonjour tout le monde,Simple petite question:Peux-t-on utiliser des expressions régulières en Delphi (à la manière de VBScript ou JScript), afin de re


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales