Author |
Topic |
|
Andy52280
Russia
2 Posts |
Posted - 06/19/2006 : 12:00:56
|
Был такой топик - topic.asp@TOPIC_ID=244.html Вот только у меня на Визио 2003 это дело почему-то не идет... Собственно, стоит задача построения схемы трасс кабелей. С муфтами и кроссами. Хотелось бы, чтобы при выборе концевого контакта вся длина кабеля на схеме выделялась цветом и толщиной линии. (Вот только как это сквозь муфты еще будет проходить... Если там разные динамические коннекторы получатся.) А после ухода выделения с концевого контакта схема возвращалась к начальному цвету/толщине. Находил как-то топик с триггерной схемой изменения цвета шейпа по двойному клику - теперь вдруг потерял и не могу найти... |
|
brace
Russia
358 Posts |
Posted - 06/19/2006 : 14:36:26
|
учимся раскладывать задачу на подзадачи.
1. тебе нужен макрос который изменяет цвет и толщину шейпа(линии) для этого включи макрорекордер проделай все ручками выключи макрорекордер. 2. теперь надо даблклик на шейпе связать с этим макросом в хелпе по visio VBЕ есть статья типа : запуск макроса даблкликом на шейпе...
|
|
|
brace
Russia
358 Posts |
|
Tumanov
Russia
1198 Posts |
Posted - 06/20/2006 : 19:03:15
|
quote: Был такой топик - topic.asp@TOPIC_ID=244.html Вот только у меня на Визио 2003 это дело почему-то не идет...
Проверил. В Visio 2003 работет. Вы скорее всего ошибаетесь в манипуляциях, а макрос очень беззащитен :( Ситуация следующая. Sub ttt подсаживает к окну обработчик события SelectionChanged. Но этот обработчик способен работать только до первой же ошибки. А ошибка происходит, если Вы щелкните по уже селектированному шейпу или по пустому месту на странице. После ошибки обработчик отваливается и его надо привязывать заново. Давайте немного изменим макрос (вставим один If) и сломать его будет уже труднее :)
Dim WithEvents Win As Window Sub ttt() Set Win = ActiveWindow End Sub Private Sub Win_SelectionChanged(ByVal Window As IVWindow) If Window.Selection.Count > 0 Then Window.Selection(1).Cells("FillForegnd").Formula = Window.Selection(1).Cells("FillForegnd") + 1 End If End Sub Сначала один раз выполнить ttt(). Потом можно долго щелкать по неселектированным шейпам - они будут перекрашиваться. |
|
|
Andy52280
Russia
2 Posts |
Posted - 06/22/2006 : 09:44:10
|
Спасибо, работает устойчиво. С остальным я пока в непонятках. Надо придумать некий алгоритм того, чего я хочу. |
|
|
|
Topic |
|