Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Comment détecter la fin d'activation de la molette ? [ Système / Périphérique ] (geocad)

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é 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 Enumérer des contrôle [ par John Dogget ] Bonjour à tous. J'ai dans une forme plusieurs checkbox sur lesquelles je fais exactement le même traitement. Mon problème est que je suis obligé de r Fichier Wav [ par MAsterC ] Quand je fait ceci; sndPlaySound(PChar('son.wav'), SND_LOOP); sa joue mon wav, mais à la fin il ne recommence pas la boucle? et en plus mon fichier wa translation avec molette de la souris [ par aureliensm ] Bonsoir, j'aurais besoin d'aidej'ai mon cube avec lequel je fais une rotation d'un certain angle en fonction des touches haut bas gauche droitepar c probleme de Vitesse ou plutot probleme de comprehension ... [ par Nicolas___ ] voila mon probleme les types sont definis avant puis ds une procedure il y a ceci :=varScan,ScanIMG : TypePRGBArray;x,y:integer;ir,iv,ib,mv,mb,mr,Fin: Récupérer le code retour d'un exe lancer par CreateProcess [ par furax13 ] bonjour,depuis une application Delphi, je lance un exécutable C++avec un fichier de données comme paramètr. Cet exe C++  retourne un entier qui permet Gérer la molette de la souris en multisélection dans un dbgrid [ par sylviecl ] Bonjour J'ai un dbgrid dans ma form et j'avais modifié mon prog pour qu'il gère la molette.Jusque là tout est ok.Mais maintenant j'ai besoin de gérer Détecter la connexion et la déconnexion d'une clé usb [ par bobstien ] Bonjour, j'ai un programme avec un menu déroulant pour le choix des lecteurs, mais lorsque j'incère une clé usb il ne la détecte pas automatiquement.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,811 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.