sentiel, car certaines choses deviendront vite inutiles. Tout d'abord il peut etre important de specifier un label, un "nume-ro de ligne" en quelque sorte, h un pro-gramme Amos-l, pour le cas ou il y aurait plusieurs interfaces differentes (et ce sera frequent, nous en reparlerons). Cest la rai-son du "LAbel 1;". Et parallelement, un programme, ou un sous programme Amos-I se termine toujours par "EXit;".
Ensuite, la premiere instruction qui affiche quelque chose est l'instruction "BOx".
BOx X,Y,Element Box,X+XI,Y+YI;
Elle affiche en effet une boite, une sorte de rectangle plein ameliore. lei il s'agit du modele n°1, d'ou "BOx xx,xx,1,...".
Mais cette commande BOx a un compor-tement un peu particulier. Bień qu'on lui apporte des coordonnćes (abscisses (X, XI) et ordonnees (Y,YI) pour la placer sur 1'ecran, elle arrondira d'office les abscisses au multiple de 8 le plus proche.
Ainsi dans mon exemple, je veux placer au centre une boite de 360 de largeur. Normalement je la place a X=(640-360)/2 = 140, il sera arrondi a 8, soit 140/8=1 7.xx 17*8=136, sous peine de voir ma boite "mangee sur la gauche". Pour la largeur c'est encore plus tordu. II faut qu'el-le soit multiple de la largeur predefinie dans la Ressource bank (dimension que l'on trou-ve dans la listę des elements du Resource Bank Creator, explique plus haut).
Pour Yet Yl, par contrę on peut les placer au pixel pres. Nous verrons bientót com-ment contourner cette limite, mais j'insiste ici car on ne peut pas toujours y echapper. Pour le PRint c'est tout simple, c'est la meme syntaxe que Text (coordonnees gra-phiques, au pixel pres) en Amos, sauf que l'on rajoute la couleur. |e signalerais juste ici qu'en Amos-l les textes ne sont pas entre guillemets mais apostrophes.
(voir listing)
Ensuite vient le bouton, la c'est un peu delicat, mais pas bien mechant. II faut aller chercher 1'image en banque de ce bouton. Pour cela on la dścompacte (unpack en anglais). Puis dans ce bouton nous allons ecrire un texte ("Quit"). Et bien c'est ce qui ce passe dans la syntaxe. On definit le bouton n°1 (BUtton !,...)• Qui sera place d 288,150 (toujours la limite en X des 8, BUtton 1,288,150,...), et la zonę de detec-tion de la souris sera sur 64 pixels de large pour 16 de hauteur (que Ton trouve toujours dans la listę des elements du Bank creator, BUtton 1,288,150,64,16...). Les parametres suivants n'ont pas d'importan-ce pour 1'instant (BUtton 1,288,150,64,16,0,0,1;...).
Mais on s'aperęoit que l'on concatene des instructions Amos-l pour lui dire quelle image decompacter de la banque et quel est le texte a afficher dans ce bouton ("BUtton 1,288,150,64,1 6,0,0,1 ;(UNpack 0,0,BPI 3+; PRint 1 7,4,'Quit',8]....").
Enfin le |BR 0;] permet tout simplement de donner 1'impression quand on clique sur le bouton que celui-ci s'enfonce (en fait tant que le bouton gauche de la souris est enfonce il affiche 1'image 14 (le pourquoi du + du 1 3) et reaffiche 1 3 quand il est relache). On verra que Ton peut aussi para-metrer cela.
Ouf f
Apres c'est tres simple, on cree le dialog n°l (il s'agit d'une sorte de canal, un peu comme pour les ouvertures de fichier, car plusieurs peuvent cohabiter), a partir de
_INT$ :
Dialog Open 1,_INT$
Puis on le lance en le mettant dans une variable bidon :
X»Dialog Run(1,1)
(on lance sur le canal numero un. Dialog Run(l,l), le LAbel numero 1, Dialog Run(l,1).
Et on attend les messages de 1'interface dans une boucle sans fin, avec les diffe-rents cas (ici 1 seul, mais bientót plusieurs...)
Do
DIA=Dialog(l)
Exit If DIA»1
Loop
On "met" les messages de l'interface numśro 1 (Dialog(l)) dans la variable DIA (DIA=....), et on sort de la boucle sans fin si on reęoit le message 1 qui signifie que le bouton 1 a ete presse (le message aurait ete 2 si le bouton s'appelait 2, etc.). Enfantln, non ?
Bref sur cette base nous allons pouvoir construire des interfaces beaucoup plus complexes, qui, par exemple, lieront les boutons ensembles pour faire des check box, ou qui gereront des sliders, comme un requester de fichier... Nous verrons des le mois prochain comment saisir du texte (ce qui peut toujours etre utile...), puis il faudra approfondir les contróles que peut exercer Amos sur 1'interfaee. Voila a bientót, Amossez vous bien.
Erie Cappannelli
' * Premier exemple d'interfaces *
' * sous Amos pro
On affiche une fenótre...
E. Cappannelli
' On charge la banque en mćmoire
Load*AMOSPro_System:APsystem/AmosPro_Default_ Resource.Abk",16
' On declare le numćro de banque a utiliser en tant que ressource Resource Bank 16
Screen Open 0,640,256,8,Hires : Curs Off : Flash Off Palette 0,$6F,$77.$EEE,$F00,$DD,$AA,$FF3 Cis 0
' description de l'interface :
_INT$-"LAbel 1;'
_INT$-_INT$4-BOx 136,78,1,496,178;*
_INT$»_INT$-*"PRint 276,108. 'Hello World',3;"
_INT$ *_INT$ + *BUtton 1,288,150.64,16,0,0,1; [UN
0,0,BPI3♦;PR 17,4,'Quit',8;][BR 0;]"
_INT$=_INT$+“EXi t; *
' point d'entróe de l'interface, et lancement Dialog Open 1,_INT$
X*Dialog Run(1,1)
Do
DIA=Dialog(1)
Fxit If DIA-1 Loop
End
On ouvre l'ecran