FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Gestionnaire de Projets Panoramic
par Minibug Aujourd'hui à 2:10

» Mah-Jong européen new-look
par jjn4 Hier à 16:35

» Button_picture
par pascal10000 Hier à 11:41

» Pourquoi le compilateur stagne
par Minibug Hier à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Hier à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Hier à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Hier à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Mer 13 Déc 2017 - 17:27

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 comment sortir de cette boucle

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
RMont



Nombre de messages : 184
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: comment sortir de cette boucle   Dim 2 Nov 2014 - 14: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


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: comment sortir de cette boucle   Dim 2 Nov 2014 - 14: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: comment sortir de cette boucle   Dim 2 Nov 2014 - 16: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+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



Nombre de messages : 184
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: comment sortir de cette boucle   Dim 2 Nov 2014 - 20: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


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: comment sortir de cette boucle   

Revenir en haut Aller en bas
 
comment sortir de cette boucle
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nuvi 2595 - Mode démonstration active
» Sortir d'une iframe [RESOLU]
» Boucle de retournement
» Comment afficher toujours la bonne heure sans boucle infini?
» boucle de retournement

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: