Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Traitement d'un champ de saisie. Mer 15 Sep 2010 - 7:27 | |
| Une petite astuce pour retarder le traitement d'une saisie dans un champ Edit Nous avons l'évènement on_change pour les champs de type Edit. Le pb qui peut se poser dans certains cas, c'est que cet évènement est déclenché à chaque appui sur une touche. Ce que je propose c'est de déclencher le traitement de 'on_change' au bout d'un certain temps d'inactivité du clavier. Par exemple, on saisi un nom et c'est seulement une fois que l'on a fini de saisir ce nom, que le traitement se déclenche.... Vous allez voir... c'est tout bête... - Code:
-
label Traitement label KeyboardTimer, ActiveKeyTimer
dim Text_nom%: Text_nom%=1 dim Edit_nom%: Edit_nom%=2 dim Memo_nom%: Memo_nom%=3
dim KeyboardTimer% : KeyboardTimer% = 402 dim KeyboardDelay% : KeyboardDelay% = 2000 : ' j'ai mis 2 secondes d'inactivité
alpha Text_nom%:caption Text_nom%,"Nom :":top Text_nom%,10: left Text_nom%,10 edit Edit_nom%:left Edit_nom%, width(Text_nom%)+20: top Edit_nom%,8 memo Memo_nom%:top Memo_nom%,50: left Memo_nom%,10 timer KeyboardTimer% : Timer_off KeyboardTimer% : Timer_interval KeyboardTimer%,KeyboardDelay%
on_change Edit_nom%, ActiveKeyTimer : ' ActiveKeyTimer est lancé à chaque appui
on_timer KeyboardTimer%,KeyboardTimer
END
' ------------------------------------------------------------ ' A chaque appui sur une touche : ' ------------------------------------------------------------ ActiveKeyTimer: timer_off KeyboardTimer% : ' on stoppe le timer qui déclenche le traitement timer_interval KeyboardTimer%,KeyboardDelay% : ' on réarme sa base de temps timer_on KeyboardTimer% : ' puis on le relance return
' ------------------------------------------------------------ ' Timer de déclenchement du traitement ' ------------------------------------------------------------ KeyboardTimer: Timer_off KeyboardTimer% : ' désactive gosub Traitement return
' ------------------------------------------------------------ ' La procédure de traitement du champ de saisie ' ------------------------------------------------------------ Traitement: item_add Memo_nom%,text$(Edit_nom%) return
Bon on peut améliorer le code en rajoutant une variable qui sera mis à jour par ActiveKeyTimer ou autres procédure qui permettra à KeyboardTimer de savoir QUI l'a déclenché et de lancer la procédure de traitement approprié. voila, voila.... Bonne journée ! | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Traitement d'un champ de saisie. Mer 15 Sep 2010 - 12:09 | |
| Intéressant. C'est fou ce qu'on peut faire avec des timers... | |
|