La commande ZoneChange
peut etre utilisee efficacement avec ZonePosition
pour lier les positions de differents objets de l interface.
Par exemple, si un slider a ete assigne a la zone 1 et une liste active a la zone 2,
vous pouvez faire defiler la liste avec le slider comme ceci :
X> VSlide 1,16,16,8,64,0,1,12,1; creer un slider avec 12 positions [ZChange 2,ZPosition;] lier la zone 2 a la position du slider
Les instructions entre crochets sont executees automatiquement chaque fois que le slider est deplace, ce qui met a jour la zone de liste active avec la nouvelle position du slider.
1. Creer la liste des composants : par exemple un slider vertical.
On suppose que 0 VA
contient l adresse d un tableau d elements
et que AS
retourne la taille du tableau.
X> VSlider 1,x,y,largeur,hauteur,0,8,0 VA AS,1;[]
2. Definir une ActiveList
pour afficher les elements dans une fenetre :
X> AList 2,x+largeur,y,20,8,0 VA,0,0,0,4;
3. Creer une zone d edition pour montrer l element actuellement selectionne :
X> EDit 3,x,y+hauteur,largeur/8,largeur/8,0,0,2;
4. Lier le slider a la liste active :
X> VSlider 1,x,y,largeur,hauteur,0,1,0 VA AS,1; [ZChange 2,ZPosition;]
5. Lier la liste active a la zone d edition pour afficher automatiquement l element selectionne :
X> AList 2,x+largeur,y,20,8,0 VA,0,0,0,4; [ZChange 3,0 VA ZPosition AR;]
Explication :
0 VA
contient l adresse du tableau d elements.ZPosition
retourne l index courant dans la liste.AR
(ArrayRead) permet de recuperer l element a partir de l adresse.
Le contenu est ainsi copie dans la zone d edition. Si vous souhaitez renvoyer la
valeur modifiee vers le tableau, cela doit etre fait depuis le programme principal
AMOS. Voir la commande DIALOG UPDATE
pour plus de details.
Il peut etre utile de connecter plusieurs zones en sequence. Il est aussi possible d utiliser des valeurs relatives plutot que des numeros absolus de zones.