Visio vba将动态连接器连接到连接点

问题描述 投票:2回答:1

我在连接一个实际连接到预定义连接点而不是仅连接到顶部的链接动态连接器时遇到了麻烦。

我的主人在左侧有一些文本框,在右侧有一些文本框。当我自动连接到那些文本框时,除了第一个和最后一个之外,它们都连接正常。它们不像其他人那样连接到侧面,而是连接到盒子中间的顶部和底部,这破坏了视觉效果。即使在侧面定义了连接点。

我一直在寻找使用Glue To手动连接到连接点,但我无法弄清楚如何解决连接点。

Set vsoConnectorShape = ActiveDocument.Masters.ItemU("Dynamic connector")
Set BoxShape = ActivePage.Shapes(i)
Set DevShape = ActivePage.Shapes(j)

NewRow = DevShape.AddRow(visSectionConnectionPts, visRowLast, visTagDefault)
DevShape.CellsSRC(visSectionConnectionPts, NewRow, visX).Formula = "Width*0"
DevShape.CellsSRC(visSectionConnectionPts, NewRow, visY).Formula = "Height*0.5"

DevShape.AutoConnect BoxShape, visAutoConnectDirLeft, vsoConnectorShape

所以我的实际问题是如何连接到连接点而不是形状本身?

vba visio
1个回答
1
投票

你可以粘上连接器的.Cells("BeginX").Cells("EndX")

  1. 要么是最接近形状的连接器:Shape.Cells("PinX")
  2. 或者选择的连接器:Shape.CellsSRC(visSectionConnectionPts, row, column)

  • 可用连接点的数量取决于您的形状类型
  • 如果单击形状并通过鼠标右键单击打开其ShapeSheet,您将找到“连接点”部分。此表的每一行代表一个连接点 - 单击表中的行,然后查看在图形中选择的那一行。 对于CellSRC,请使用以0开头的行号 列号不相关,可以是0或1 = visCnnctX或visCnnctY
  • 或者只是与宏录制器进行手动连接 并在代码中搜索e。 G。 CellSRC(7, 0, 0) 7 = visSectionConnectionPts,0 =第一个连接点,0

Dim myConnector As Visio.Shape

' drop it somewhere
Set myConnector = ActiveWindow.Page.Drop(Application.ConnectorToolDataObject, 1, 10)

' connect it to the nearest connection point of a shape (varies if you drag)
myConnector.Cells("BeginX").GlueTo BoxShape.Cells("PinX")

' connect it a fixed connection point (example if shape has 4 points)
myconnector.Cells("BeginX").GlueTo _
    Boxshape.CellsSRC(visSectionConnectionPts, 0, 0)  ' left                  
' .CellsSRC(visSectionConnectionPts, 1, 0)  ' right
' .CellsSRC(visSectionConnectionPts, 2, 0)  ' top
' .CellsSRC(visSectionConnectionPts, 3, 0)  ' bottom
© www.soinside.com 2019 - 2024. All rights reserved.