Novembre 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 | | Calendrier |
|
|
| Fonction inkey$ inactive dans un form autre que form0 | |
|
+6Froggy One papydall Jean Claude Minibug Jicehel champollion 10 participants | |
Auteur | Message |
---|
champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 16:36 | |
| Bonjour à tous! J'ai un problème avec la fonction inkey$ qui ne lit pas le clavier quand je suis dans un form déclaré mais qui retourne bien le caractère tapé dans le form par défaut comme dans l'exemple de l'aide (manuel de référence) J'utilise la dernière version de panoramic. Pour le constater, il n'y a qu'à récupérer le court programme de l'aide et le faire tourner avec form 1.Grand Merci de me dépanner. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 17:12 | |
| Désolé, je ne comprends pas bien ta question: ce que tu voudrais c'est quoi exactement, voir la touche qui est enfoncée par l'utilisateur, traiter l’évènement relatif à l'appuie sur cette touche ou récupérer la valeur de la touche saisie En effet, si tu veux faire un print par exemple de la touche saisie, n'oublie pas de faire un - Code:
-
print_target_is 1 Si tu veux l'afficher dans la barre de titre, tu peux faire un - Code:
-
caption 1,"Vous avez tappé sur la touche : " + A$ Etc ... bon, je pense que ça répond à ta question, mais je voulais juste insister sur le fait que plus la question est précise plus tu as des chances d'avoir une réponse précise qui corresponde à ton problème. | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 17:31 | |
| Merci pour ce début de réponse. En fait c'est simple. J'attends que la frappe du clavier mette la valeur de la touche dans la variable: Ex a$=inkey$/ Ensuite selon cette info je continue . Dès que je mets dans un form autre que celui par défaut la fonction inkey$ n'existe plus. Ce n'est pas un problème d'affichage puisque quand le temps est dépassé, mon message "trop tard" s'affiche: D'ailleurs voici ce mini programme encore simplifié car je ne peux l coller ma liste sur cette page:
dim début: dim fin:dim n début: a$=inkey$ if a$<>"" then goto fin n=n+1:if n = 20000 then a$="trop tard":goto fin goto début fin: print a$
Essayez de faire fonctionner avec form 1. seul le texte "trop tard" apparait. la fonction inkey$ ne teste pas le clavier.Et cette fonction est essentielle pour le projet que j'ai en cours. Encore merci de me dépanner.Cordialement D Champollion
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 17:58 | |
| je rencontre moi aussi actuellement quelques difficultés sur cette fonction avec la dernière version de PANORAMIC.
Suis-je le seul ? | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive suite Mar 28 Mai 2013 - 18:06 | |
| Merci pour ce début de réponse. En fait c'est simple. J'attends que la frappe du clavier mette la valeur de la touche dans la variable: Ex a$=inkey$/ Ensuite selon cette info je continue . Dès que je mets dans un form autre que celui par défaut la fonction inkey$ n'existe plus. Ce n'est pas un problème d'affichage puisque quand le temps est dépassé, mon message "trop tard" s'affiche: D'ailleurs voici ce mini programme encore simplifié car je ne peux l coller ma liste sur cette page:
dim début: dim fin:dim n début: a$=inkey$ if a$<>"" then goto fin n=n+1:if n = 20000 then a$="trop tard":goto fin goto début fin: print a$
Essayez de faire fonctionner avec form 1. seul le texte "trop tard" apparait. la fonction inkey$ ne teste pas le clavier.Et cette fonction est essentielle pour le projet que j'ai en cours. Encore merci de me dépanner.Cordialement D Champollion
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 18:09 | |
| OK, bon tu as mis des DIM au lieu des LABEL pour les étiquettes, mais bon, ce n'est pas grave ça Un petit conseil, ne fait pas de boucle infinie dans ton programme Plutot que de faire ça je te conseille plutôt ce code - Code:
-
DIM n
n = scancode while n=0 Wait 50 : ' Tu peux faire un traitement en attendant qu'une touche soit pressée end_while print chr$(n)
Sinon tu pourrais aussi gérer la chose par la détection de l’évènement ON_KEY_DOWN N,L ou encore tester si une touche est appuyée en utilisant un timer ... Si le petit code que je t'ai fourni ne te convient pas on pourra voir ces pistes | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 18:12 | |
| J'ai renoncé à me servir de INKEY$, car comme vous çà ne marchait pas (je dis pas que c'est un bug, mais je n'ais pas réussi à m'y faire).
J'utilise le plus souvent ON_KEY_UP avec if KEY_UP_CODE=13 then ....
Je vous conseille d'aller voir la doc.. SCANCODE qui remplace efficacement INKEY$
A+
PS: on s'est croisé, Jicehel, Ta démo rejoint ma recommandation. | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive suite encore ! Mar 28 Mai 2013 - 19:51 | |
| Merci encore ! mais le problème ne vient pas de ma boucle qui n'est pas sans fin vu qu'elle se termine à 30000. Donc Inkey$, fonction simple et importante ne fonctionne pas dans un form déclaré ! C'est dommage et bizarre car c'est simple à mettre en oeuvre et utile pour les gestions d'évènements avec chrono. je vais essayer tta routine, mais c'est plus compliqué ! Essaye de faire fonctionner le petit prog inkey$ du manuel de réf dans form 1 Très cordialement Denis Champ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 20:25 | |
| Salut Champollion et bienvenue parmi nous. Si j’ai bien compris ta question : tu veux utiliser INKEY$ pour aiguiller ton programme vers un traitement bien déterminé. La fonction INKEY$ est certes utile, mais personnellement je ne l’utilise pas comme beaucoup d’autres panoramiciens. On peut la contourner de plusieurs façons pour faire des codes plus « modernes » si j’ose m’exprimer ainsi. Si tu tiens à utiliser INKEY$ avec un FORM autre que FORM 0, tu dois l’invoquer avant de déclarer le FORM . Remarque : je viens de me rendre compte que INKEY$ ne fonctionne pas après avoir défini un autre FORM. Essaye ce code, car je pense que tu veux faire quelque chose de similaire. - Code:
-
' déclaration des labels label lecture_clavier,trait1,trait2,trait3 dim a$ ' Afficher un simili menu print : print : print "Faites votre choix : P,D,T,F" print "P --> traitement n°1" print "D --> traitement n°2" print "T --> traitement n°3" print "F --> fin" print : print "Veuillez appuyer sur la touche de votre choix"
' Scruter le clavier lecture_clavier: a$ = inkey$ if a$ = "" then goto lecture_clavier ' Déclarer un autre Form pour les traitements form 1 : top 1,100 : left 1,200 print_target_is 1 : ' pour choisir la cible des affichages par PRINT a$ = upper$(a$) : ' transformer en majuscule le caractère tappé ' Selon le choix de l'utilisateur, on aiguille le programme vers le traitement voulu if a$ = "P" then gosub trait1 if a$ = "D" then gosub trait2 if a$ = "T" then gosub trait3 if a$ = "F" then terminate ' on averti l'utilisateur s'il a fait un mauvais choix if a$ <> "P" and a$ <> "D" and a$ <> "T" and a$ <> "F" print "votre choix est incorrect" end_if end : ' cette commande est absolument nécessaire pour empêcher le programme ' d'aller exécuter ce qu'il ne doit pas faire ' ----------------------------------------------------------------------------- ' Ici le traitement du choix P trait1: print "Vous avez choisi le 1er traitement" print "C'est fait" return
' Ici le traitement du choix D trait2: print "Vous avez choisi le 2ème traitement" print "C'est fait" return
' Ici le traitement du choix T trait3: print "vous avez choisi le 3ème traitement" print "c'est fait" return ' ******************************************************************************
EDIT : Je ne recommande pas de coder de cette façon qui est un peu « archaïque ». PANORAMIC est certes du BASIC mais un BASIC moderne ! Il offre beaucoup de souplesse de programmation. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mar 28 Mai 2013 - 20:34 | |
| Oui Papydall, ton code marche, mais perso je préfère scancode, Comme tu le précises justement, cette méthode est plutôt BASIC. A+ | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive suite Mar 28 Mai 2013 - 21:17 | |
| Merci des aides reçues mais deux remarques : Je n'arrive pas à faire fonctionner scancode Que veut dire : tu dois l’invoquer avant de déclarer le FORM en parlant de inkey$. comment invoquer ?J'ai un programme qui démarre dans un form. Ensuite j'ai deux autres form avec couleurs choix par on click puis je demande une réponse lettre par lettre au clavier. Je suis depuis longtemps dans un form quand j'ai besoin de scruter le clavier avec chrono. J'ai fait cela couramment avec turbo basic dans le passé c'était simple ! une boucle en deux lignes, un compteur et une gestion des réponses et du temps. panoramic semble bien compliqué pour la même chose. Et pourtant ça marche avec form par défaut. peut être faut-il en parler au grand maître ? Où et comment puis je poster mon programme pour mieux me faire comprendre. A bientôt Et merci pour vos réponses.Denis Champollion | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Programme pour illustrer inkey$ inactif dans form 2 Mar 28 Mai 2013 - 21:27 | |
| Voici le programme dont je parlais. Il est en construction : J'ai mis en rem le chargement de l'image. Cliquez sur apprentissage puis copie à vue. Le mot PAPILLON s'affiche et c'est là que j'ai placé mon inkeys pour la recopie sans erreur du mot. mais rien ne se passe et le mot FIN s'affiche quand les 30s sont passées form 2 width 2, 1280 height 2, 800 color 2,64,64,128 command_target_is 2 list 24 top 24,15 left 24,430 width 24,430 height 24,60 color 24,0,255,0 dim a$(10):dim n:dim l:dim e$(10):dim h:dim r$ label bib: label exercices : label finir : label decouv: label appren: label eval label choix1:label copie:label testclavier :label ecrit print_target_is 24 font_color 24,255,0,0 font_size 24,30 font_name 24,"comic sans MS" print "Ecriture Orthographe" picture 4 top 4, 300 left 4, 470 height 4, 300 width 4, 800 rem file_load 4,"papillon.bmp" gosub bib l = 140 for n = 5 to 7 button n top n, 140 left n, l: l=l+ 350 width n, 240:height n, 50 caption n, a$(n-4) font_color n, 0,255,255 font_size n, 22 font_bold n next n button 8 top 8, 640 left 8, 510 font_size n, 22 font_bold n width 8, 230:height 8, 50 caption 8, a$(4) on_click 5, decouv on_click 6, appren on_click 7, eval on_click 8, finir end choix1: bib: a$(1)= "DECOUVERTE" a$(2)= "APPRENTISSAGE" a$(3)= "EVALUATION" a$(4)="QUITTER" e$(1)= "Copie à vue" e$(2)= "Copie de mémoire" e$(3)="Ecriture texte entendu" e$(4)= "Ecriture sous dessin" e$(5)="Homophones lexicaux" e$(6)= "Homophones grammaticaux" e$(7)= "Accords genre et nombre" e$( = "Conjugaison" e$(9)= "Dictée" return exercices: decouv: appren: form 3 width 3, 1280 height 3, 800 color 3,64,24,128 command_target_is 3 list 25 top 25,15 left 25,430 width 25,430 height 25,60 color 25,0,255,0 print_target_is 25 font_color 25,255,0,0 font_size 25,30 font_name 25,"comic sans MS" print " Liste des exercices" l=450 :h=120 for n = 9 to 17 button n top n, h left n, l: h=h+ 60 width n, 400:height n, 50 caption n, e$(n- font_color n, 0,255,255 font_size n, 20 font_bold n next n on_click 9, copie end eval: finir: copie: form 1 width 1, 1280 height 1, 800 color 1,64,24,128 command_target_is 1 list 26 top 26,15 left 26,430 width 26,430 height 26,60 color 26,0,255,0 print_target_is 26 font_color 26,255,0,0 font_size 26,30 font_name 26,"comic sans MS" print " COPIE SIMPLE " list 27 top 27,160 left 27,430 width 27,430 height 27,60 color 27,0,255,0 print_target_is 27 font_color 27,128,0,0 font_size 27,40 font_name 26,"comic sans MS" print " P A P I L L O N " testclavier: r$=inkey$ n=n+1:if n = 40000 then r$="FIN" if r$<>"" then beep:goto ecrit goto testclavier ecrit: print_target_is 1 print_locate 50,600 font_color 1,128,0,0 font_size 1,40 print r$ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 2:40 | |
| Salut Champollion 1/ Pour poster un code sur le FORUM, mets ton code entres les 2 balises [ code] et [/code] SANS AUCUNE ESPACE ENTTRE LES CROCHETS2/ Tu as certainement remarqué qu’un smiley s’est glissé à 2 reprises dans ton code. Le Forum transforme les 2 caractères (8 suivi immédiatement d’une parenthèse fermante) par Pour éviter ce désagrément, ajoute une espace entre le 8 et la parenthèse. 3/ J’ai essayé de comprendre ton code pour pouvoir te donner une réponse utile : tu utilises (comme nous avons tous fait avant de connaitre PANORAMIC) une ancienne méthode de coder avec PRINT, INKEY$, GOTO etc. Ça s’appelle la programmation séquentielle (c’était utile sous DOS). Or PANORAMIC nous offre la possibilité de la programmation événementielle et c’est beaucoup plus souple et plus élégante. Alors autant l’utiliser ! J’ai transformé ton code, tout en restant dans l’optique de ce que j’ai cru comprendre de ce que tu veux en faire ! Tu remarqueras qu’il n’y a aucun PRINT, aucun INKEY$ , aucun GOTO dans le code : car on peut facilement s’en passer. Mais chacun est libre de coder comme il le souhaite, PANORAMIC ne s’y oppose pas. Au lieu de INKEY$, il suffit de cliquer!!! Essaye de comprendre le code et n’hésite pas à demander des éclaircissements ou de l’aide si besoin est. Evidemment le programme n’est pas fini, mais l’essentiel y est. Tu n’as qu’à le compléter à ta manière. - Code:
-
' ****************************************************************************** ' Code modifié par Papydall d'apès une idée de Champollion ' ******************************************************************************
Declaration() GUI() end : ' Ce end est essentiel pour que le programme aille pas exécuter la suite ' ****************************************************************************** ' Ici on déclare les labels,les variables, les constantes etc.. SUB Declaration() label clic dim a$(4),e$(9) a$(1)= "DECOUVERTE" a$(2)= "APPRENTISSAGE" a$(3)= "EVALUATION" a$(4)= "QUITTER" e$(1)= "Copie à vue" e$(2)= "Copie de mémoire" e$(3)= "Ecriture texte entendu" e$(4)= "Ecriture sous dessin" e$(5)= "Homophones lexicaux" e$(6)= "Homophones grammaticaux" e$(7)= "Accords genre et nombre" e$(8)= "Conjugaison" e$(9)= "Dictée"
END_SUB ' ****************************************************************************** ' Ici on définit tous les objets utilisés dans le programme : FORM, BUTTON,PICTURE, etc... SUB GUI() dim_local n,l,h : ' variables locales ' Définition de FORM 10 et des objets qu'il contient form 10 : width 10, 1280 : height 10, 800 : color 10,64,64,128 ' On défini un ALPHA pour éviter d'utilser PRINT alpha 11 : parent 11,10 : top 11,15 : left 11,430 font_color 11,255,0,0 : font_name 11,"comic sans MS": font_size 11,30 ' On donne un texte a l'ALPHA caption 11, "Ecriture Orthographe" ' On défini un PICTURE qui recevra l'image picture 12 : parent 12,10 : top 12, 300 : left 12, 470 : height 12, 300 : width 12, 800 ' file_load 12,"Papillion.bmp" l =140 ' Définition des boutons for n = 13 to 15 button n : parent n,10 : top n, 140 : left n, l: l=l+ 350 : width n, 240:height n, 50 caption n, a$(n-12) : font_size n, 22 :font_bold n : on_click n,clic next n button 16 : parent 16,10 : top 16, 640 : left 16, 510 : font_size 16, 22 : font_bold 16 width 16, 230:height 16, 50 : caption 16, a$(4) : on_click 16,clic
' ------------------------------------------------------------------------------ ' Définition du FORM 20 et de ses objets form 20 : width 20, 1280 : height 20, 800 : color 20,64,24,128 alpha 21 : parent 21,20 : top 21,15 : left 21,430 : font_color 21,255,0,0 font_size 21,30 : font_name 21,"comic sans MS" : caption 21,"Liste des ecercices"
l=450 :h=120 for n = 22 to 30 button n : parent n, 20 : top n, h : left n, l: h=h+ 60 : width n, 400 : height n, 50 caption n, e$(n-21) : font_color n, 0,255,255 : font_size n, 20 :font_bold n on_click n,clic next n button 31 : parent 31,20 : top 31,700 : left 31,600 caption 31, "Retour" : on_click 31,clic hide 20 : ' on cache ce FORM ' ------------------------------------------------------------------------------ ' Définition du FORM 40 et des ses objets form 40 : width 40, 1280 : height 40, 800 : color 40,64,24,128 alpha 41 : parent 41,40 : top 41,15 : left 41,430 : font_color 41,255,0,0 font_size 41,40 : font_name 41,"comic sans MS" : caption 41,"COPIE SIMPLE" alpha 42 : parent 42,40 : top 42,160 : left 42,430 : color 42,0,255,0 font_color 42,128,0,0 : font_size 42,40 : font_name 42,"comic sans MS" caption 42," P A P I L L O N " button 43 : parent 43,40 : top 43,700 : left 43,600 caption 43,"Retour" : on_click 43,clic hide 40 : ' on cache ce FORM END_SUB ' ****************************************************************************** ' Ici on traite tous les clicks afin d'aiguiller le programme vers le sous-programme adéquat clic: if clicked(13) > 0 then Decouverte() : return if clicked(14) > 0 then Apprentissage() : return if clicked(15) > 0 then Evaluation() : return if clicked(16) > 0 then Quitter() if clicked(22) > 0 then Copie_A_Vue() : return if clicked(23) > 0 then Copie_De_Memoire() : return if clicked(24) > 0 then Ecriture_Texte_Entendu() : return if clicked(25) > 0 then Ecriture_Sous_Dessin() : return if clicked(26) > 0 then Homophones_Lexicaux() : return if clicked(27) > 0 then Homophones_Grammaticaux() : return if clicked(28) > 0 then Accords_Genre_Et_Nombre() : return if clicked(29) > 0 then Conjugaison() : return if clicked(30) > 0 then Dictee() : return if clicked(31) > 0 then show 10 : hide 20 if clicked(43) > 0 then show 20 : hide 40
' ici on traite les éventuels clicks supplémentaires return ' ****************************************************************************** ' A compléter ... SUB Copie_A_Vue() show 40 message "Copie à vue en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Copie_De_Memoire() message "Copie de mémoire en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Ecriture_Texte_Entendu() message " Ecriture texte entendu en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Ecriture_Sous_Dessin() message " Ecriture sous dessin en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Homophones_Lexicaux() message "Homophones lexicaux en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Homophones_Grammaticaux() message "Homophones grammaticaux en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Accords_Genre_Et_Nombre() message " Accords genre et nombre en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Conjugaison() message "Conjugaison en cours ..." END_SUB ' ****************************************************************************** ' A Compléter .... SUB Dictee() message "Dictée en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Decouverte() show 20 END_SUB ' ****************************************************************************** ' A compléter .... SUB Apprentissage() message "Apprentissage en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Evaluation() message "Evaluation en cours ..." END_SUB ' ****************************************************************************** SUB Quitter() if message_confirmation_yes_no("Vous Voulez vraiment quitter") = 1 then terminate END_SUB ' ******************************************************************************
Dernière édition par papydall le Mer 29 Mai 2013 - 19:03, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 8:25 | |
| Papydall, en effet c'est plus dans l'esprit de Panoramic, par contre tu ne lui montre pas la partie qui lui posait problème (la saisie du texte) Pour moi, ça passerait par un timer pour savoir si le temps imparti est écoulé, un edit sur lequel on passe le focus et si on veut traiter chaque appui de touche dans cet edit, on fait une procédure on_change dans lequel par exemple on compare le texte de l'edit avec la chaîne affichée dans le cas de la copie simple.
L'avantage de l'edit: si l'utilisateur fait une faute de frappe, il peut revenir en arrière pour corriger.
Tu peux aussi ajouter un timer de confort qui remet le focus sur l'edit toute les secondes par exemple pour que l'utilisateur n'ait pas à cliquer dessus s'il clique ailleurs, mais normalement, ce n'est pas utile.
Sinon dans ton code Champolion, en effet inkey$ ne fonctionne pas et tu as raison de dire que c'est peut être un bug, à confirmer par Jack, mais en effet, ça ne me semble pas normal.
C'est vrai que l'on ne l'utilise quasiment plus que pour des raisons de compatibilité avec les anciennes façons de programmer, il n’empêche que comme elle est présente, cette instruction devrait fonctionner ...
En tout cas, la méthode de Papydall est plus propre (je ne dis pas ça pour me moquer de ton code, mais si tu redimensionnes tes cadres, tout s'efface avec des print. Tu utilisais des lists pour faire des cadres sur lesquels tu faisais des print alors que normalement on ajoute des objets dedans. Un autre problème que tu aurais eu dans ta méthode c'est que tu créais tes objets dans tes procédures et par conséquent tu aurais dû ajouter des tests devant chacun d'entre eux pour éviter d'avoir des messages "object already exists")
Voilà, j'espère que cela te sera utile
| |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 9:35 | |
| Merci pour le temps que vous avez pris pour reprogrammer mon code. C'est vrai que j'ai choisi panoramic pour la ressemblance avec les ancienss basic dont je me servais. Et j'ai gardé mes vieilles habitudes qui tournaient rond ( print, locate, inkey$ if then else, etc...) J'ai du mal à penser autrement. Je fabrique depuis longtemps des maquettes simples pour joindre à mes cahiers des charges. Ensuite le programmeur développeur de mon éditeur reprend tout cela pour concevoir un programme en C++ ou autre. ( Je suis l'auteur et concepteur de tous les logiciels de Français "LECTHEME" Edit JOCATOP ) Au début, je les présentais en Turbo basic !. Bon je vais quand même essayer de revoir mes connaissances, mais c'est dommages que des fonctions aussi simples et pratiques que inkey$ ne fonctionnent pas. Très Cordialement Denis Champollion. | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 9:40 | |
| Rebonjour ! Jicehel a bien compris mon problème . Scancode est simple et fonctionne . Je vais essayer d'y intercaler un timer. Un jour il me faudra peut-etre un petit entretien téléphonique pour clarifier, si cela est possible bien entendu. Cordialement D Champollion | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 9:56 | |
| @Champollion J'ai regardé ton code initiale, c'est une usine à gaz comme je sais les faire J'ai mis un peu d'ordre dans ton code pour que tu puisses voir comment structurer tes codes. Je n'ai pas, volontairement, corriger certaines erreurs, pour que tu le fasses toi même. Et j'ai conservé ta méthode goto/gosub pour ne pas sauter les étapes. Un conseil: dans l'éditeur Panoramic met les commentaires en rouge pour une bonne lisibilité. Bon courage. - Code:
-
' =============================================== Les déclarations et objets ' les dim dim a$(10):dim n:dim l:dim e$(10):dim h:dim r$ ' les label label bib: label exercices : label finir : label decouv: label appren: label eval label choix1:label copie:label testclavier :label ecrit ' form 1 form 1:width 1, 1280:height 1, 800:color 1,64,24,128:hide 1 ' form 2 form 2:width 2, 1280:height 2, 800:color 2,64,64,128 ' form 3 form 3:width 3, 1280:height 3, 800:color 3,64,24,128:hide 3
' ---------------------------------------------------------------------- ' Objets de form 1 command_target_is 1 ' list 26 list 26:top 26,15:left 26,430:width 26,430:height 26,60:color 26,0,255,0 font_color 26,255,0,0 :font_size 26,30:font_name 26,"comic sans MS" ' list 27 list 27:top 27,160:left 27,430:width 27,430:height 27,60:color 27,0,255,0 font_color 27,128,0,0:font_size 27,40:font_name 27,"comic sans MS" ' ---------------------------------------------------------------------- ' Objets de form 3 command_target_is 3 l=450 :h=120 for n = 9 to 17 button n top n, h left n, l: h=h+ 60 width n, 400:height n, 50 ' caption n, e$(n): ' ici faut revoir la copie car e$(n) a été défini de 1 à 9 pour les boutons du form 2 font_color n, 0,255,255 font_size n, 20 font_bold n next n list 25:top 25,15:left 25,430:width 25,430:height 25,60:color 25,0,255,0 font_color 25,255,0,0:font_size 25,30:font_name 25,"comic sans MS" ' ---------------------------------------------------------------------- ' Objets de form 2 command_target_is 2 ' list 24 list 24:top 24,15:left 24,430:width 24,430:height 24,60:color 24,0,255,0 font_color 24,255,0,0:font_size 24,30:font_name 24,"comic sans MS" ' picture 4 picture 4:top 4, 300:left 4, 470:height 4, 300:width 4, 800 ' button 8 gosub bib button 8:top 8, 640:left 8, 510:font_size 8, 22:font_bold 8:width 8, 230:height 8, 50 caption 8, a$(4) ' button 5,6,7 l = 140 for n = 5 to 7 button n top n, 140 left n, l: l=l+ 350 width n, 240:height n, 50 caption n, a$(n-4) font_color n, 0,255,255 font_size n, 22 font_bold n next n ' ---------------------------------------------------------------------- ' on se prépare print_target_is 24:print "Ecriture Orthographe" rem file_load 4,"papillon.bmp" ' les click on_click 5, decouv on_click 6, appren on_click 7, eval on_click 8, finir END ' =============================================== LES SOUS-PROGRAMMES choix1: ' .... ' .... return ' ---- bib: a$(1)= "DECOUVERTE" a$(2)= "APPRENTISSAGE" a$(3)= "EVALUATION" a$(4)="QUITTER" e$(1)= "Copie à vue" e$(2)= "Copie de mémoire" e$(3)="Ecriture texte entendu" e$(4)= "Ecriture sous dessin" e$(5)="Homophones lexicaux" e$(6)= "Homophones grammaticaux" e$(7)= "Accords genre et nombre" e$(8)= "Conjugaison" e$(9)= "Dictée" return ' --------- exercices: ' .... ' .... return ' --------- decouv: ' .... ' .... return ' --------- appren: show 3 print_target_is 25 print " Liste des exercices" on_click 9, copie return ' --------- eval: ' .... ' .... return ' --------- finir: ' .... ' .... return ' --------- copie: show 1 print_target_is 26 print " COPIE SIMPLE " print_target_is 27 print " P A P I L L O N " return ' --------- testclavier: r$=inkey$ n=n+1:if n = 40000 then r$="FIN" if r$<>"" then beep:goto ecrit goto testclavier return ' ------------------ ecrit: print_target_is 1 print_locate 50,600 font_color 1,128,0,0 font_size 1,40 print r$ return
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 10:21 | |
| PS: Message perso, j'ai un fils en CE2, une fille en CP et une en maternelle (moyen) qui passent tous bien sûr dans la classe supérieurs l'année prochaine. Si tu as des tests à faire sur tes programmes par un adulte, en principe, tu trouvera sur ce forum, mais s'il doivent être fait par des enfant, demande moi en message privé ou sur le forum et je leur demanderais de tester | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive suite Mer 29 Mai 2013 - 11:59 | |
| Merci encore , je vais plancher sur tes propositions. Les essais en classe, c'est l'éditeur qui s'en occupe . ANcien Directeur d'Ecole et formateur, j'ai en plus 4 petits enfants pour tester. Autre chose: Quand je travaille dans panoramic, je teste un bout de programme, ça fonctionne ou non. S'il y a un message d'erreur, je peux revenir à ma liste mais après avoir quitté la fenêtre de travail que j'ai créée et également une autre fenêtre panoramic grise qui vient je ne sais d'où . Si je suis dans une boucle sans fin, je ne peux revenir à mon éditeur et retester, je suis obliger de recharger panoramic. Si on pouvait s'entretenir sur ces détails pratiques, ça m'aiderait beaucoup. 0610312788. Très cordialement Denis
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 13:13 | |
| La fenêtre qui vient d'on ne sait où, c'est vraisemblablement FORM 0 (qui est automatiquement créer par Panoramic).
Quand ton programme "plante" il y a un moyen de revenir à l'éditeur sans recharger. Je décris: tu appuis sur ton clavier simultanément sur (CONTROL)+(SHIFT)+(ECHAP ou SUPRIME) ce qui a pour effet d'ouvrir le gestionnaire des tâches de Windows. Ensuite dans l'onglet processus tu recherches Panoramic.exe (attention: pas panoramic_editor) et tu le sélectionnes, ensuite tu cliques le bouton "fin de tâche". Tu fermes le gestionnaire des tâches. Tu peux repartir sur ton code...... Quelque-fois il est nécessaire, en plus, de cliquer sur nouveau fichier de l'éditeur Panoramic pour libérer complètement l'éditeur.
J'aimerais ta réaction sur la réorganisation que j'ai fait sur ton code.
A+
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 13:32 | |
| @Papydall,
Ton code est, effectivement, le meilleur mais je pense que Champollion n'en est pas à ce stade.... çà se discute.
@Champollion J'ai une question sur ce qui t'intéresse au premier plan: 1) tu souhaites pondre ton programme rapidement sans plus et utiliser le forum pour cela. 2) tu souhaites progresser sous Panoramic et pondre toi même le programme en utilisant le forum pour progresser.
C'est important de le savoir car dans le cas N°1 on suit la voie Papydall et dans le cas N°2 ont suit la mienne. Jicehel se trouvant entre les deux...
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 13:52 | |
| La fameuse voie du milieu...
Bon, je laisse Champolion répondre à la question en espérant que ce soit la 2ème solution... | |
| | | champollion
Nombre de messages : 14 Date d'inscription : 25/05/2013
| Sujet: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 14:12 | |
| Bonjour à vous trois qui vous intéressez à mon travail.En fait dans un premier temps je cherche à utiliser les fonctions simples du basic, que je mettais en oeuvre en turbo basic pour bâtir mon programme . parallèlement, je me perfectionnerai dans panoramic. Merci déjà pour scancode qui fonctionne un peu comme inkey$. Avec un if x=0 et retour à x=scancode avec un timer entre les deux je peux reproduire ce que faisais avec inkey$. Je vous enverrai cela quand ce sera au point. Je travaille pour mettre au point un logiciel d'écriture/orthographe pour cycles 2 et 3 pour faire suite aux 8 logiciels qui tournent déjà dans 10000 écoles ( pour les voir, taper JOCATOP LECTHEME CHAMPOLLION dans un moteur de recherche ) Bonne suite de journée. Denis | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 Mer 29 Mai 2013 - 14:42 | |
| Excellent, je ne sais pas si mes enfants les utilisent dans leurs écoles, mais ils en sont en plein dans la cible. Bravo pour tes créations Champollion. Comme quoi c'est possible de créer des programmes (et j'espère de gagner sa vie avec) | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: re Mer 29 Mai 2013 - 18:15 | |
| Je viens de retrouver le code de Papydall sur la première idée de Champollion; j'y ai relevé un LABEL absent (LABEL clic) et deux SUBs qui se terminent par RETURN. Broutilles, non, ce qui me chiffonne c'est qu'au delà d'une douzaine de SUBs, le PANORAMIC déclare forfait !?! Pour info : - Code:
-
****************************************************************************** ' Code modifié par Papydall d'apès une idée de Champollion ' ******************************************************************************
label clic Declaration() GUI() end : ' Ce end est essentiel pour que le programme aille pas exécuter la suite ' ****************************************************************************** ' Ici on déclare les labels,les variables, les constantes etc.. SUB Declaration() label clic dim a$(4),e$(9) a$(1)= "DECOUVERTE" a$(2)= "APPRENTISSAGE" a$(3)= "EVALUATION" a$(4)= "QUITTER" e$(1)= "Copie à vue" e$(2)= "Copie de mémoire" e$(3)= "Ecriture texte entendu" e$(4)= "Ecriture sous dessin" e$(5)= "Homophones lexicaux" e$(6)= "Homophones grammaticaux" e$(7)= "Accords genre et nombre" e$(8)= "Conjugaison" e$(9)= "Dictée"
END_SUB ' ****************************************************************************** ' Ici on définit tous les objets utilisés dans le programme : FORM, BUTTON,PICTURE, etc... SUB GUI() dim_local n,l,h : ' variables locales ' Définition de FORM 10 et des objets qu'il contient form 10 : width 10, 1280 : height 10, 800 : color 10,64,64,128 ' On défini un ALPHA pour éviter d'utilser PRINT alpha 11 : parent 11,10 : top 11,15 : left 11,430 font_color 11,255,0,0 : font_name 11,"comic sans MS": font_size 11,30 ' On donne un texte a l'ALPHA caption 11, "Ecriture Orthographe" ' On défini un PICTURE qui recevra l'image picture 12 : parent 12,10 : top 12, 300 : left 12, 470 : height 12, 300 : width 12, 800 ' file_load 12,"Papillion.bmp" l =140 ' Définition des boutons for n = 13 to 15 button n : parent n,10 : top n, 140 : left n, l: l=l+ 350 : width n, 240:height n, 50 caption n, a$(n-12) : font_size n, 22 :font_bold n : on_click n,clic next n button 16 : parent 16,10 : top 16, 640 : left 16, 510 : font_size 16, 22 : font_bold 16 width 16, 230:height 16, 50 : caption 16, a$(4) : on_click 16,clic
' ------------------------------------------------------------------------------ ' Définition du FORM 20 et de ses objets form 20 : width 20, 1280 : height 20, 800 : color 20,64,24,128 alpha 21 : parent 21,20 : top 21,15 : left 21,430 : font_color 21,255,0,0 font_size 21,30 : font_name 21,"comic sans MS" : caption 21,"Liste des ecercices"
l=450 :h=120 for n = 22 to 30 button n : parent n, 20 : top n, h : left n, l: h=h+ 60 : width n, 400 : height n, 50 caption n, e$(n-21) : font_color n, 0,255,255 : font_size n, 20 :font_bold n on_click n,clic next n
button 31 : parent 31,20 : top 31,700 : left 31,600 caption 31, "Retour" : on_click 31,clic hide 20 : ' on cache ce FORM ' ------------------------------------------------------------------------------ ' Définition du FORM 40 et des ses objets form 40 : width 40, 1280 : height 40, 800 : color 40,64,24,128 alpha 41 : parent 41,40 : top 41,15 : left 41,430 : font_color 41,255,0,0 font_size 41,40 : font_name 41,"comic sans MS" : caption 41,"COPIE SIMPLE" alpha 42 : parent 42,40 : top 42,160 : left 42,430 : color 42,0,255,0 font_color 42,128,0,0 : font_size 42,40 : font_name 42,"comic sans MS" caption 42," P A P I L L O N "
button 43 : parent 43,40 : top 43,700 : left 43,600 caption 43,"Retour" : on_click 43,clic hide 40 : ' on cache ce FORM
END_SUB ' ****************************************************************************** ' Ici on traite tous les clicks afin d'aiguiller le programme vers le sous-programme adéquat clic: if clicked(13) > 0 then Decouverte() : return if clicked(14) > 0 then Apprentissage() : return if clicked(15) > 0 then Evaluation() : return if clicked(16) > 0 then Quitter() if clicked(22) > 0 then Copie_A_Vue() : return if clicked(23) > 0 then Copie_De_Memoire() : return if clicked(24) > 0 then Ecriture_Texte_Entendu() : return if clicked(25) > 0 then Ecriture_Sous_Dessin() : return if clicked(26) > 0 then Homophones_Lexicaux() : return if clicked(27) > 0 then Homophones_Grammaticaux() : return if clicked(28) > 0 then Accords_Genre_Et_Nombre() : return if clicked(29) > 0 then Conjugaison() : return if clicked(30) > 0 then Dictee() : return if clicked(31) > 0 then show 10 : hide 20 if clicked(43) > 0 then show 20 : hide 40
' ici on traite les éventuels clicks supplémentaires
return ' ****************************************************************************** ' A compléter ... SUB Copie_A_Vue() show 40 message "Copie à vue en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Copie_De_Memoire() message "Copie de mémoire en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Ecriture_Texte_Entendu() message " Ecriture texte entendu en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Ecriture_Sous_Dessin() message " Ecriture sous dessin en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Homophones_Lexicaux() message "Homophones lexicaux en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Homophones_Grammaticaux() message "Homophones grammaticaux en cours ..." END_SUB ' ****************************************************************************** ' A compléter ... SUB Accords_Genre_Et_Nombre() message " Accords genre et nombre en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Conjugaison() message "Conjugaison en cours ..." END_SUB ' ****************************************************************************** ' A Compléter .... SUB Dictee() message "Dictée en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Decouverte() show 20 END_SUB ' ****************************************************************************** ' A compléter .... SUB Apprentissage() message "Apprentissage en cours ..." END_SUB ' ****************************************************************************** ' A compléter .... SUB Evaluation() message "Evaluation en cours ..." END_SUB ' ****************************************************************************** SUB Quitter() if message_confirmation_yes_no("Vous Voulez vraiment quitter") = 1 then terminate END_SUB '
| |
| | | Contenu sponsorisé
| Sujet: Re: Fonction inkey$ inactive dans un form autre que form0 | |
| |
| | | | Fonction inkey$ inactive dans un form autre que form0 | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |