News:

Happy New Year!

Main Menu

Populate shape into a list

Started by Oonizuk, March 31, 2025, 09:49:06 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Oonizuk

Hello,

I tried to populate a custom shape in a container list when I will drop it into a new model.
I tried to follow a few tutorial but I can not achieve to get the right result. I mean I do not achieve to populate the list...

Input
Container List : The container list "Interface" from the ULM Class stencil that I edited as a new master shape name (Interface_2) in the document stencil (+ tick the case in the propriety shape)
List shape : Numbered Block from "Processus Step" stencil that I edited as a new master shape name ("Task_1" ) the document stencil (+ tick the case in the propriety shape)

  • I modified "User.msvSDListItemMaster1" to User.msvSDListItemMaster and deleted "User.msvSDListItemMaster2" and "User.msvSDListItemMaster3" to keep only one shape. I modified the formaula as "USE("Task_1").
  • I changed "User.msvSDListRequiredCategories" to accept my task ( Added msvSDContainerRequiredCategories as well just in case
  • tried to change the "EventDrop" cell : DOCM(2270) instead of DOCM(2499) and vis verca
  • ...

but no "Task_1" in my container list "Interface_2é  >:(  >:(

What I did wrong??

My tries in attachament

Thanks

Oonizuk



Yacine

Le problème, c'est que ta question n'est pas compréhensible. Surtout parce que tu parles de "peupler" la liste. Veux-tu automatiser le remplissage de la liste par code, ou bien veux-tu afficher certaines informations après avoir déposé le "task" dans la liste ? Explique un peu plus, s'il te plaît.
Yacine

Oonizuk

#2
Quote from: Yacine on April 01, 2025, 11:55:36 AMSurtout parce que tu parles de "peupler" la liste.
J'ai repris les terme anglais que j'ai trouvé sur certain tutoriaux ;-)

Pour éclaisir ma question, je souhaite crée un master container liste qui embarque déjà plusieurs élément de liste. (à l'image du container "Interface" de gabarit UML class en remplaçant les éléments de liste "Membre part" une autre forme "Bloc numéroté"

Quand je fais glisser mon master du gabarit vers le modèle, il faudrait que les élément de liste soit déjà présent dans le conteneur (toujours l'image du conteneur Interface)

Malgré tous les essai que j'ai fait, les éléments de liste n'apparaissent pas dans mon conteneur..

Quote from: Yacine on April 01, 2025, 11:55:36 AMVeux-tu automatiser le remplissage de la liste par code, ou bien veux-tu afficher certaines informations après avoir déposé le "task" dans la liste ? Explique un peu plus, s'il te plaît.

Pas de code VBA et je ne souhaite pas à devoir déposer le task dans la liste mais que ce soit présent dans le master 'normalement" en paramétrant "User.msvSDListItemMaster" et le EventDrop cellule c'est faisable

Merci de ton retour

Yacine

#3
It is doable, but far from being trivial.

I found the masters you're referring to in the UML class stencil. Two of them "Class" and "Enumeration".
In the stencil - I made a local copy to be able to edit and inspect it - the masters don't have list members.
But there's that line in the event drop cell, saying:
IF(LISTMEMBERCOUNT()=0,DOCMD(2499),0)
Or in English, "If the list is empty do command 2499."
Alas I could not find any information on the web about this particular command.

Now in the user sections of both the container and the member shapes, there are many hints about which shape is to allow to drop and how it is named and so on.
Basically you'll have to consider several user sections to get it right.

Difficulty: it is very easy to break the mechanism. I succeeded ;).

The think that worked however was to modify the member to my needs - formatting, the displayed data and so on.
For you that means, that you can copy the stencil to a new location and re-name it, then adjust both the container and the member to your needs.
Thinkable, but not tested: copy only the masters to a new stencil. An idea worth testing.

Last but not least re-think your requirements, what do you need to replicate this behavior for?
The behavior is nice, but is it really necessary? don't forget that you're messing with a built-in feature from Visio that is nowhere documented.
Does it need to be a list container?

... etc. you get the point.

And there are so many techniques you can use to build smart-shapes. The difficulty is often the formulate your task properly.

So far for my 2 cents.


C'est faisable, mais loin d'être trivial.

J'ai trouvé les masters dont tu parles dans le gabarit de classe UML. Deux d'entre eux : « Class » et « Enumeration ».
Dans le gabarit – que j'ai copié localement pour pouvoir l'éditer et l'inspecter – les masters n'ont pas de membres de liste.
Mais il y a cette ligne dans la cellule EventDrop :

IF(LISTMEMBERCOUNT()=0,DOCMD(2499),0)
Autrement dit : « Si la liste est vide, exécute la commande 2499. »
Hélas, je n'ai trouvé aucune information sur le web concernant cette commande en particulier.
Maintenant, dans les sections User à la fois des conteneurs et des formes membres, on trouve de nombreux indices sur les autorisations de dépôt, les noms, etc.
En gros, il faut analyser plusieurs sections User pour bien comprendre le mécanisme.
Difficulté : il est très facile de casser ce mécanisme. J'y suis parvenu ;).
Ce qui a marché par contre, c'est de modifier le member selon mes besoins – mise en forme, données affichées, etc.
Pour toi, cela signifie que tu peux copier le gabarit dans un nouvel emplacement, le renommer, puis adapter à la fois le conteneur et les membres selon tes besoins.
Une idée à tester (non vérifiée) : copier uniquement les masters dans un nouveau gabarit.
Enfin, reconsidère tes besoins : pourquoi veux-tu reproduire ce comportement ?
Le comportement est sympa, certes, mais est-il vraiment indispensable ?
N'oublie pas que tu t'attaques à une fonctionnalité native de Visio, qui n'est documentée nulle part.
Est-ce vraiment nécessaire que ce soit un list container ?
... etc. tu vois l'idée.
Et il existe tellement de techniques pour créer des smart-shapes... La vraie difficulté, c'est souvent de bien formuler sa tâche.
Voilà pour mes deux sous.
Yacine

Oonizuk

Quote from: Yacine on April 01, 2025, 06:32:18 PMand inspect it - the masters don't have list members.
there have

You cannot view this attachment.
Quote from: Yacine on April 01, 2025, 06:32:18 PMAlas I could not find any information on the web about this particular command.
I agree nothing about it... I use DOCMD(2270) instead

Quote from: Yacine on April 01, 2025, 06:32:18 PMThe behavior is nice, but is it really necessary?
I need to make a template usefull for a few people (without lot of computer skills) not for me only..

Quote from: Yacine on April 01, 2025, 06:32:18 PMDoes it need to be a list container?
Yes because I need to have a numbered bullet for each new member

I found this article, dig a bit about sName vs NameU function and  finaly I succcedded  ;)

Change the name of the new master for the list member was not enought I had to change its nameU as well via a simple vba line code...
You cannot view this attachment.

Visio is not really user friendly  :(

wapperdude

Visio 2019 Pro

Browser ID: smf (possibly_robot)
Templates: 4: index (default), Display (default), GenericControls (default), GenericControls (default).
Sub templates: 6: init, html_above, body_above, main, body_below, html_below.
Language files: 4: index+Modifications.english (default), Post.english (default), Editor.english (default), Drafts.english (default).
Style sheets: 4: index.css, attachments.css, jquery.sceditor.css, responsive.css.
Hooks called: 350 (show)
Files included: 34 - 1306KB. (show)
Memory used: 1129KB.
Tokens: post-login.
Cache hits: 14: 0.00168s for 26,615 bytes (show)
Cache misses: 3: (show)
Queries used: 17.

[Show Queries]