Les parametres xa,ya contiennent les valeurs a assigner a XA et YA, qui representent la position du curseur graphique avant l operation. Les valeurs xb,yb sont ensuite placees dans XB et YB pour definir la position apres l instruction. Ces valeurs permettent ainsi de mettre a jour les coordonnees internes. Exemple :
X> 'Une instruction qui dessine une boite puis imprime du texte dedans. 'XB YB seront places a la fin de la boite, pas du texte imprime ! 'La syntaxe est TextBox x1, y1, x2, y2, texte Userinstruction TextBox,5; [BOx P1,P2,1,P3,P4; PRint P1,P2,P5,1; XY P1,P2,P3,P4;]
Les commandes personnalisees ont quelques limitations a garder en tete :
Un probleme supplementaire survient si vous voulez definir un type de bouton avec une UserInstruction. Il faut alors stocker les parametres dans une zone securisee pour les reutiliser lorsque le bouton est selectionne plus tard. Ce probleme n apparait que si vous definissez une zone a l interieur d une commande personnalisee. Il peut etre resolu grace a l instruction suivante :
SZ SetZonevariable
Instruction Interface : memoriser une valeur pour une zone
SZ valeur;
Cette commande stocke une valeur (nombre ou chaine) dans un buffer interne, prete a etre utilisee dans la prochaine zone definie (ex : un bouton). La valeur pourra etre lue par la fonction ZoneVariable expliquee ci-dessous.
ZV ZoneVariable
Fonction Interface : lire la valeur stockee par SetZonevariable
valeur = ZV
Cette fonction ne peut etre utilisee que dans une routine de dessin ou de changement, entre crochets. Elle retourne le contenu de la variable de zone enregistree avec SZ. Cela permet de sauvegarder des valeurs specifiques a une zone pour une reutilisation future. Exemple :
X> 'Cette commande cree un bouton texte uniquement 'MyButton zone,x,y,texte Userinstruction MyButton,4; [SetZone P4; sauvegarde du texte BUtton P1,P2,P3,P4 TextWidth 16+,TextHeight 4+,0,0,1; [PRint 0,0,ZoneVariable,1][] zvar insere le texte dans le bouton