PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → timer et variables
timer et variables
Iniciado por blacksun, 05,jun. 2019 15:12 - 4 respuestas
Miembro registrado
26 mensajes
Publicado el 05,junio 2019 - 15:12
voici mon problème : je veux vérifier toutes les 0.5s que le champs à été ou non modifié or ds que je rentre une lettre dans le champ SAI_saisie_utilisateur j'ai une erreur 1027(j'ai pas trouvé de correspondance pour ce code erreur )
SI Timer("COL_modification_saisie_utilisateur.modification_saisie_utilisateur(SAI_saisie_utilisateur)",50) = 1 ALORS
gMonAdresse.ConnexionAPIChargerTabAdresseLecturePremiereAdresse(SAI_saisie_utilisateur)
RemplirChampsAuto()
SINON
FIN


sachant que :
j'ai testé en mettant que
SI Timer("modification_saisie_utilisateur(SAI_saisie_utilisateur)",50) = 1 ALORS
gMonAdresse.ConnexionAPIChargerTabAdresseLecturePremiereAdresse(SAI_saisie_utilisateur)
RemplirChampsAuto()
SINON
FIN



code de la fct modification_saisie_utilisateur:
Procedure GLOBALE modification_saisie_utilisateur(saisie_User)
SI saisie_User..Modifié = Faux ALORS// saisie non modifié
Trace("faux")
RETOUR = 1
SINON
Trace("vrai")
RETOUR = 0
FIN



toutes aide est la bienvenue
Publicado el 05,junio 2019 - 16:10
Bonjour blacksun,
Ton problème viens de ton appel a la fonction Timer.
Cette fonction ne peut pas appeler des procédures avec paramètres.
Sinon je te conseillerai d'utiliser la procédure "a chaque modification" de ton champ de saisie.
Miembro registrado
1.330 mensajes
Publicado el 05,junio 2019 - 16:32
Bonjour Blacksun,

Pourquoi utiliser un Timer alors qu'il suffit de mettre le code de ta procédure dans le code de modification de ton champ ?
Attention cette partie n'est pas présente par défaut dans les codes, il faut le rajouter.

Bon Dev
Daryl

--
http://www.concept4u2.com
Miembro registrado
26 mensajes
Publicado el 05,junio 2019 - 16:49
Ce que je fais c'est que j'ai rajouté le traitement touche relâché mon timer à fini par marcher mais je suis confronté à un autre problème :
SI restimer ALORS
FinTimer(restimer)
restimer=0
FIN
restimer=Timer(modification_saisie_utilisateur,500)

SaisieAssistéeOuvre(SAI_saisie_utilisateur)
SaisieAssistéeAjoute(SAI_saisie_utilisateur,gMonAdresse.Struc_STAPI.sCity)
SaisieAssistéeAjoute(SAI_saisie_utilisateur,gMonAdresse.Struc_STAPI.sCodepostal)
SaisieAssistéeAjoute(SAI_saisie_utilisateur,gMonAdresse.Struc_STAPI.sCodeInsee)
SaisieAssistéeAjoute(SAI_saisie_utilisateur,gMonAdresse.Struc_STAPI.sName)

la saisie assisté m’ouvre beaucoup de champ blanc avant de me fournir les champs que je souhaite de plus si je veux sélectionner une adresse que me fournit la saisie assisté je dois le faire avant la fin du timer... comment modifié cela?
Miembro registrado
1.330 mensajes
Publicado el 07,junio 2019 - 16:56
Salut Blacksun,

1. Je ne vois pas pourquoi tu t'entêtes à utiliser un timer ?
2. Tu utilises très mal tes timer, je pense que tu n'as pas encore compris la philosophie de celui-ci :D
2.1 Erreur 1: Le résultat renvoyer est un entier allant de 0 à ..., donc
SI restimer ALORS
.....
FIN


- Si restimer = 0 => Faux
- Si restimer = 1 => Vrai
- si restimer = 2 => Ce n'est plus un booléen, même si ça fonctionne c'est comme ça qu'on a des résultats qui peuvent donner n'importe quoi et qui seront difficile a trouver, donc au minimum fait le test suivant qui donnera toujours un résultat booléen:

SI restimer > 0 ALORS
.....
FIN


3. Erreur 2: on utilise pas de cette manière les fonctions SaisieAssistée..........
3.1 Utilise d'abord SaisieAssistéeSupprimeTout() avant de commencer
3.2 Utilise ensuite les SaisieAssistéeAjoute()
3.3 Utilise en dernier SaisieAssistéeOuvre()

Voilà, donc il faut toujours bien lire la documentation, ça évite souvent pas mal de problème

Bon Dev
Daryl

--
http://www.concept4u2.com