1

Voila, je suis un noob, et g un bug sur un programme :
il dresse un tableau d'avancement, puis lorqu'on fait ENTER, sa ouvre un PopUp ou lon peut choir : Quitter, Recommencer, Zoomer, etc...
Mais moi je voudrais, que lorsque ce popup est affiché et que je fais ESC, sa me vire le popup et que sa revienne a limage ki ya sous le popup...voila le "code" :
[code]Lbl menu
PopUp {"Quitter","Recommencer","Tableau","Zoom réactifs","Zoom produits","GraphXmax","Graph complet","Réa(s) limitant"},gt
If gt=0:Return
If gt=1:Goto fin
If gt=2:Goto dbt
If gt=3:Goto tbl
If gt=4:Goto zr
If gt=5:Goto zp
If gt=6:Goto grap
If gt=7 Then :1c:Goto grap:EndIf
If gt=8:Goto limi[/code]

Avec ceci, qd je fé ESC, il me met "Undefined Variable", je fé GOTO et sa mammène a cette ligne : If gt=0:Return
Alors esque quelqu'un aurait la solution à mon problème, à savoir le virage du popup par la touche ESC^^
Merci d'avance grin
Amicalement ++

2

c'est parceque si tu appuies sur esc, Popup ne va pas modififer la valeur de gt, et je suppose que tu ne l'as pas définie avant
il faut que juste avant le menu tu fasses un 0->gt et ca devrait marcher
avatar

3

g fé sa :
[code]0->gt
Lbl menu
PopUp {"Quitter","Recommencer","Tableau","Zoom réactifs","Zoom produits","GraphXmax","Graph complet","Réa(s) limitant"},gt
If gt=0:Return
If gt=1:Goto fin
If gt=2:Goto dbt
If gt=3:Goto tbl
If gt=4:Goto zr
If gt=5:Goto zp
If gt=6:Goto grap
If gt=7 Then :1->c:Goto grap:EndIf
If gt=8:Goto limi[/code]
Et sa me met tjrs la meme erreur :'(

4

c bon !!!!
g mis le "0->gt" apré le "Lbl menu" et sa a marché !!!
Merci beaucoup Nu !!! wink

5

Vous allez rigoler, mais maintenant, j'ai un autre problème : une fois que j'ai fait ESC, sa vire le popup (merci nu), mais je peux plus le faire revenir !!!
Au secours ! Comment faut-il faire pour que le popup puisse revenir qd je fé ENTER ???
Merci d'avance, amicalement +++

6

ben que tu rééxecutes la ligne avec "popup ..." ?
tu fais un goto Menu

je vois pas trop ce qui te pose problème. Si c'est pas ca, explique plus en détail ton problème
avatar

7

Je v expliquer pas à pas ^^ :
Bon, au début, je rentre les données du tableaux, ensuite(ENTER), il y a le réactif limitant qui s'affiche, puis(ENTER), le tableau d'avancement s'affiche à son tour. A ce moment la, si je fé ENTER, le popup s'affiche et je peux soit QUITTER, RECOMMENCER, ZOOMER, TRACER UN GRAPH, etc....le popup marche dans tts les sections, cad si je suis ds le zoom par ex, et ke je fé ENTER, le popup s'affichera, mais la ou il y a le problème, c lorsque je fé ESC (avec le 0->gt et le return), cela me vire le popup exactement comme je le voulait, mais si je fé ENTER(apré avoir fé aparaitre et disparaitre le popup), le popup ne saffiche plus, je né donc plus accès à rien (jpe mm pas quitter^^), c come si yavé plus de goto menu (il y a un goto menu a la fin de chaque section>>le zoom, le tableau, etc)...
voila ou j'en suis...j'espere avoir été assez clair et concis smile

8

en fait, je suis arrivé a le faire marcher en bidouillant un truc, je c pas si c tré propre comme solution, mais sa marche ! voila comment g fé :
g remplacé le "if gt=0:return", par sa :"If gt=0 Then :0->gt:Return:EndIf"
sa marche, c lessentiel^^

9

C'est très crade comme code.

Je te propose d'utiliser la boucle while :

0->gt
while gt=0
popup gnagnagna
if gt=1:gnagna...
[...]
endwhile

Ainsi, si tu appuies sur ESC, la valeur gt est toujours à 0, et en plus, on revient au début de la boucle while et le popup réapparaît smile

10

naPO> je ne suis pas certain que ca fasse ce que babou31 veuille
ton code réouvre le popup tant qu'on appuie sur esc, mais quand on appuie sur entrée, il fait l'action qu'on a choisi et il quitte
j'ai ompris qu'il voulait que le code quitte quand on appuie sur ESC et que le popup revienne apres chaque action

je te conseille plutot ca :

loop
0->gt
popup ...
if gt=0 then
return
else if gt=1 then
... le code de la premiere action ...
else if gt=2 then
... le code de la 2eme action ...
else ... pareil pour les autres actions ...
endif
endloop

en général, un programme qui utilise des structures de boucle (loop, while, for) sera plus rapide qu'un programme qui utilise des labels
avatar

11

Moi, au lieu tu return, je mettrais un Exit... Cela permettrait de quitter proprement la boucle, et on aurait la place juste après la boucle pour afficher un mot d'adieu en quittant...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

12

Bin en fait g fé un peu comme nu a dit, mais ac d labels, si y me reste un peu de tps, j'essayeré de faire avec la boucle.
Voila ce ke sa donne :
[code]Lbl menu
0->gt
PopUp {"Quitter","Recommencer","Tableau","Zoom réactifs","Zoom produits","GraphXmax","Graph complet","Réa(s) limitant"},gt
If gt=0:Then
If ret=0:Goto dbt
If ret=1:Goto tbl
If ret=2:Goto zr
If ret=3:Goto zp
If ret=4:Goto grap
If ret=5:Goto limi
EndIf
If gt=1:Goto fin
If gt=2:Goto dbt
If gt=3:Goto tbl
If gt=4:Goto zr
If gt=5:Goto zp
If gt=6:Goto grap
If gt=7 Then :1->c:Goto grap:EndIf
If gt=8:Goto limi[/code]

13

Bref, je vous remercie tous pour votre patience et pour votre aide. Pour les curieux (ou ceux qui veulent faire des tableaux d'avancement chimique^^^), voici le programme entier : TAC89

14

ton code a l'air bien compliqué
je ne comprend pas pourquoi tu utilises 2 variables (ret et gt) et que tu fais deux fois les tests

link> oui, exact c'est mieux
avatar

15

si gt = 0 il teste ret
sinon il teste gt
ç1

16

oui, je crois que j'avais compris ca cheeky
ce que je vois pas, c'est pourquoi utiliser deux variables ?
avatar

17

Pour simplifier le code tu peux aussi utiliser les indirections dans tes sauts:

Lbl menu
0->gt
PopUp {"Quitter","Recommencer","Tableau","Zoom réactifs","Zoom produits","GraphXmax","Graph complet","Réa(s) limitant"},gt
If gt=0:Then
If ret=0:Goto dbt
If ret=1:Goto tbl
If ret=2:Goto zr
If ret=3:Goto zp
If ret=4:Goto grap
If ret=5:Goto limi
EndIf
If gt=1:Goto fin
If gt=2:Goto dbt
If gt=3:Goto tbl
If gt=4:Goto zr
If gt=5:Goto zp
If gt=6:Goto grap
If gt=7 Then :1->c:Goto grap:EndIf If gt=8:Goto limi

se transformerait en:

Lbl menu
0->gt
PopUp {"Quitter","Recommencer","Tableau","Zoom réactifs","Zoom produits","GraphXmax","Graph complet","Réa(s) limitant"},gt
If gt=0:Then
goto #(ret)

If gt=1:Goto fin
If gt=2:Goto dbt
If gt=3:Goto tbl
If gt=4:Goto zr
If gt=5:Goto zp
If gt=6:Goto grap
If gt=7 Then :1->c:Goto grap:EndIf If gt=8:Goto limi


Et il faudra bien sur changer les labels dans ton code comme ceci:

lbl dbt -> lbl 0
lbl tbl -> lbl 1
lbl zr -> lbl2
lbl zp -> lbl 3
lbl grap -> lbl 4
lbl limi -> lbl 5

[Attention ceci ne marche que pour les AMS > 2.07 si ma mémoire est bonne]

18

FpgForce> non, l'indirection sur les labels marche aussi dans les versions antérieures d'ams (2.05 tout au moins, mais surement tous les 2.0x si ce n'est pas les 1.0x aussi)

il y a bien plus simple que ca : popup ne touche pas à la variable passée en argument si tu appuies sur ESC, donc il suffit de faire :

1->gt
Lbl menu
PopUp {"Quitter","Recommencer","Tableau","Zoom réactifs","Zoom produits","GraphXmax","Graph complet","Réa(s) limitant"},gt
If gt=1:Goto fin
If gt=2:Goto dbt
If gt=3:Goto tbl
If gt=4:Goto zr
If gt=5:Goto zp
If gt=6:Goto grap
If gt=7 Then :1->c:Goto grap:EndIf
If gt=8:Goto limi

à ce moment là pour quitter il faut selectionner le 1er choix ou bien appuyer sur esc si on n'a rien selectionné avant
avatar

19

pas tout compris car pas tout lu; mais si tu creer une liste 'label' contenant les noms de tes labels, en faisant
:0->i
popup,{...},i
:if i=0:goto ret
:goto #(label[i])

tu peux sauter vers le label que tu veux atteindre directement pas besoin de faire tous ces tests inutiles

If gt=1:Goto fin
If gt=2:Goto dbt
If gt=3:Goto tbl
If gt=4:Goto zr
If gt=5:Goto zp
If gt=6:Goto grap
....