|
comment simuler un enter (return ) par programmation |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
J'ai regle les autres problemes voir probleme de saisie dans une table
Comment simuler la touche entree (return)par programmation pour passer pour passer a l'autre ligne sans intervention humaine voir fonctionnement
Ce que je veux c'est de presenter le code barre au lecteur et que l'information s'incrive direcetement dans la table aux fur et a mesure de la presentation du code barre aux lecteurs sans manipulation du clavier ni de la souris
J'ai essayer envoietouche de toute les manières
// **************** Fonctionnement ************************** 1 - ouverture de ma fenetre directement en saisie sur le champs NoTag 2 - via la lecture du port renseigne NoTag qui via une requette alimente Nom et description 3 - Presentement il faut que je frappe la touche enter pour changer de ligne Normalement le fait d'alimenter par le code barre devrait suffire donc comment simuler a la reception de la nouvelle saisie de NoTag le retour qui a besoin pour continuer son traitement ou le clic sur le bouton gauche de la souris si vous avez une idee ,une remarque ,un bout de code ,je suis a bout
J'ai une Table memoire alimenter par le port serie Ma table contient 3 colonne soit NoTag ,Nom et Description NoTag est en saisie et les autre en affichage alimente par une requete
Pour assigner à la touche ENTREE l'action de générer une nouvelle ligne dans la colonne, - dans le détail de la table, cocher "Retour à la ligne par ENTREE" - dans le détail de la colonne NoTag,Defilement Retour a la ligne automatique
// ******************** Code ****************************
// ************** Initalisation de Table ****************
DonneFocus(Table.NoTag) // ouverture de la table sur la colonne NoTag
// ***************** initialisation de NoTag *************
SRECEPTION() //fonction qui alimente table.NoTag
// ***************** entree de NoTag **************
// **************** sortie de NoTag ***************
// Initialise la requête SI PAS HExécuteRequête(REQ_VetementTag,hRequêteDéfaut,NoTag) ALORS Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()) RETOUR FIN
// lecture du premier enregistrement de la requête HLitPremier(REQ_VetementTag,NoTag)
NoTag = REQ_VetementTag.NoTag Prenom = REQ_VetementTag.Prenom Nom = REQ_VetementTag.NomEmployer Description = REQ_VetementTag.DescService
HAnnuleDéclaration(REQ_VetementTag)
// permet de d'aller sur la prochaine ligne EnvoieTouche("{TAB 3 }",Table.NoTag) // meilleur fonctionnement //EnvoieTouche("{ENTREE }",Table.NoTag)
// reprend la possession de la ligne RepriseSaisie(NoTag) //ecranpremier(table.NoTag)//fontinnement identique RepriseSaisie(NoTag)
Contribution le : 21/05/2009 03:19
Edité par lass1250 sur 21/5/2009 3:46:37
|
|
|
Re: comment simuler un enter (return ) par programmation |
|
ChefDeProjet WDF
Inscrit: 29/05/2007 17:03
De Sassenage
Post(s): 180
|
avez vous essayé la méthode postmessage?
Contribution le : 22/05/2009 09:09
|
_________________
be aware
|
|
Re: comment simuler un enter (return ) par programmation |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
Je vous remercie pour vos reponses mais rien vas
windev 14 26 t derniere version windows xp sp3
Avec le trace je n'ai aucun probleme je presente le media a la lecture et il s'affiche sans probleme de retour
Voila la trace 00D00373EFB8<\r><\n>
evenement (buffers) longeur fixe 14 caracteres dont:
12 caractere 00D00373EFB8 1 caractere carriage return <\r> 1 caractere line feed <\n> Donc 14 caracteres
Dans la description j'ai limiter a 12 13 14 caractere la longeur de NoTag
j'ai essayer postmessage j'ai ajouter tableajouteligne j'ai creer un bouton avec executetraitement(bouton,trclic)
J'ai deja effectuer des logiciel avec des lecteurs Aussitot que le rc ou rc + lf est recu il change automatiquement
J'ai peut etre une erreur dans la desciption de la fenetre ou je place mon code pas a la bonne position Le trace lui fonctionne tres bien
je suis desespere
Contribution le : 25/05/2009 23:32
|
|
|
Re: comment simuler un enter (return ) par programmation |
|
ChefDeProjet WDF
Inscrit: 29/05/2007 17:03
De Sassenage
Post(s): 180
|
Ah, j'avais pas très bien lue vore code, le retour a la ligne par entrée ne fonctionne, si je ne me trompe pas, que si la touche entrée est actionnée, donc pas sur que postmessage fonctionne (ce que vous constaté) et meme envoietouche (a essayer tout de meme) a de forte chance de ne pas focntionner.
Par contre je suis surpris que tableajoute ou tableajouteligne ne marche pas!
Contribution le : 26/05/2009 09:05
|
_________________
be aware
|
|
Re: comment simuler un enter (return ) par programmation |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
j'ai fait le test suivant sans lecture serial et sans evenement Juste lire et cecriere dans une table fenetre vierge type wd11 insere une table memoire
champs NoTag, Prenom ,Nom,Description sont des chaine sans saisie
voila le code
//********** initialisation table ****** SI TABLE..Vide ALORS TableAjoute(TABLE) DonneFocus(TABLE.NoTag) // ************** entre en saisie d'une ligne de table *** //TableAjouteLigne(TABLE) DonneFocus(TABLE.NoTag) i est un entier i = TableSelect (TABLE) Info (i) TableSelect (TABLE) // NoTag = "zzzzzzzz" Nom = "aaaaa" Prenom = "bbbbbb" Description = "cccccccc" // *** sortie d'une ligne de table ******** TableAjouteLigne(TABLE) // ********************** fi de code ******************************
Resultat
Rien ne se passe rien c'est normal il ya aucune saisie si je rend actif a la saisie NoTag le table se rend a la saisi NoTag prend sa valeur "zzzzzzzz" et attend un return pour passer pour informer le rest de la ligne et change de ligne ainsi de suite
Faite le test
Donc le tableajouteligne ne me donne pas de ligne in me la donne seulement si je lui fait un enter (return) a la saisie de NoTag
Si tu est capable de me le corriger donne moi le code
Je veux un code ou un exemple qui me permet a partir d'un lecteur de type Barre code d'alimenter une table uniquement par presentation d un media au lecteur
La fonction trace le fait parfaitenment
Autre soucis le thread versus evenement et comment le coder
merci de vos reponses
ps nous ne sommes pas sur le meme fuseau horaire propablement
Contribution le : 26/05/2009 20:19
|
|
|
Re: comment simuler un enter (return ) par programmation |
|
ChefDeProjet WDF
Inscrit: 29/05/2007 17:03
De Sassenage
Post(s): 180
|
pour moi, cela me semble normal que cela ne fonctionne pas, car il me semble bien que les portion de code de la table "sortie d'une ligne de le table" ne s'exécute que sur une action d'utilisateur, non?
voir ou placer exactement la ligne executetraitement(TABLE,trtSortieLigne) pour forcer l'exécution de la portion de code se trouvant dans le portion "sortie de ligne de la table", je pense a vue de nez a la fin de votre code se trouvant dans la portion "entrée en saisie dans la ligne de la table".
en espérant vous avoir aidé
Contribution le : 28/05/2009 09:18
|
|
|
Re: comment simuler un enter (return ) par programmation |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
Tu as raison ASTHROTH ,j'ai modifier ma logique
1 premier test je viens de faire un test : j'ai créée une table en saisie avec 3 colonnes dont une en saisie les deux autres en lecture
cela fonctionne très bien sans avoir à faire "enter" je passe bien à la ligne suivante et je suis en saisie dans la colonne NoTag
C O D E 1 test //**************************************************** dans le code de la colonne NoTag
à chaque modification j'ai mis le code suivant:
si taille(moimeme)=3 alors // pour controler la saisie de 3 caractères
Prenom = "aaaaaaaaaaaaaa" Nom = "bbbbbbbbbbbbbbb" Description = "ccccccccccc"
tableajouteligne(table_table1) tableselectplus(table_table1,tableoccurrence(table_table1)) reprisesaisie(table_table1.col_colonne1) fin // **************** fin code test 1 *****************
Par la suite j'ai ajouter La gestion du port serial et la procedure reception en me disant que cela devrait fonctionner,mais non retour a la case de depart
Il ne veut pas passer a la modification de Notag J'ai mis un info au debut de modification NoTag pour verifiez Voci le code que j'ai fait
C O D E test 2 // *********** Declaration global de fenetre *****
// declaration du serial GLOBAL Port est un entier gsGuyBuffer est une chaîne
LOCAL Taux est un entier Parite est un entier BitDonnee est un entier BitStop est un entier Port=1 Taux=9600 Parite= 0 BitDonnee=8 BitStop=0 // sOuvre(Port,5000,5000)=FAUX ALORS SI sOuvre(Port,5000,5000,sTimeoutDéfaut,Vrai)= Faux ALORS Erreur("Erreur lors de l'ouverture du port "+Port) Ferme() FIN sFixeParamètre(Port,Taux,Parite,BitDonnee,BitStop) //timer("sReception",50,1) //-- Fin du code généré par l'assistant sEvénement(1,sEveCaractèreReçu,SRECEPTION) SRECEPTION() // ******************************************************* // ******** initialisation de la table ************* DonneFocus(TABLE.NoTag)
// ***************************************************
// **** a chaque modification de NoTag **********
Info ("guy",NoTag) // l'info ne sort pas il n'a pas acces SI Taille(MoiMême)=14 // pour controler la saisie de 14 caractères // Initialise la requête SI PAS HExécuteRequête(REQ_VetementTag,hRequêteDéfaut,Gauche(NoTag,12)) ALORS Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()) RETOUR FIN // lecture du premier enregistrement de la requête HLitPremier(REQ_VetementTag,NoTag) NoTag = REQ_VetementTag.NoTag Prenom = REQ_VetementTag.Prenom Nom = REQ_VetementTag.NomEmployer Description = REQ_VetementTag.DescService HAnnuleDéclaration(REQ_VetementTag) TableAjouteLigne(TABLE) TableSelectPlus(TABLE,TableOccurrence(TABLE)) RepriseSaisie(TABLE.NoTag) FIN // *********** *************************************
PROCEDURE SRECEPTION() wtaille est un entier sBuffer est une chaîne nbcaralire est un entier nbcaralire=14 //Fintimer(1) wtaille=sDansFileEntrée(Port) // Lecture des informations sur le port série SI wtaille>nbcaralire ALORS
sBuffer=sLit(Port,nbcaralire)
Trace(Port,sBuffer,wtaille,sDansFileEntrée(Port)) NoTag = sBuffer // 14 caracteres FIN
//Timer("sReception",50,1) RENVOYER(NoTag) //************************************************************* fin du C O D E
A la lecture le trace de la fonction SRECEPTION est bonne l"information RENVOYER(NoTag) va s'inscrire dans NoTag et attend un return Une fois le return effectuer,il n'afficche pas les autre colonnes c'est normal car il ne passe pas par modification de NoTag il passe a la ligne suivante sur NoTag,c'est normal ila eu son retour et les autres colonnes sont innactifs en saisise
Alors comment on peut le dejouer pour lui dire qu'il est en modification
Ou autres solutions
Contribution le : 28/05/2009 17:25
|
|
|
Re: comment simuler un enter (return ) par programmation |
|
ChefDeProjet WDF
Inscrit: 29/05/2007 17:03
De Sassenage
Post(s): 180
|
moi je mettrais le code "a chaque modification de notag" dans la procedure SRECEPTION en adaptant un peu pour ecrire sur la bonne ligne (apres le tableAjoute, utiliser l'indice [TABLE..occurrence] pour ecrire un bon endroit
Contribution le : 28/05/2009 18:26
|
_________________
be aware
|
|
Re: comment simuler un enter (return ) par programmation |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
j'ai pris quel que jours de breaks,j'etais ecoeurrer,
j'ai essauyer pour moi ce matin , et ton concept a bien fonctionner
je te remercie encore
On est dans la merde et on ni voie plus re=ien des fois,on regard second comme toi est toujours agreable , merci encore
si du des gens sont interreser je peux mettre la solution sur le forum merci encore a toi pout ta generositer
by
Contribution le : 02/06/2009 18:40
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|