Visio vba Подключение динамического разъема к точке подключения - PullRequest
0 голосов
/ 04 марта 2019

У меня проблемы с подключением связанного динамического соединителя, который фактически подключается к заранее определенной точке подключения, а не только к соединению сверху.

У моего мастера есть несколько текстовых полей с левой стороны и некоторыена правой стороне.Когда я автоматически подключаюсь к этим текстовым полям, все они подключаются нормально, кроме первого и последнего.Вместо того, чтобы соединяться со стороной, как другие, они соединяются сверху и снизу в середине окна, что разрушает визуальный эффект.Несмотря на то, что точка подключения определена сбоку.

Я уже рассматривал возможность использования GlueTo для ручного подключения к точке подключения, но я не могу понять, как указать точку подключения.

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

Итак, мой актуальный вопрос: как мне подключиться к точке подключения вместо самой фигуры?

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете приклеить .Cells("BeginX") или .Cells("EndX") соединителя

  1. либо к ближайшему соединителю формы: Shape.Cells("PinX")
  2. , либо к выбранному соединителю:Shape.CellsSRC(visSectionConnectionPts, row, column)

  • Количество доступных точек подключения зависит от типа вашей фигуры
  • Если щелкнуть форму и открыть ее ShapeSheet правой кнопкой мышиВы найдете раздел «Точки подключения».Каждая строка этой таблицы представляет одну точку подключения - щелкните строку в таблице и посмотрите, какая из них выбрана на вашем чертеже.
    Используйте номер строки, начинающийся с 0, для CellSRC
    Номер столбца не имеет значенияи может быть 0 или 1 = visCnnctX или visCnnctY

  • В качестве альтернативы просто перехватите ручное соединение с устройством записи макросов
    и найдите в коде, например,
    CellSRC(7, 0, 0) 7 =visSectionConnectionPts, 0 = 1-ая точка подключения, 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
...