Форум пользователей Visio
http://visio.getbb.ru/

Добавление всплывающей подсказки (Miscellaneo/Comment)
http://visio.getbb.ru/viewtopic.php?f=6&t=1441
Страница 2 из 2

Автор:  Surrogate [ 05 апр 2019, 18:32 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

TheHeat писал(а):
Вы можете скинуть vss с рабочим эвентом CALLTHIS
выше ссылку давал
TheHeat писал(а):
забыл ссылку добавить !
там она правда не на двойном клике сидит, а на щелчке по контекстному меню.

Автор:  Shishok [ 05 апр 2019, 23:21 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Замени это:
Код:
CALLTHIS("Module1.SetToolTip","v400")
на это:
Код:
RUNMACRO("Module1.SetToolTip","v400")

Автор:  Surrogate [ 06 апр 2019, 08:16 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Shishok писал(а):
Код:
RUNMACRO("Module1.SetToolTip","v400")
да, так конечно работает. с тем кодом, что размещен в приложенном файле.
теперь о том, почему не срабатывал CALLTHIS ! я не очень четко сформулировал мысль
Surrogate в сообщении #13178 писал(а):
в модуле есть аргумент эта самая фигура ?
...
Public Function StartDocSetting(vsoShape As Visio.Shape)
корректней было бы сказать аргумент определяющий фигуру в процедуре, в модуле.
в вашем случае этот аргумент должен был быть добавлен в процедуру Sub SetToolTip(sh As Visio.Shape)

Автор:  TheHeat [ 07 апр 2019, 00:44 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Shishok писал(а):
Замени это:
Код:
CALLTHIS("Module1.SetToolTip","v400")
на это:
Код:
RUNMACRO("Module1.SetToolTip","v400")
Так и делал, но при переносе фигуры из набора в документ эта команда уже не работает. По той же причине что писал ранее - макроса не переносится в активный документ.

Чуть позже попробую совет Суррогата, года доберусь до компа с визио.

Автор:  Tumanov [ 07 апр 2019, 12:49 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Visio Guy выкладывал пример, который можно использовать в качестве образца.
http://visguy.com/vgforum/index.php?act ... attach=142
Там VSD и трафарет. И код из пары строчек.
Вызывается по Drop и DoubleClick.

Автор:  Tumanov [ 07 апр 2019, 13:32 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Также советую рассмотреть вот такую конструкцию:
Код:
Public Sub ShowCut(shpObj As Visio.Shape)
    Set ProgDoc = Documents("Prog.vss")
    If ProgDoc Is Nothing Then Exit Sub
    ProgDoc.ExecuteLine "ThisDocument.ShowCutS ActivePage.Shapes.ItemFromID(" & shpObj.ID & ")"
End Sub

Это сидит в ThisDocument основного документа и вызывается из шейпа из секции Actions как =CALLTHIS("ThisDocument.ShowCut").
Макрос перенаправляет вызов в трафарет (документ Prog.vss) в виде .ExecuteLine. И уже в трафарете в его ThisDocument выполняется макрос .ShowCutS, в который передается шейп, найденный по ID на активной странице основного документа.
Макрос в трафарете сходу приступает к обработке переданного шейпа
Код:
Public Sub ShowCutS(shpObj As Visio.Shape)
    If shpObj.CellExists("Prop.PRODCUT", 0) Then
    ...

Автор:  TheHeat [ 08 апр 2019, 09:24 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

TheHeat писал(а):
Shishok писал(а):
Замени это:
Код:
CALLTHIS("Module1.SetToolTip","v400")
на это:
Код:
RUNMACRO("Module1.SetToolTip","v400")
Так и делал, но при переносе фигуры из набора в документ эта команда уже не работает. По той же причине что писал ранее - макроса не переносится в активный документ.

Чуть позже попробую совет Суррогата, года доберусь до компа с визио.

:oops: Ошибочка
Раньше стояло =RUNMACRO("v400.Module1.SetToolTip") и не работало при переносе в активный документ.

А вот =RUNMACRO("Module1.SetToolTip","v400") почему-то работает. Всем спасибо, а особенно Shishok

Автор:  Shishok [ 08 апр 2019, 09:42 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Ну так то и CallThis работает.
Вот с таким кодом:
Код:
Sub SetToolTip(shObj As Visio.Shape)
    Dim ToolTip As String
    Dim UndoScopeID1 As Long
   
CheckToolTip:
    ToolTip = InputBox("Введите ID элемента базы")
    If IsNumeric(ToolTip) Then
        If ToolTip = Int(ToolTip) And Len(ToolTip) = 6 Then
            UndoScopeID1 = Application.BeginUndoScope("Вставка всплывающей подсказки")
            ToolTip = "#V[" & ToolTip & "] Имя /ПО#"
            shObj.Cells("Comment").FormulaForceU = Chr(34) & ToolTip & Chr(34)
            Application.EndUndoScope UndoScopeID1, True
        Else
            GoSub Msg
        End If
    Else
        GoSub Msg
    End If

    Exit Sub
   
Msg:
    MsgBox "Ошибка: ID должен быть целым шестизначным числом", vbExclamation, "Error!"
    GoTo CheckToolTip
End Sub

Автор:  Surrogate [ 08 апр 2019, 12:41 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

странно, почему то у меня все работает, после добавления 3 слов в аргумент функции ?
Встроенное видео спрятано под спойлер ↓ Прямая ссылка на видео
Спойлер:
phpBB [youtube]

Чотко с нужного момента

Автор:  TheHeat [ 11 апр 2019, 10:26 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

новая задача: есть возможность автоматического изменения параметра фигуры при копировании? Хочу чтобы как в экселе скопированная фигура продолжала нумерацию текста :D
ПО какому событию можно запустить макрос?

Автор:  Tumanov [ 11 апр 2019, 10:45 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Скорее всего по событию Page.ShapeAdded.
Вообще, если требуется выбирать событие, то лучший помощник - Event Monitor. Поставляется в составе Visio SDK. Там можно посмотреть все события, которые происходит в Visio, в реальном времени. Остается только выбрать нужное.

Автор:  Shishok [ 11 апр 2019, 11:16 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Добавить в секцию Events, ячейка EventDrop - CallThis или RunMacro

Автор:  Surrogate [ 11 апр 2019, 11:21 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

TheHeat писал(а):
возможность автоматического изменения параметра фигуры при копировании? Хочу чтобы как в экселе скопированная фигура продолжала нумерацию текста
можно обойтись без макросов
Встроенное видео спрятано под спойлер ↓ Прямая ссылка на видео
Спойлер:
phpBB [youtube]

MS Visio. Создаем подпись номера входа с автоматическим увеличением значения
но если потом фигура будет удалена, то нумерация естественно поплывёт !

Автор:  Tumanov [ 11 апр 2019, 11:33 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Цитата:
Добавить в секцию Events, ячейка EventDrop - CallThis или RunMacro

Это более экономичный способ. Но применить его придется ко всем шейпам, которые подлежат копированию. И к новым тоже, которые будут появляться потом по мере наращивания номенклатуры.
Поэтому выбор зависит от конкретных условий применения.

Автор:  Surrogate [ 11 апр 2019, 11:47 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

TheHeat писал(а):
новая задача
хочу попросить создавать новые темы для новых задач!
Мотивация: Поиск по форуму работает очень плохо! Бывает задается вопрос, вспоминаешь что было подобное обсуждение. Поиск не помогает, начинаешь искать по заголовкам в соответствующем разделе. Ничего не находится, потому что первоначальная тема очень далека от задаваемого вопроса. А иногда даже относится к другому разделу. Поэтому крайне сложно найти следы предыдущего обсуждения!!!
:wall:

Автор:  TheHeat [ 11 апр 2019, 15:13 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

Shishok писал(а):
Добавить в секцию Events, ячейка EventDrop - CallThis или RunMacro

Так и сделал. Результат устраивает, спасибо.

Surrogate писал(а):
можно обойтись без макросов

Дело в том, что я делаю не только для себя. Проще написать макрос, дать человеку и сказать "просто сделай двойной клик мышью". Да и быстрее так гораздо. Смысл как-раз в этом, чтобы затрачивалось как можно меньше времени и требовалось как можно меньше действий от пользователя.

Surrogate писал(а):
TheHeat писал(а):
новая задача
хочу попросить создавать новые темы для новых задач!
Мотивация: Поиск по форуму работает очень плохо! Бывает задается вопрос, вспоминаешь что было подобное обсуждение. Поиск не помогает, начинаешь искать по заголовкам в соответствующем разделе. Ничего не находится, потому что первоначальная тема очень далека от задаваемого вопроса. А иногда даже относится к другому разделу. Поэтому крайне сложно найти следы предыдущего обсуждения!!!
:wall:
Я не против, но создавать тему, решение которой "Добавить в секцию Events, ячейка EventDrop" смысла не вижу. Код программы тут в принципе не важен

Спасибо, народ. Пока с вашей помощью все получается. В VBA или в каком-либо другом ОО-языке я до этого не программировал. :)

Автор:  Surrogate [ 11 апр 2019, 19:45 ]
Заголовок сообщения:  Re: Добавление всплывающей подсказки (Miscellaneo/Comment)

TheHeat писал(а):
создавать тему ... смысла не вижу.
ну мы здесь тоже не для себя пишем ответы :!:

Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/