danielator
Messages postés3Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention14 novembre 2004
-
12 nov. 2004 à 11:56
danielator
Messages postés3Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention14 novembre 2004
-
12 nov. 2004 à 23:39
Comment faire pour obtenir la répétition d'un bouton (TBitBtn ou TSpeedBtn) tant qu'il reste enfoncé ?
En effet l'événement OnClick est envoyé quand on relache la souris. L'événement OnKeyDown n'est envoyé que suite à une action clavier ...
Je cherche un événement "OnBoutonDown" par exemple
danielator
Messages postés3Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention14 novembre 2004 12 nov. 2004 à 23:39
Merci pour les réponses les gars MAIS ....
non
ce que je cherche, c'est faire un bouton comme une touche du clavier :
1) quand on click gauche dessus, il s'enfonce et il agit
2) tant qu'on garde le click gauche enfoncé, le bouton reste enfoncé et l'action se répéte
3) quand on relache le bouton de la souris, le bouton remonte
OK, je viens de vous faire au ralenti ce qu'on fait sans arret !
Mais la difference est que l'événement OnClick des TSpeedButton se déclenche quand on relache le bouton de la souris, c'est à dire quand sa proprité Down est sur FALSE.
J'ai quand même fais quelque-chose d'approchant, mais avec un TBitBtn, qui lui a des événements OnMouseDown et OnMouseUp pour mettre en route un timer, etc
Mais ça deviens très lourd si on veux aussi que ça marche quand on actionne le bouton avec les touches du clavier, par ex qd le bouton à le focus et qu'on appuie sur Espace.
Il faut alors utiliser les OnKeyDown et OnKeyUp et filtrer les Key ...
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 12 nov. 2004 à 12:27
Tout d'abord "Bonjour" :)
tu peux utiliser un TSpeedButton avec "GroupIndex" >0 et "AllowAllUp" à true.
Puis quand on clik sur le bouton, il deviens enfoncé, là, tu actives un timer qui va boucler sur une procedure tant ke le bouton est enfoncé.
si on reclic sur le bouton, il devient relevé, le timer dois etre desactivé, la procedure ne boucle plus.
si tu veux tester fais ça :
Cree un nouveau projet, pose sur ta form :
- un TSpeedButton (onglet Additionnel)
- un TMemo (onglet standard)
- un TTimer (onglet system)
dans l'inspecteur de proprietes de ton SpeedButton, mets "Groupindex" à 1 et "AllowAllUp" à true
dans l'evenement "onclick" du bouton mets :
timer1.Enabled := speedbutton1.Down;
dans l'evenement "OnTimer" de ton Timer mets :
memo1.Lines.Add(timetostr(now));
voila ça marche :)
sinon, tu veux utiliser ce systeme pour boucler quoi ??
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 12 nov. 2004 à 12:34
Ha, je viens de voir ton nombre de messages ici, je me dis que tu dois surement debuter, je vais commenter un peu plus alors :
- timer1.Enabled := speedbutton1.Down;
timer1.enabled est un Boolean (true ou false), speedbutton1.down aussi. En mettant ce code, j'active le timer si le bouton est enfoncé, et il se desactive si il ne l'est plus.
C'est comme si j'avais tapé :
if SpeedButton1.down = true then timer1.enabled := true else timer1.enabled := false;
Mais c'est plus court :)
- memo1.Lines.Add(timetostr(now));
j'ajoute dans mon memo l'heure actuelle (automatikement convertie en String - chaine de caracteres - par la fonction TimerToStr())
c'est ici que tu dois mettre ta procedure qui va se repeter, tu peux y mettre ce que tu veux mais fait attention au temps d'execution de cette procedure, il ne faut pas kelle soit trop longue ! Pour l'exemple j'ai fait simple, precise ce que toi tu cherches, merci
ps : pars defaut le TTimer a une intervalle de 1000ms (1 seconde) si tu veux ke la procedure se repete plus d'une fois par seconde, diminue cette intervalle, 500 pour 2fois, 100 pour dix fois etc
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 12 nov. 2004 à 16:35
ha ouè qd meme ! il est vrai ke si je mets 10 à mon timer, il ne sera pas precis, j'avais remarqué...
merci pour le lien :D
on merite une "reponse acceptée" non ? lol
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)