| |
Posté le 19 octobre 2016 - 09:24 |
Bonjour,
J'aimerais savoir comment et sur quel événement je peux récupérer la lecture du code barre qui va être effectuée sur un terminal CB Honeywell MX7 Tecton ? A chaque lecture d'un code barre je souhaite envoyer le résultat dans une table.
Merci d'avance. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 623 messages Popularité : +100 (114 votes) |
|
Posté le 19 octobre 2016 - 11:07 |
En principe, la lecture du code barre est une émulation clavier. Il faut donc placer le focus sur un champ de saisie et flasher le code barre. Le champ de saisie sera alors rempli. Il suffit ensuite de récupérer le contenu du champ de saisie |
| |
| |
| | | |
|
| | |
| |
Posté le 19 octobre 2016 - 11:56 |
On n'a pas la possibilité de détecter l'appui sur la touche concernée ?
Merci encore |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 189 messages Popularité : +4 (8 votes) |
|
Posté le 19 octobre 2016 - 14:37 |
bonjour Ttu peux par exemple adapter ceci
(dans l-init du projet) EXTERNE "KEYCONST.wl"
(dans la prise de focus d'une fenêtre) Evénement("CaptureClavier",".*",WM_KEYDOWN)
(ta procédure) PROCEDURE CaptureClavier(Message, wParam, lParam) SI wParam=13 ALORS DonneFocus(btnval) FIN
Bon dev |
| |
| |
| | | |
|
| | |
| |
Posté le 19 octobre 2016 - 14:58 |
Merci pour l'info je vais tester cela. |
| |
| |
| | | |
|
| | |
| |
Posté le 20 octobre 2016 - 16:38 |
Bonjour, Je ne comprends pas très bien à quoi correspondent "Message" et "lParam" dans la procédure car ils ne sont pas utilisés ?
Merci encore. |
| |
| |
| | | |
|
| | |
| |
Posté le 20 octobre 2016 - 17:14 |
VOici ce que j'ai fait, peut-être que je me trompe car cela ne fonctionne pas.
J'ai ajouté un traitement optionnel sur : Prise de focus (WM_SETFOCUS) de FEN_Prepa DAns lequel j'ai ajouté ce code :
WM_KEYDOWN est un entier = 13 Evénement("CaptureClavier", "SAI_EAN", WM_KEYDOWN)
Au niveau de la procédure CaptureClavier, voici mon code:
Procedure CaptureClavier(Message, wParam, lParam)
SI wParam=13 ALORS HExécuteRequête(REQ_recherche_lignes_cde,hAvecFiltre,gsNumCommande,MoiMême) HLitPremier(REQ_recherche_lignes_cde) SI HTrouve(REQ_recherche_lignes_cde) ALORS TableAjoute(FEN_Prepa.TABLE_prepa_en_cours,REQ_recherche_lignes_cde.Code_article+TAB+REQ_recherche_lignes_cde.quantite+TAB+REQ_recherche_lignes_cde.Unite+TAB+"") FIN FEN_Prepa.SAI_EAN="" FIN
J'ai certainement loupé quelque chose ou alors je ne comprends pas comment fonctionne les événements. j'ai consulté l'aide mais ça ne m'avance pas énormément. Pourriez-vous m'éclairer ?
Merci encore pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 189 messages Popularité : +4 (8 votes) |
|
Posté le 21 octobre 2016 - 09:20 |
Bonjour En premier dans l'init de ton projet il faut mettre : EXTERNE "KEYCONST.wl"
ensuite ta ligne WM_KEYDOWN est un entier = 13 ne sert à rien
après met toi en débog et trace wParam pour connaître ce que wParam reçoit quand tu appuies sur ton scan. (voir table ascii) le 13 est pour exemple c'est égal à RC (Carriage Return ) |
| |
| |
| | | |
|
| | |
| |
Posté le 21 octobre 2016 - 12:09 |
Bonjour, Donc voici ce que j'ai fait et qui fonctionne mais pas comme je le souhaiterais.
A l'init du projet j'ai donc ajouter la ligne :
EXTERNE "KEYCONST.wl"
Dans la prise de focus (WM_SETFOCUS) de la fenêtre FEN_Prepa :
WM_KEYDOWN est un entier Evénement("CaptureClavier", "SAI_EAN", WM_KEYDOWN)
Procédure CaptureClavier:
Procedure CaptureClavier(Message, wParam, lParam)
SI wParam=13 ALORS HExécuteRequête(REQ_recherche_lignes_cde,hAvecFiltre,gsNumCommande,MoiMême) HLitPremier(REQ_recherche_lignes_cde) SI HTrouve(REQ_recherche_lignes_cde) ALORS TableAjoute(FEN_Prepa.TABLE_prepa_en_cours,REQ_recherche_lignes_cde.Code_article+TAB+REQ_recherche_lignes_cde.quantite+TAB+REQ_recherche_lignes_cde.Unite+TAB+"") FIN FEN_Prepa.SAI_EAN="" RepriseSaisie(FEN_Prepa.SAI_EAN) FIN
Sauf que si je clique sur un autre champ cela ne fonctionne plus.
J'ai donc remplacé l’événement par :
Evénement("CaptureClavier",".*",WM_KEYDOWN)
Mais cela ne fonctionne plus du tout.
Pouvez-vous m'aider ?
MErci encore. |
| |
| |
| | | |
|
| | |
| |
Posté le 24 octobre 2016 - 09:14 |
Bonjour, Désolé de relancer mais auriez-vous un peu plus d'informations suite à ma question ci-dessus ? Merci encore pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 189 messages Popularité : +4 (8 votes) |
|
Posté le 24 octobre 2016 - 10:51 |
Bonjour, déjà ta ligne : WM_KEYDOWN est un entier Ne sert à rien Après met toi en debog et regarde si tu entres bien dans ta procédure quand tu scan. Bien sur ton champ SAI_EAN il faut qu'il est le focus et en début de sortie de ce champ tu peux rajouter l'évènement. C'est à toi d'adapter le code suivant tes besoins. |
| |
| |
| | | |
|
| | |
| |
Posté le 24 octobre 2016 - 15:52 |
Bonjour, Merci pour la réponse. Si je ne mets pas la ligne "WM_KEYDOWN est un entier" WM_KEYDOWN n'est pas reconnu...
A la prise de focus sur la fenêtre, j'ai ce code : Evénement("CaptureClavier", "SAI_EAN", WM_KEYDOWN)
Cependant si je clique sur une table présente dans la fenêtre et que je scanne de nouveau, je n'ai plus le focus sur le champ SAI_EAN, donc ça ne fonctionne plus.
Comment puis-je faire pour que dès que je scanne, le focus se remettre systématiquement sur le champ SAI_EAN ?
Désolé pour le dérangement... |
| |
| |
| | | |
|
| | |
| |
Posté le 24 octobre 2016 - 16:07 |
Bonjour
WM_KEYDOWN n'est pas une variable, mais une constante de windows..
Donc soit il faut inclure le fichier texte des constantes windows (avec le mot clé EXTERNE) soit il faut remplacer WM_KEYDOWN par la valeur numérique correspondante (voir google)
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 10/24/2016 à 7:52 AM, Jeremy a écrit :
Bonjour, Merci pour la réponse. Si je ne mets pas la ligne "WM_KEYDOWN est un entier" WM_KEYDOWN n'est pas reconnu...
A la prise de focus sur la fenêtre, j'ai ce code : Evénement("CaptureClavier", "SAI_EAN", WM_KEYDOWN)
Cependant si je clique sur une table présente dans la fenêtre et que je scanne de nouveau, je n'ai plus le focus sur le champ SAI_EAN, donc ça ne fonctionne plus. Comment puis-je faire pour que dès que je scanne, le focus se remettre systématiquement sur le champ SAI_EAN ?
Désolé pour le dérangement... |
| |
| |
| | | |
|
| | |
| |
Posté le 24 octobre 2016 - 16:42 |
Merci pour la réponse. Cependant, qu'en est-il du second point ?
Merci encore.
A la prise de focus sur la fenêtre, j'ai ce code : Evénement("CaptureClavier", "SAI_EAN", WM_KEYDOWN)
Cependant si je clique sur une table présente dans la fenêtre et que je scanne de nouveau, je n'ai plus le focus sur le champ SAI_EAN, donc ça ne fonctionne plus.
Comment puis-je faire pour que dès que je scanne, le focus se remettre systématiquement sur le champ SAI_EAN ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 189 messages Popularité : +4 (8 votes) |
|
Posté le 25 octobre 2016 - 08:58 |
Bonjour, Par exemple à la fin de ton code quand tu clic sur ta table fait un : RepriseSaisie(FEN_Prepa.SAI_EAN) |
| |
| |
| | | |
|
| | |