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 |
|
|
| comment sortir de cette boucle | |
| | Auteur | Message |
---|
RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: comment sortir de cette boucle Dim 2 Nov 2014 - 12:07 | |
| bonjour a tous. je profite du mauvais temps pour reprendre mon code mais j'ai un problème. je pensais pouvoir m'en tirer mais je n'arrive pas a sortir d'une boucle qui doit etre en ligne 15. voici ce que je voudrai faire . - je lance le code ; une ligne de 10 edits s'affiche. - je rentre des chiffres de 1 a 10 dans n'importe quel ordre j'usqu'a ce que je rentre un 0 ( zero).exp:2-6-4-3-0. ce zero doit mettre fin a l'entrée de chiffres sur cette serie d'edits. ce zero doit me permettre de passer au 1er edit de la série suivante. la serie suivante se met bien en place ,mais le focus revient en 1er serie alors que je voudrai qu'il se mette sur le 1er edit de la nouvelle serie. ci-joint le code - Code:
-
' Une autre présentation du code: ' réponse de cosmos suite a post du 19/09/14
error_french variables() labels()
alpha 400 top 400,50:left 400,100:caption 400," Rajout de 7 points pour capacité au parcours"
for i%= 401 to 401+(nc%-1) edit i% : top i%,80 : left i%,a% : width i%,20 a%=a%+35 on_key_up i%,f1 next i%
set_focus 401
end ======================================== f1: pts%=7 if key_up_code=13 i% = number_key_up if numeric(text$(i%))=0 then return ch%=val(text$(i%)) :print "ch% = ";ch% :' pour verif part%(ch%,0)=ch% if ch%=0 then gosub suite part%(ch%,1)=part%(ch%,1)+pts% ' if part%(ch%,0)=0 then gosub suite :' comment désactiver le set_focus (ligne 31) suite a part%(ch%,0)=0 ? set_focus i%+1 end_if return ' ======================== suite: alpha 500 top 500,110:left 500,100:caption 500," Rajout de 10 points pour forme actuelle" a%=100 for b%= 501 to 501+(nc%-1) edit b% : top b%,140 : left b%,a% : width b%,20 a%=a%+35 on_key_up b%,suite1 next b%
set_focus 501 suite1: pts%=7 if key_up_code=13 b% = number_key_up if numeric(text$(b%))=0 then return ch%=val(text$(b%)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% ' if part%(ch%,0)=0 then gosub suite2 ' set_focus b%+1 end_if return ' ========== sortie: print "au revoir" end ' ============= les variables =============== sub variables() dim i% ,b% :' variables de boucle dim nc% : nc%=10 :' pour l'instant dim a% : a%=100 dim ch% dim part%(15,1) dim pts% end_sub ' ============= les labels ================ sub labels() label f1 label sortie label suite,suite1 end_sub
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: comment sortir de cette boucle Dim 2 Nov 2014 - 12:56 | |
| Tu fais comme ceci: - Code:
-
' Une autre présentation du code: ' réponse de cosmos suite a post du 19/09/14
error_french variables() labels()
alpha 400 top 400,50:left 400,100:caption 400," Rajout de 7 points pour capacité au parcours"
for i%= 401 to 401+(nc%-1) edit i% : top i%,80 : left i%,a% : width i%,20 a%=a%+35 on_key_up i%,f1 next i%
set_focus 401
end ======================================== f1: pts%=7 if key_up_code=13 i% = number_key_up if numeric(text$(i%))=0 then return ch%=val(text$(i%)) :print "ch% = ";ch% :' pour verif part%(ch%,0)=ch% if ch%=0 gosub suite return end_if part%(ch%,1)=part%(ch%,1)+pts% ' if part%(ch%,0)=0 then gosub suite :' comment désactiver le set_focus (ligne 31) suite a part%(ch%,0)=0 ? set_focus i%+1 end_if return ' ======================== suite: alpha 500 top 500,110:left 500,100:caption 500," Rajout de 10 points pour forme actuelle" a%=100 for b%= 501 to 501+(nc%-1) edit b% : top b%,140 : left b%,a% : width b%,20 a%=a%+35 on_key_up b%,suite1 next b% set_focus 501 return
suite1: pts%=7 if key_up_code=13 b% = number_key_up if numeric(text$(b%))=0 then return ch%=val(text$(b%)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% ' if part%(ch%,0)=0 then gosub suite2 ' set_focus b%+1 end_if return ' ========== sortie: print "au revoir" end ' ============= les variables =============== sub variables() dim i% ,b% :' variables de boucle dim nc% : nc%=10 :' pour l'instant dim a% : a%=100 dim ch% dim part%(15,1) dim pts% end_sub ' ============= les labels ================ sub labels() label f1 label sortie label suite,suite1 end_sub
Ton problème vient du fait que tu n'as pas tout à fait saisi la logique des évènements en Panoramic. Tu déclares bien un ON_KEY_UP sur chaque édit. Mais dans le traitement d'un évènement pour la première série de EDIT, tu crées la seconde (pas de problème), mais sous forme de GOSUB. Et donc, tu reviens dans le traitement de l'évèmenemt qui se poursuit et se termine en donnant le focus au EDIT de la première série... Tu pourrais obtenir le même effet en remplaçant ton GOSUB simplement par un GOTO, à la ligne 30. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: comment sortir de cette boucle Dim 2 Nov 2014 - 14:30 | |
| Salut Rmont, Effectivement Klaus a raison, il y a un problème de compréhension des événements sous Panoramic. Je te rassure, j'ai (moi-même) galéré, longtemps, avant de maîtriser. Pour te simplifier, et empêcher toute erreur: Tu dois (d'office), faire suivre chaque nouveau LABEL par RETURN. Exemple: - Code:
-
Commence: ' le code ----- return Cette méthode est la plus sure pour t'éviter les problèmes d'événement(s). Autre chose: Il faut que tu fasses une SUB spécialement pour déclarer les objets, car dans ton code la création de l'ALPHA 500 est mal placée et déclenche une erreur (tentative de créer 2 fois le même objet). (voir l'exemple ci-dessous) Ensuite:il faut que tu prévois que l'utilisateur de ton programme peut entrer des valeurs trop grandes dans les édits. Regarde ce code et vois comment j'empêche l'utilisateurs de saisir une valeur>15 (suit la variable max_ch%). - Code:
-
' Une autre présentation du code: ' réponse de cosmos suite a post du 19/09/14
error_french variables() labels() objets():' pour éviter de déclarer plusieurs fois le même objetnumber_key_up
set_focus 401
end ======================================== f1: pts%=7 if key_up_code=13 i% = number_key_up if numeric(text$(i%))=0 then return ch%=val(text$(i%)) ' Controle du maximum autorisé pour la saisie de ch% IF ch%>max_ch% ' c'est pas bon: message d'information, éffacement de la saisie, et attendre nouvelle saisie message "Maximun autorisé: "+str$(max_ch%) text i%,"" return ELSE ' c'est OK on continue print "ch% = ";ch% :' pour verif part%(ch%,0)=ch% if ch%=0 gosub suite : return end_if part%(ch%,1)=part%(ch%,1)+pts% ' if part%(ch%,0)=0 then gosub suite :' comment désactiver le set_focus (ligne 31) suite a part%(ch%,0)=0 ? set_focus i%+1 END_IF end_if return ' ======================== suite: a%=100 for b%= 501 to 501+(nc%-1) edit b% : top b%,140 : left b%,a% : width b%,20 a%=a%+35 on_key_up b%,suite1 next b% set_focus 501 return
suite1: pts%=7 if key_up_code=13 b% = number_key_up if numeric(text$(b%))=0 then return ch%=val(text$(b%)) part%(ch%,0)=ch% part%(ch%,1)=part%(ch%,1)+pts% ' if part%(ch%,0)=0 then gosub suite2 ' set_focus b%+1 end_if return ' ========== sortie: print "au revoir" end ' ============= les variables =============== sub variables() dim i% ,b% :' variables de boucle dim nc% : nc%=10 :' pour l'instant dim a% : a%=100 dim ch% dim max_ch% : max_ch%=15 :' pour maitriser le nombre de ch% dim part%(max_ch%,1) dim pts% end_sub ' ============= les labels ================ sub labels() label f1 label sortie label suite,suite1 end_sub ' ============= les objets Panoramic ================ SUB objets() ' alpha 400 alpha 400 :top 400,50:left 400,100:caption 400," Rajout de 7 points pour capacité au parcours" ' création des edits (avec déclaration des on_key_up pour chacun) for i%= 401 to 401+(nc%-1) edit i% : top i%,80 : left i%,a% : width i%,20 a%=a%+35 on_key_up i%,f1 next i% ' alpha 500 alpha 500 : top 500,110:left 500,100:caption 500," Rajout de 10 points pour forme actuelle" END_SUB
Je constate que tu progresses et que tu n'hésites pas à poser des questions. Tu es sur la bonne voie, continues......
A+ | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: comment sortir de cette boucle Dim 2 Nov 2014 - 18:47 | |
| à klaus en définitive,je n'était pas loin de la solution ,mais celle-ci m'échappait à jean-claude pour l'instant ,j'essaie simplement de faire fonctionner cette portion de code qui lorsqu'elle fonctionnera bien ,sera incorporée dans un ensemble plus grand. je mettrai des butées plus tard.
encore merci a vous
| |
| | | Contenu sponsorisé
| Sujet: Re: comment sortir de cette boucle | |
| |
| | | | comment sortir de cette boucle | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |