Tumanov
Russia
1198 Posts |
Posted - 10/03/2002 : 20:15:44
|
Ну, скажем так, задача сформулирована несколько некорректно. Я попробую ответить, а уж если не так понял вопрос, тогда придется уточнять. В общем-то все зависит от того, что Вы сделали с формой, созданной в MS Visual Basic. Если Вы сделали на ее основе приложение (exe), то для Visio оно будет выглядеть как Add-on и может вызывается как из меню Visio, так и определенному событию. Возьму пример из работющей программы. Вот код в MS Visual Basic: Текст Add-on CouSet ------------------------------------------------------------------ Dim Shp As Visio.Shape Private Sub Command1_Click() Shp.Data1 = Combo1.Text Shp.Cells("EventDblClick").Formula = "RUNADDON(""CouSet.exe"")" Shp.Cells("EventXFMod").Formula = "RUNADDON(""CouUpdate.exe"")" End End Sub
Private Sub Form_Activate() Dim appVisio As Visio.Application Dim pagObj As Visio.Page Set appVisio = GetObject(, "Visio.Application") Set pagObj = appVisio.ActivePage i = InStr(Command, "/shape=") If (i = 0) Then Set Shp = pagObj.DrawRectangle(1, 6, 1.3937, 6.19685) Shp.Name = "MCounter" Shp.Text = "0" Else s = Mid(Command, i + 7) Set Shp = pagObj.Shapes.Item(s) End If ... Программа содержит форму, на которой ComboBox и кнопка. Сначала запускается через меню Add-On. При этом срабатывает Form_Activate(), находит запустившее его Visio-приложение и рисует в нем прямоугольник MCounter. Следующая завязка - при щелчке по кнопке на этой форме срабатывает Command1_Click(), который прописывает в ячейку шейп листа нарисованного прямоугольника вызов себя (Shp.Cells("EventDblClick").Formula = "RUNADDON(""CouSet.exe"")"). Теперь уже это приложение (с формой из MS Visual Basic) сможет запускаться при двойном щелчке по им же нарисованному шейпу. Никаких дополнительных окон здесь не создается. Существует только окно с рисунком Visio и окно Add-on из MS Visual Basic. А можно и просто нарисовать форму в самом Visio. Это делается через Tools/Macros/Visual Basic Editor/Insert/UserForm. Такая форма будет показываться просто по UserForm1.Show Ну, а если Вам надо было не это, уточните вопрос. |
|
|