【发布时间】:2018-09-07 22:47:08
【问题描述】:
我通过 VBA 宏和用户窗体将 Visio 用作建模工具。模型的形状可以具有与“孩子”相同类型的形状,然后又可以有一个孩子,...
目前我只能通过从模具中拖放来添加“顶级”形状。我正在使用 ShapeAdded 事件打开用户窗体并让用户输入形状数据。
只能通过单独的用户窗体添加具有父对象的形状,该用户窗体从模型中所有对象的列表中获取形状数据和父对象。然后它调用一个函数,该函数遍历页面上的所有形状,直到找到所需的“父对象”,然后使用父对象的 Drop 方法将新形状拖放到正确的位置。然后该形状也会添加到父形状的组中。
有什么方法可以通过拖放来实现吗? IE。我可以通过 VBA 找出用户在哪个“父”形状上放置了新形状,以便我可以以编程方式将它们组合在一起? (另外我需要将父子关系的信息同步到数据库,所以我需要获取父形状对象来访问它的形状数据)。
我想要这个,因为它允许用户直接在父形状内选择所需的位置,并且使用从模具中拖放比使用用户窗体更直观。
我能想到的唯一选择是在删除形状后打开一个用户窗体并从用户那里获取父信息,然后找到父形状并将新形状添加到其组中 --> 这依赖于用户当他将形状放在上面时,从列表中选择了相同的对象,这可能会导致问题。我想自动检测新放置的形状下方的形状,只让用户输入新形状的数据。
【问题讨论】: