none
Utilisation des formules dans les containers de type liste RRS feed

  • Question

  • Bonjour,

    Je développe une application sous visio qui utilise des containers de type liste. Pour positionner ces containers les uns par rapport aux autres j'utilise des formules pour définir les valeurs de PinX et PinY. Mais lors de l'ajout d'un élément à la liste ces formules sont supprimées et remplacées par des valeurs et donc les relations de positionnement d'un container par rapport à un autre sont rompues.

    Pour le moment je n'ai trouvé aucune solution pour résoudre ce problème. Toute aide est la bienvenue.

    Merci


    dimanche 25 décembre 2011 14:48

Réponses

  • La raison est la même. En effet lorsque tu rajoutes un élément dans la liste, le PinX et le PinY de la liste qui matérialise le centre de la forme sont forcément modifiés par Visio donc ta formule est écrasée ;  de plus en admettant que tu puisses le faire, il faudrait que tu modifies les formules de positionnement des éléments de la liste pour qu'ils se déplacent aussi donc c'est trop compliqué.

    La solution est comme tu l'as déja fait est de remettre ta formule de positionnement à chaque fois qu'il y a une modification de container donc lors d'un évènement ContainerShapeAdded et ContainerShapeDeleted. Il faut donc écrire un peu de code.

    Bonne continuation


    Michel LAPLANE (MVP Visio)
    Si cette réponse résout votre problème, merci de la noter comme une réponse. Si elle vous a aidé, merci de la noter comme utile.
    Et et n'oubliez pas www.visualblog.fr
    lundi 26 décembre 2011 10:45

Toutes les réponses

  • Bonjour Marc,

    Le principe des containers de type list est géré automatiquement par Visio. C'est par un mécanisme interne au noyau graphique que Visio positionne chaque nouvel élément. Ce qui veut dire que Visio calcule le PinX et PinY des éléments de la liste qu'il rajoute. Donc si tu veux modifier par des formules le PinX ou PinY, Visio les écrase dés que tu rajoutes un élément à moins que tu n'utilises la fonction GUARD(maFormule); cependant dans ce cas Visio ne peut plus créer d'élément de liste donc tu es coincé.

    En revanche si ton besoin est que les éléments de la liste soit espacés d'une certaine valeur, il existe une cellule utilisateur permettant de fixer cette valeur. Il faut donc simplement que tu rajoutes une ligne "User.msvSDListSpacing" avec la valeur désirée en précisant les unités (0.5pt ou 0.5mm ou ...) et Visio fait le travail tout seul.

    Bonne continuation.


    Michel LAPLANE (MVP Visio)
    Si cette réponse résout votre problème, merci de la noter comme une réponse. Si elle vous a aidé, merci de la noter comme utile.
    Et et n'oubliez pas www.visualblog.fr
    lundi 26 décembre 2011 08:31
  • Bonjour Michel,

    Merci pour votre réponse, en fait mon problème ne concerne pas les éléments de la liste mais l'objet liste. En fait c'est l'objet liste que je veux positionner en positionnant des formules sur PinX et PinY de l'objet liste. Mais lorque je rajoute des objets à la liste les formules de l'objet liste sont écrassées (même en utilisant la fonction GUARD) et je ne comprends pas pourquoi ? La seule piste que j'ai identifiée c'est de traper l'évènement ContainerRelationshipAdded et de repositionner les formules de l'objet liste. Cela ne me semble pas très normal comme fonctionnement.

    lundi 26 décembre 2011 08:43
  • La raison est la même. En effet lorsque tu rajoutes un élément dans la liste, le PinX et le PinY de la liste qui matérialise le centre de la forme sont forcément modifiés par Visio donc ta formule est écrasée ;  de plus en admettant que tu puisses le faire, il faudrait que tu modifies les formules de positionnement des éléments de la liste pour qu'ils se déplacent aussi donc c'est trop compliqué.

    La solution est comme tu l'as déja fait est de remettre ta formule de positionnement à chaque fois qu'il y a une modification de container donc lors d'un évènement ContainerShapeAdded et ContainerShapeDeleted. Il faut donc écrire un peu de code.

    Bonne continuation


    Michel LAPLANE (MVP Visio)
    Si cette réponse résout votre problème, merci de la noter comme une réponse. Si elle vous a aidé, merci de la noter comme utile.
    Et et n'oubliez pas www.visualblog.fr
    lundi 26 décembre 2011 10:45
  • Merci beaucoup pour ta réponse.
    lundi 26 décembre 2011 11:01