Mars 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | Calendrier |
|
| | EDIT accepté par return et clic | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: EDIT accepté par return et clic Dim 27 Sep 2009 - 20:06 | |
| Vous allez certainement penser que l'on tourne en rond. Mais voila le problème. J'avais publié un petit programme qui permettais de prendre un texte avec EDIT dans une forme supplémentaire, je le pensais résolu, vu que chez moi, cela marche dans mon programme. Quand à EEEPC qui lui n'accepte pas SCANCODE, j'ai rajouté un délai avec wait 200 qui se répète x fois, le temps de rentrer un texte entre chaque wait. Cela ne se vois pas lors de la frappe, mais après une quinzaine de secondes, je rendais la main au programme, on aurait pu croire qu'après un <RETURN> du clavier, la donnée était accepté. En voyant que sur le forum, le problème semble toujours présent, j'ai fais un petit programme pour voir se qu'il en ait. - Code:
-
dim flag%,a$,prompt%,stylo,stylo$,scan% ,a label prompt ,texte,nombre ,desact
prompt%=10 :rem variable pour inclure dans un programme en ne modifiant que celle-ci
rem ______________FORM POUR CLAVIER____________________________________________ REM appel par: flag%=0 pour texte, 1 pour valeur et gosub prompt
' FORME
alpha prompt%:left prompt%,100:top prompt%,1 width prompt%,298 :height prompt%,118:color prompt%,232,233,218 caption prompt%,"entrez votre texte"
edit prompt%+1:top prompt%+1,30:left prompt%+1,100:width prompt%+1,280 font_size prompt%+1,12:font_bold prompt%+1:color prompt%+1,232,233,218
button 2:left 2,200:caption 2,"texte": on_click 2,texte: on_click 0,prompt button 3:left 3,280:caption 3,"nombre":on_click 3,nombre
rem 1èr essai par programme, cela fonctionne, si on refait une 2ème fois, non gosub desact flag%=0:gosub prompt
end
texte: flag%=0:gosub desact:gosub prompt:return nombre: flag%=1:gosub desact:gosub prompt:return
rem -------------sous programme clavier---------------------------------------- prompt: set_focus prompt%+1 text prompt%+1 ,"" repeat : scan%=scancode : until scan%=13 :stylo$=text$(prompt%+1) if numeric(stylo$)=1 stylo=val(stylo$) else stylo=0 if flag%=1 text prompt%+1,"Erreur, on entre une valeur S.V.P." color prompt%+1,255,0,0:font_color prompt%+1,255,255,255 wait 2000 :color prompt%+1,232,233,218:font_color prompt%+1,0,0,0:text prompt%+1,"" goto prompt end_if end_if text prompt%+1,"" print stylo$ active 2:active 3 return rem ------------------fin clavier----------------------------------------------
desact: inactive 2:inactive 3 :return
En modifiant constamment le programme, j'ai constaté ceci: En appelant 1 fois au départ, le retour chariot est accepté. Après impossible Si je clique sur la forme, celà redevient opérationnel. Un clique est toujours nécessaire avant pour que cela fonctionne, soit sur la forme, soit sur un bouton (pas l'edit). Fais l'essai, tu verras. Peut-être pourras tu discerner plus facilement le problème, et enfin en terminer avec ces répétition sur le forum. Merci d'avance N'hésite pas à me remettre en place si c'est moi qui n'ai rien compris. Je rajoute une chose que j'ai remarqué depuis: Dans mon exemple, je peux lorsque je me rebranche à prompt pour une valeur numérique, tel que le programme le montre, cela marche. Mais si je veux me rebrancher en rajoutant par exemple après le dernier end_if, avec par exemple: - Code:
-
a=a+1:if a<5 then goto prompt cela ne marche plus. Incompréhensible!
Je pense que avant de rajouter tout nouvelle objet et commande, il faut faire en sorte que cela fonctionne. La rentrée de donnée dans un ordinateur par l'intermédiaire d'un programme est le coeur même de la programmation, et il faut que cela fonctionne. Dans mon propre programme en cour, pas de problème, mais cela dépent de ce que l'on fait, et comment on doit le présenter. (curieux c'est pas la même police?et la même hauteur!) A+ |
| | | Jean Claude
Nombre de messages : 5948 Age : 69 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 8:33 | |
| Toujours le même problème,
Personnellement j'ai repris le petit bouton "OK" à coté de l'EDIT car je suis sur un nouveau projet et je ne veus plus perdre de temps à essayer de terminer la saisie dun EDIT par un Entée. Je le répète une derniere fois, l'idéal serait que l'objet EDIT puisse accepter Entrée comme si c'était un click ou avoir une commande supplémentaire (on_enter). Je ne sais pas si c'est possible, attendons.
Je passe à autre chose. A+ | |
| | | Invité Invité
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 8:39 | |
| Il faudra bien que ce problème soit résolu un jour, et le plus tôt sera le mieux. Cela fait tache sur le forum, de revoir toujours ce problème, et celui qui voit ça pour la 1ère fois, n'a pas envie d'aller au delà. A+ |
| | | Jack Admin
Nombre de messages : 2381 Date d'inscription : 28/05/2007
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 9:41 | |
| Je n'ai pas suivi les autres discussions sur le sujet, faute de temps libre, mais je le ferai soyez-en sûr. J'interviens ici car je ne trouve rien d'anormal. - Citation :
- En appelant 1 fois au départ, le retour chariot est accepté. Après impossible
Bien sûr, puisque tu ne fais qu'une fois gosub prompt. gosub prompt -> appel de prompt, qui se termine quand RETURN est tapé (until scan%=13) on reviens au programme principal, puis on exécute un end. Il ne se passe alors plus rien, et c'est tout à fait normal. Il faudrait rappeler à nouveau prompt puisque c'est ce sous-programme qui teste la frappe de RETURN. - Citation :
- Si je clique sur la forme, celà redevient opérationnel. Un clique est toujours nécessaire avant pour que cela fonctionne, soit sur la forme, soit sur un bouton
Forcément, puis que tu as programmé une exécution de prompt quand on clique: - sur la forme (objet n°0): on_click 0,prompt - ou sur le bouton 2: on_click 2,texte (puis texte appelle prompt) - ou sur le bouton 3: on_click 3,nombre (puis nombre appelle prompt) - Citation :
- Je le répète une derniere fois, l'idéal serait que l'objet EDIT puisse accepter Entrée comme si c'était un click ou avoir une commande supplémentaire (on_enter).
Si le problème, c'est de tester la frappe d'un RETURN sur un EDIT, il est difficile de le faire dans l'état actuel. Je vais étudier le traitement de l'événement par une commande genre ON_KEY sur un objet. Cet événement se déclenchera lors de la frappe d'une touche au clavier. L'utilisation serait comme ON_CLICK ou ON_CHANGE sur un objet N (un EDIT par exemple), avec 2 variables système: KEY_VALUE donnant le code de la touche tapée KEY_SPECIAL donnant l'état des touches SHIFT, CONTROL, ALT (enfoncées ou non) - Code:
-
label traite edit 1 on_key 1,taite end
traite: if KEY_VALUE=13 then - - - return | |
| | | Invité Invité
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 10:45 | |
| Je suis désolé de ne pas être d'accord avec toi, la preuve en est, que continuellement on revient sur le sujet. Il est évident que t'elle que je le présente, cela fonctionne, mais je ne peut pas faire une vingtaine de présentation de programme sur ce code. Essaye de faire plusieurs fois avant le END, le même appel à prompt. Normalement cela devrait fonctionner. Je reprends une partie du code - Code:
-
gosub desact:gosub prompt gosub desact:gosub prompt gosub desact:gosub prompt
end La 1ère fois ça marche, les appels suivants ne marchent pas De même, et la c'est curieux - Code:
-
text prompt%+1,"" print stylo$ active 2:active 3 a=a+1:if a<3 then goto prompt :REM TU RAJOUTE CETTE SIMPLE LIGNE return Tu rajoute cette ligne: a=a+1:if a<3 then goto prompt, à la fin dans le programme. Pourquoi cela ne marche plus. Si il n'y avait pas de problème, on ne reviendrait pas sur le sujet. Désolé de te faire perdre du temps A+ Je n'avais pas lu la fin de ton explication, donc je vois que tu t'en préoccupe. Merci A+ Je reprends l'édition une nouvelle fois pour te dire ce qui me surprends, c'est le fait que 2/3 lignes plus haut, avec goto prompt, cela fonctionne, et après le END_IF, le même goto prompt ne marche plus. A+
Dernière édition par cosmos70 le Lun 28 Sep 2009 - 11:08, édité 1 fois |
| | | Jean Claude
Nombre de messages : 5948 Age : 69 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 10:54 | |
| - Citation :
- Si le problème, c'est de tester la frappe d'un RETURN sur un EDIT, il est difficile de le faire dans l'état actuel.
Oui c'est bien çà le problème. La solution que tu proposes est exactement ce qu'il nous faut. A+ | |
| | | Invité Invité
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 12:20 | |
| Jean Claude, pour mon programme j'ai fais cela, dès fois que cela te rends service: - Code:
-
prompt: show prompt%:set_focus prompt%+3:text prompt%+2,clavier$:text prompt%+3 ,"" t=0:repeat : scan%=scancode:wait 200:t=t+1 : until scan%=13 or t=50:stylo$=text$(prompt%+3) if numeric(stylo$)=1 stylo=val(stylo$) else stylo=0 if flag%=1 text prompt%+2,"Erreur, on entre une valeur S.V.P." color prompt%+2,255,0,0:font_color prompt%+2,255,255,255 wait 2000 :color prompt%+2,244,235,192:font_color prompt%+2,255,0,0:text prompt%+2,titr$ goto prompt end_if end_if hide prompt% return rem ------------------fin clavier---------------------------------------------- J'ai rajouté un temps qui redonne la main, ici environ 15 secondes. Il suffit de modifier t=50 pour modifier le délai. Ici cela laisse environ 15 secondes pour rentrer une donnée, même si< return > ne fonctionne pas, après l'appui, le programme continu, et tu as l'impression d'un délai "d'arrière fond". Ceci c'était pour mon portable, vu que l'appel se fait chez-moi à partir d'un combo, donc d'un clic et fonctionne sur le pc bureau. Si tu comprends bien pour un autre codage (une autre façon de faire appel à EDIT), il y a wait 200, cela permet d'écrire dans un EDIT, t: compte le nb de fois qu'il va dans la boucle, et ici à 50, sort de celle-ci. On ne sait pas, dès fois que cela puisse aider quelqu'un. A+ |
| | | Jack Admin
Nombre de messages : 2381 Date d'inscription : 28/05/2007
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 14:37 | |
| @cosmos70 J'ai compris ce qui se passe: c'est scancode qui ne fonctionne pas. Si on ajoute des lignes gosub prompt avant le end, on a l'impression que rien ne se passe, car à chaque fois qu'on exécute prompt, le code rendu par scancode est 13 scancode donne le code de la dernière touche frappée, donc le RETURN de tes essais précédents, et non pas le code de la touche actuellement pressée comme le dit la documentation. Pour étudier ton problème, j'ai simplifié ton code dans le code suivant. A l'exécution, le contenu de l' EDIT n'est imprimé qu'une seule fois car à chaque appel ultérieur de prompt, scancode retourne le code de la dernière touche tapée (même si elle avait été tapée il y a plusieurs heures...) soit 13 ici. - Code:
-
dim s%
label prompt
edit 1 left 1,100
print "appel 1":gosub prompt print "appel 2":gosub prompt print "appel 3":gosub prompt print "appel 4":gosub prompt
end
prompt: set_focus 1 text 1,"" repeat:s%=scancode:until s%=13 if s%=13 then print "scancode=13" print text$(1) return Je regarde SCANCODE pour le faire fonctionner conformément à la documentation. | |
| | | Invité Invité
| Sujet: Re: EDIT accepté par return et clic Lun 28 Sep 2009 - 16:26 | |
| Merci beaucoup, je savais que tu était très fort. Bon travail A+ |
| | | Contenu sponsorisé
| Sujet: Re: EDIT accepté par return et clic | |
| |
| | | | EDIT accepté par return et clic | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |