Aide - Recherche - Membres - Calendrier
Version complète : aide sur les champs de saisie
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
Destino
Salut à tous,

jsuis vraiment désolé de vous embêter mais j'ai besoin de vous pour un coup de main.
Comment faire pour détecter l'ajout d'un caractère dans un champs de saisie? en d'autres termes quel événement qu'il faut traiter chaque fois qu'un caractère est rajouté dans un champs?
Merci à vous
Patrice
De memoire (je suis dans un bus, je ne peux pas verifier) :
- Cet evenement n'exlste pas
- Il faut traiter l'evenement fldEnterEvent (et son alter ego fldExitEvent) pour savoir si le focus est sur le champ
- Et traiter les caract%-1res saisis au fur et a mesure (keyDownEvent) lorsque le champ a le focus.
Destino
CITATION
- Et traiter les caract%-1res saisis au fur et a mesure (keyDownEvent) lorsque le champ a le focus.

Excuse-moi mais j'ai pas compris ta phrase...

j'essai d'utiliser nilEvent. je ne sais pas si c une bonne idée
Patrice
Tu traites les keyDownEvent, donc les saisies de texte, au fur et à mesure et AVANT que le champ ne soit mis à jour (c'est ce que je fais pour la saisie "pseudo-prédictive" de Métro).

Le nilEvent peut effectivement fonctionner mais n'est pas trop recommandé :
- tu va pomper la batterie régulièrement (par défaut, la CPU se met en bas régime, s'il n'y a pas d'événement pendant un certain temps) et l'utilisateur risque de t'en vouloir icon_lol2.gif
- selon le délai choisi, soit il va y avoir des effets bizarres pour l'utilisateur (s'il est long), soit tu va plomber la réactivité de l'appli (s'il est court).
- Si a un moment donné, le système a beaucoup d'événements à gérer, tu ne verras pas passer de nilEvent jusqu'à ce que ça se calme...
Destino
je vais essayer de suivre tes conseils.
Merci bcp pour l'idée
Destino
J'ai un fatal error "line 72:NUL string passed" dans c code quand j'appel DmFindDatabase(...).
j'avoue que je ne sais pas pourquoi.
De plus la variable NewText reste vide. pourtant j'ai bien mis un caractère dans mon champs de saisie.
Merci de votre aide

case keyDownEvent:
LocalID dbID;
UInt16 k;

StrCopy(NewText,FldGetTextPtr(fldP));
dbID = DmFindDatabase(0,"RechercheDB");
if(dbID!=0)
DmDeleteDatabase (0,dbID);
.......
.......
break;
Patrice
Hum... Comme écrit précédemment : keyDownEvent est passé AVANT traitement par le système. Donc le champ ne contient pas à ce moment là le caractère saisi. Et, fatalement, au démarrage et avant toute saisie, le pointeur sur le texte est NULL.
Destino
Merci BCP patrice.
j'ai fini par trouver comment récupérer le caractère (Char t = eventP->data.keyDown.chr;)
Merci
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.