1

Salut,
Comment être sûr, que si la touche ESC est pressée dans une DIALOGBOX ou un POPUP, de revenir à cette DIALOGBOX ou à ce POPUP ?

Utilisation de la variable "ok"?

2

oui.

:if (ok=0) then
:text "Tu as appuyé sur ESC, vilain !!!!"
:else
:text "Tu as appuyé sur ENTER, c'est bien !"

3

Merci Yoshi Noir.
Les parenthèses sont-elles nécessaires ?

4

Voici mon code en exemple;

Prgm
2
{"Choix 1","Choix 2","Choix 3","Choix 4"}>>lmen11
lbl m1
PopUp lmen1,p
If (ok=0) Then 
Goto m1
Else
Disp p
EndIf
EndPrgm


Lorsque je tape sur ESC, le popup devrait se rééxécuter, au contraire p s'affiche !

Où est le bug ?

5

Les parenthèses autour de la condition du If ne sont pas nécessaires en TI-BASIC.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

Merci, as-tu une explication à mon bug ?

7

Je pense que PopUp n'utilise pas ok, mais si je me rappelle bien, ça met p à 0 quand on appuie sur ESC.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

je teste, merci

9

Cà ne fonctionne pas, p n'est pas mis à zero quant on appuit sur ESC.
Que faire pour empêcher l'appui sur cette touche ?

10

Si on appuie sur Esc p est laissé dans son état en fait.
Donc par exemple tu pourrais l'initialiser à 0 avant d'appeler popup, et après popup tester s'il est nul.
avatarCombien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

11

Ah oui, effectivement, maintenant que tu le dis ça me revient. Il est bizarre le TI-BASIC parfois.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

12

Tout à fait, Twindruff, j'avais penser à çà car effectivement p reste inchangé.
En fait j'ai besoin d'initialiser p à une des valeurs souhaitées par défaut dans le popup; je ne peux donc utiliser cette méthode même si elle solutionne mon problème.
J'envisage d'utiliser getkey() en dehors d'une boucle while ou loop mais comment faire ?

13

Le problème c'est que c'est popup qui prend la main et que tu ne peux rien faire pendant ce temps sad donc je vois pas de solution comme ça.

./11 oui c'est mal fait là.
avatarCombien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

14

zegoo (./12) :
En fait j'ai besoin d'initialiser p à une des valeurs souhaitées par défaut dans le popup; je ne peux donc utiliser cette méthode même si elle solutionne mon problème.

Malheureusement, c'est la seule solution, cela a donc pour conséquence qu'il n'est effectivement pas possible de présélectionner une valeur dans le popup. C'est une des limitations du TI-BASIC. Tu n'aurais pas ce problème en C.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

15

Mon idée d'utiliser getkey() à la manière de ngetchx(); en C est-elle possible ?

16

A priori, non !
Finalement j'ai changé mon fusil d"épaule !

Je code directement une fonction qui satisfait mes souhaits, c'est plus long mais ce n'est pas grave, l'important c'est que çà réagisse comme je le souhaite.

Je vous ferais bien part de mon source pour obtenir des réactions critiques de votre part, mais les balises ne font pas resortir correctement tous les caractères de mon programme.
Comment faire ?

17

Tu dessines à la main alors ?
Tu peux mettre ton code dans un bloc [ pre][/pre] ou alors cliquer sur le lien source (à droite dans la zone de création de message).
avatarCombien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

18

Ce n'est pas une solution, un menu codé en TI-BASIC va ramer à fond, en plus de prendre une place énorme. Soit tu te contentes de ce que TI propose, soit tu passes au C! (L'interface C pour les menus AMS permet de faire ce que tu veux.) Tu vas aussi trouver plein d'autres limitations du même style en TI-BASIC.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

Si c'est un petit utilitaire pour faire des maths c'est quand même 100x plus pratique de rester en TI-Basic hehe. Mais sinon ouais tongue
avatarCombien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

20

twindruff>oui à la mano ! C'est moche (pour le moment !) mais çà fait ce que je veux>>


kevin>cà rame pas vraiment (c'est juste un menu !), mais tu as raison ! Je vais en faire en C car en ASM nostub je n'y arriverais pas !

twindruff>au final, cette fonction prendra en argument une liste d'option de menu. Cela servira donc plusieurs fois sans trop prendre de lignes de codes dans mon programmes final.

21

tiens mon source n'apparait pas dans mon post !

22

Bon bein voilà mon source entre balise, j'espère que vous comprendrez:

Prgm
DelVar p
ClrIO

{"Choix 1","Super choix 2","Choix 3","Plus de choix"}lmen1

Custom
Title ""
Title "             MENU             "
Title ""
EndCustm
CustmOn
ClrHome

Lbl m1
dim(lmen1[1])d0
For i,2,dim(lmen1)
dim(lmen1[i])d1
If d1žd0
d1d0
EndFor
6*(2+iPart((37-d0)/2))x
For i,1,dim(lmen1)
Output 30+8*i,x,lmen1[i]
EndFor


2p
Output 30+8*p,x-18,""
0k

While k13 or k340
getKey()k
©descendre
If k=344 and p<dim(lmen1) Then 
Output 30+8*p,x-18,"   "
p+1p
Output 30+8*p,x-18,""
ElseIf k=344 and p=4 Then 
Output 30+8*p,x-18,"   "
1p
Output 30+8*p,x-18,""
EndIf

©monter
If k=338 and p-1>0 Then 
Output 30+8*p,x-18,"   "
p-1p
Output 30+8*p,x-18,""
ElseIf k=338 and p=1 Then 
Output 30+8*p,x-18,"   "
4p
Output 30+8*p,x-18,""
EndIf
If k=13 or k=340
Exit
EndWhile


EndPrgm


C'est par encore fignolé mais çà fonctionne !

Des critiques ? Acerbes, cinglantes ! Je préfererais constructives...

23

Un algo du type
2 -> p
while ..
  getkey() -> k
  
  If deplacement Then
    p -> p_ancien
    If descendre
      mod(p-1, nb_choix) -> p
  
    If monter
      mod(p+1, nb_choix) -> p
   
    effacer_en(p_ancien)
    afficher_en(p)
  EndIf
EndWhile
te permettrait d'éviter les répétitions d'output, et puis ensuite tu pourrais facilement rajouter "aller tout en bas" (#diamond#+bas) etc
avatarCombien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

24

Cool twindruff.
comment fais-tu pour afficher correctement ton code ?

25

twindruff>
Voici mon bout de code selon ton algo, çà fonctionne nickel. Cà semble même réagir plus vite ?!

26

tromb Fichier joint : men1.bmp

C'est le seul moyen que j'ai trouvé pour que mon code soit des plus lisible.

27

./24 en fait je l'écris directement ici le code, je passe pas par la TI hehe

./26 Tu pourrais remplacer
if k=344 and p<dim(lst) Then
  p+1 -> p
elseIf k=344 and p=dim(lst) Then
  1 -> p
par
if k=344
  mod(p, dim(lst))+1 -> p


et pareil, ça
if k=338 and p>1 Then
  p-1 -> p
elseIf k=338 and p=1 Then
  dim(lst) -> p
par
if k=338
  mod(p-2, dim(lst))+1 -> p


Tu pourrais aussi stocker la valeur de dim(lst) dans une variable parce que sinon à chaque fois que tu écris dim(lst) il doit le recalculer.
avatarCombien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

28

Merci twindruff, j'aurais jamais pensé utiliser la fonction mod() de cette manière là !
Et oui pour le stockage de dim(lst) dans une variable.
C'est excellent, çà réagit vraiment plus vite.

29

Ah très bien grin
avatarCombien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?