1
Bonjour. J'aimerais créer une scrollbar(barre de défilement). Je voudrai faire comme quand on fait des calcule dans STAT. Les réponses apparaissent et on navigue de haut en bas avec les fleches. Comment faire???

Merci
2
En basic c'est relativement dur. Il faut sur le principe créer une boucle qui teste a chaque fois la touche préssée (haut ou bas), et réafficher tout l'encran en conséquence. i.e. tu as une variable correspondant a la position verticale dans le menu de l'utilisateur, et en testant cette variable tu affiche ou pas une certaine ligne a une certaine hauteur sur l'ecran.
3
Merci, j'ai reussi a faire un debut de scrollbar qui repond a mes besoins. Merci encore
4
mastercalto (./2) :
i.e. tu as une variable correspondant a la position verticale dans le menu de l'utilisateur, et en testant cette variable tu affiche ou pas une certaine ligne a une certaine hauteur sur l'ecran.


Une simple question de curiosité, c'est koi cette variable ? Je ne la connait pas et ca pourrait m'interresser... smile
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
5
A par exemple (je sais pas si c'est à ça que tu pense Mastercalto)
Immaginons: tu laisses le curseur en haut de l'écran (cas le plus simple).
En gros, ça donne:

=>Item 1 :A=1
Item 2
Item 3

Maintenant, tu appuies sur en bas.
Tu as:

=>Item 2 :A=2
Item 3

La variable A contient le n° de l'item.
Après, pour l'ffichage, tu t'arranges soit avec des Sub() et des Instring, soit avec des conditions...
6
...
houla, ouai...
g pas tout compris ! smile
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
7
En fait t'as deux variables:
une pour la position de ton curseur sur l'ecran (1-8)
une pour la position de l'ecran dans le menu deroulant

par exemple:

1:aaaaaaaa
2:bbbbbbbb
--------------+ <= affiché a l'ecran
3:cccccccccc +
4:dddddddd +
5:eeeeeeee +
6:ffffffffffffff +
7:gggggggg +
>>8:hhhhhh + < ligne ou est le curseur de l'utilisateur
9:iiiiiiiiiiiiiiiiiii +
10:jjjjjjjjjjjjj +
--------------+
11:kkkkkkk
12:llllllllllllllll
13:mmmmm

Les variables seront alors à 6 (le curseur est a la 6eme ligne de ce qui est affiché), et 3 (le haut de l'ecran commence a la 3eme ligne du menu deroulant).
On augmente ou diminue alors la premiere variable quand l'utilisateur veut monter ou descendre, sauf si celle si est a 1 ou 8 (extremités de l'ecran), dans ce cas ou augmente ou diminue la deuxieme variable (puisque le curseur ne bouge pas mais l'ecran).
Voila smile
8
Tu veux faire un truc compliqué pour le pommer hein? MDR
9
Pas vraiment, la diffuculté est en fait de coder ensuite un minimum "proprement" l'affichage de l'ecran en fonction de ces deux variables (je preconise alors d'utiliser une chaine de caracteres contenant tout le menu, et la fonction "sub("; mais bon ok là c'est plus de l'optimisation grin)
Tu complettes la chaine par des espaces entre les items alors, nn?
Le pb, c'est que ça prend de la place pour rien... A moins de le programmer comme une routine que tu utilises pour tous tes menus (et de préférence de l'intégrer dans le programme parce que ça fait moche sinn...)
vous zaurié pas un exemple de code concret ?
ca marangerai vachement ^^
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
Bha c'est assez long a faire quand meme...
Le pb, c'est que ça prend de la place pour rien...

Pas vraiment, tu complete juste pour avoir 16 octets par ligne, et par rapport a ce que tu gagne a pas faire ca comme un porc ca s'equilibre... (par rapport a une suite de : " If ... Output(x,y,"trucmuche") " ca prend moins de place puisque t'as juste un : Output(x,y,sub(str1,z,8*16) ).
Et puis c'est assez lent ces menus là...
http://www.ticalc.org/archives/files/fileinfo/262/26263.html

C'est une routine de menu. Ca te permet de faire autant de menus que tu veux (je l'ai pas testé).
je vais regarder ca et voir si ca marche.
Output(x,y,sub(str1,z,8*16) )


par contre en fait si je comprend pas, c'est surement parceque je n'ai j'amais utilisé la fonction sub(, ainsi que les str...
vous voulez pas m'éclairer un peu la dessus ?
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
demain^^ j'ai pas le temps là mdr
Bha les Str servent a stocker des chaines de caracteres qu'on rentre entre guillemets (du texte quoi; ex: "ABCDEFG" -> Str1).
Ensuite le Sub( permet d'extraire une partie d'une chaine. Syntaxe : Sub( Chaine d'où il faut extraire , Numéro du premier caractere de l'extraction , longueur de l'extraction).
Par exemple : Sub( "ABCDEFGHIJ" , 3 , 4) donne : "CDEF" .

C'est alors tres utile pour stocker des suite de noms que l'on veut extraire a la demande. Par exemple dans Football Simulation 6, tous les noms de clubs d'un championnat sont stockés a la suite dans le Str1, par blocks de 10 caracteres. Du coup :
-quand on veut le nom de la 1ere equipe de la chaine, on rentre : Sub (Str1 , 1 , 10)
-quand on veut le nom de la Xeme equipe de la chaine, on rentre : Sub(Str1 , 1+10(X-1) ou 10X-9 c'est pareil , 10 ).

Pour le menu deroulant c'est pareil, on extrait comme ca les 96 caracteres (soit 8 huit lignes a afficher) d'un Str qui contient toutes les lignes du menu.

Voila smile
Sinon:
Et puis c'est assez lent ces menus là...
En fait pas tellement si tu fait ca bien (et je suis sûr qu'avec le Sub( c'est tres rapide).
Voila, je viens d'en coder un :


(vitesse 83+ standard)

ClrHome
1üA
2üB:1üC
0üX
" 1:AAAAAAAAAAAAA 2:BBBBBBBBBBBBB 3:CCCCCCCCCCCCC 4:DDDDDDDDDDDDD 5:EEEEEEEEEEEEE 6:FFFFFFFFFFFFF 7:GGGGGGGGGGGGG 8:HHHHHHHHHHHHH 9:IIIIIIIIIIIII 10:JJJJJJJJJJJJ 11:KKKKKKKKKKKK 12:LLLLLLLLLLLL 13:MMMMMMMMMMMM 14:NNNNNNNNNNNN"üStr1
Lbl 0
Output(1,1," --- MENU : --- "
Output(2,1,sub(Str1,16A-15,7*16
Lbl 1
Output(C,1," "
Output(B,1,"*
BüC:0üK
Repeat Kø0
getKeyüK
End
If K=25 and B=2 and A>1:A-1üA
If K=25 and B=2 and A>0:Goto 0
If K=25 and B>2:B-1üB
If K=25 and B>2:Goto 1
If K=34 and B=8 and A<8:A+1üA
If K=34 and B=8 and A<9:Goto 0
If K=34 and B<8:B+1üB
If K=34 and B<8:Goto 1
If K=105:Goto 2
Goto 1
Lbl 2
B-2+AüX
ClrHome
Disp "CHOIX:",X
Pause 
Puisque tu n'utilises qu'une seule fois ta Str1, tu peux gagner du tmeps et de la place en mettant directement sub("string", etc...

(je sais je chipotes)
ok, merci, j'ai compri le principe. Ca ca va bien me servir ^^ la dernière foi que j'avai voulu stoké des lettres, je les avaient codées ac des chifres dans une liste ! (pour un prgm de répertoir téléfonique : 8 chifre par ligne pour 4 letres... Ou coment se casser les couilles qd on connait pas tt les fnction de sa calto smile)
Juste commme ca, ya combien de caractère au max dans une Str ?
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
Soit 999 soit sans limite (enfin juste la limite de la memoire quoi), je sais plus trop...
Puisque tu n'utilises qu'une seule fois ta Str1, tu peux gagner du tmeps et de la place en mettant directement sub("string", etc...

Evidemment mais puisque le str s'affiche sur une ligne et qu'il est assez long, ca aurait pas été tres clair...
(sinon biensur on peut aussi enlever des fermeture de " ou de parenthese, ou encore optimiser d'autres trucs, mais seulement au moment de coder ça on-calc)
No Limit!!!
Par contre, dans un prog, tu arrives pas à excéder 8000 caractères de 1 octets (tous à part les majuscules). J'explique:
Si tu définis str1 directement; tu as: "blablablabla"=>Str1
Mettons que tu aies 8000 caractères: ça fait 8000 octets pour le prog, 8000 pour Ans et 8000 pour Str1. Euh oui, sauf que 8000*3=24000
La taille de la RAM est de 23000 octets, donc ça merde.

Poiur les chaines, tu as aussi l'instructions Instring() pour faire une "recherche", et tu peux faire ça aussi:
"12=>Str1
"34=>Str2
Str1+Str2=>Str3 sorrytr3="1234"
ha wech... Mais bon, avant d'ariver à 8000 octets, faut le faire quand même ! smile
Surtout que moi ca me poserait un problème : en général la taille de rame disponible n'éxéde pas les 6000 octet vu le nombre de programme que g sur ma calto...
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic