Comment obtenir le temps de pression d'un bouton qu'on maintient enfoncé ?
korf
Messages postés5Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention31 décembre 2005
-
26 déc. 2005 à 03:06
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
1 janv. 2006 à 02:40
bonjour à vous nombreux delphistes, je suis un newbie en delphi et la solution à mon problème est certainement très simple mais j'ai vraiment besoin de savoir faire ça pour réaliser mon projet. Merci de votre aide
www.korf.c.la
A voir également:
Comment obtenir le temps de pression d'un bouton qu'on maintient enfoncé ?
moldov
Messages postés165Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention10 novembre 2008 26 déc. 2005 à 11:15
Salut,
Grace aux evenements OnMouseDown et OnMouse Up.
Tu peux par exemple recupérer l'heure en milliseconde lorsque que l'evenement OnMouseDown a lieu et recupérer l'heure lorsque que l'evenement OnMouseUp intervient et en Faisant la différence des deux temps, tu recupère le temps d'appui du bouton.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202237 27 déc. 2005 à 22:22
un exemple :
var PressTime : cardinal;
procedure TForm1.Button1MouseDown();
begin
PressTime := GetTickCount;
end;
procedure TForm1.Button1MouseUp();
begin
PressTime := GetTickCount - PressTime;
end;
procedure Tform1.Button1Click();
begin
Button1.Caption := format('%d ms',[PressTime]);
end;
<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ClickTime = false then begin
presstime := GetTickCount;
ClickTime := true;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if ClickTime then begin
presstime := GetTickCount - presstime;
button1.Caption := format('%d ms',[presstime]);
ClickTime := false;
end;
end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// MouseUp intervient aprés MouseClick
// Si la souris est relachée en dehors du boutton
// on renvois 0. en sachant qu'il est humainement
// impossible de faire un temps de 0ms de click
// nous avons testé, il y'a ~15ms minimum de reaction
if ClickTime then begin
PressTime := 0;
button1.Caption := format('%d ms',[presstime]);
ClickTime := false;
end;
end;
end.
<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
korf
Messages postés5Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention31 décembre 2005 29 déc. 2005 à 03:54
Merci beaucoup ça marche impec
(bon maintenant dans mon prog j'ai un blem de rafraichissement d'image (ça clignote quand je déplace un Timage dans une boucle Timer) et pi j'arrive pas a charger des gifs avec un effet transparence mais tout ça c'est une autre histoire ..
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 31 déc. 2005 à 17:53
ok, ça me fait plaisir mais le spécialiste du DoubleBuffered c'est Japee (c'est grace à lui que je connais cette astuce) il faut rendre Caesar ce qui lui appartient
Je vous souhaite à toutes et à tous une bonne fin d'année 2005 et un bon début pour l'année 2006
Et pour éviter ce genre de désagrément il faut boire avec modération
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 1 janv. 2006 à 02:40
Pourquoi s'en priver c'est tellement mieux avec
ben moi vu l'heure, je serais pas le dernier sur ce je vous souhaite à toutes et à tous une
Bonne et heureuse année 2006 et une bonne santé et beaucoup de codes sources utiles et inventifs.