Analyse du script 3b (effacement des dessins)
- comptebouton=0 : crée une variable appelée compteboutons et lui donne la valeur 0
- For i=0 To currentdocument.drawnobjects.count-1 : Boucle : currentdocument.drawnobjects.count est le nombre d'objets dessinés sur la feuille, incluant les boutons, les ellipses, les rectangles. La boucle est effectuée currentdocument.drawnobjects.count fois
- If currentdocument.drawnobjects(i) Isa "buttonControl" Then comptebouton=comptebouton+1 : On passe en revue chaque objet dessiné en vérifiant s'il s'agit d'un bouton. A chaque bouton rencontré, on ajoute 1 à la valeur comptebouton.currentdocument.drawnobjects est un tableau contenant tous les objets dessinés du document. currentdocument.drawnobjects(i) désigne l'objet de numéro i.
- Next : Fin de la boucle. Lorsque i est égale à currentdocument.drawnobjects.count-1 alors tous les objets ont été vérifiés, comptebouton contient maintenant le nombre de boutons.
On va ensuite effectuer une boucle qui efface tous les objets dessinés qui ne sont pas des boutons. Il faut donc passer de nouveau en revue tous les éléments du tableau currentdocument.drawnobjects et effacer ceux qui ne sont pas des boutons.
Les deux problèmes rencontrés sont d'une part que les objets sont rangés dans le tableau par ordre de création : il est donc possible qu'on ait des dessins intercalés au milieu des boutons.
D'autre part à chaque effacement d'un objet Currentdocument.drawnobjects.count diminue de 1 : il faut faire attention de ne pas risquer d'appeler un numéro qui n'existe plus dans la liste.
On a utilisé ici une boucle While...wend, qui redétermine à chaque passage la valeur de Currentdocument.drawnobjects.count
- dc=1 : créé une variable appelée dc et lui donne la valeur 1
- While Currentdocument.drawnobjects.count>comptebouton : On continue tant que le nombre d'objets dessiné est supérieur au nombre de boutons
- Set dessin= Currentdocument.drawnobjects(Currentdocument.drawnobjects.count-dc) : On crée une variable appelée Dessin qui est un des objets de la liste : initialement quand dc=1 il s'agit du dernier objet de la liste. On pourrait appeler directement l'objet par son numéro mais le mot Dessin est moins long à écrire par la suite !
- If not(dessin Isa "ButtonControl") Then dessin.clear else dc=dc+1 : Si cet objet n'est pas un bouton, on l'efface. Sinon, on augmente dc, ce qui permettra à la boucle suivante de "sauter" le bouton lorsqu'on inspectera les objets.
- Wend : fin de boucle
©2003 Scientillula.net