Author |
Topic |
|
zz 5
Russia
54 Posts |
Posted - 11/25/2006 : 14:34:59
|
Всем привет. Вопрос следующего характера. Работаю над созданием шаблона. Хочу реализовать следующее. Имеется шаблон BrainStorming Diagram. При создании документа на основе этого шаблона появляется новый пункт в главном меню и дополнительная панель. Хочу для своего шаблона сделать такую же. Итак, вопрос первый: где прописано создание меню, тулбара, обработка событий. Мне пока не удалось найти. В файле шаблона нету, значит, в другом месте. Где ?
И второй вопрос в догонку. Создал я шаблон, положил в папку. При создании нового докумета все "родные" шаблоны Визио открываются в соотвествующих категориях, а мой шаблон попал в категорию "Другие". Можно ли самому определить категорию шаблона ? Либо создать либо положить в уже имеющеюся ? Спасибо за внимание.
------------------------------------------------------------------------------------------------ Если автор пишет о том, чего не понимает, его работа будет понята только теми читателями, которые понимают в этом больше, чем он ! |
|
mers
Russia
159 Posts |
|
zz 5
Russia
54 Posts |
Posted - 11/27/2006 : 21:33:24
|
Спасибо, в принципе все уже это видел. Самый главные вопрос, на который я так и не нашел вопроса заключается в другом. Ну, написал я макрос, который добавляет панель с кнопками, прописывает вызов кнопок. Но как сделать так, чтобы при создании документа на основе шаблона этот макрос автоматически запускался, т.е. при создании шаблона появлялся и тулбар. Аналогично и меню. В каком событии прописать вызов меню ? Ведь не вручную его запускать ? В brainstorm map меню и тулбар появляется сразу после создания шаблона, значит, где-то вызов макроса прописан. Но где ?
------------------------------------------------------------------------------------------------ Если автор пишет о том, чего не понимает, его работа будет понята только теми читателями, которые понимают в этом больше, чем он ! |
|
|
Tumanov
Russia
1198 Posts |
Posted - 11/27/2006 : 23:18:10
|
А чем не нравятся обычные события DocumentCreated, DocumentOpened? Что мешает их использовать? |
|
|
zz 5
Russia
54 Posts |
Posted - 11/28/2006 : 10:46:03
|
Думаю, это как раз мне и нужно. Буду дальше рыть. Спасибо !
------------------------------------------------------------------------------------------------ Если автор пишет о том, чего не понимает, его работа будет понята только теми читателями, которые понимают в этом больше, чем он ! |
Edited by - zz 5 on 11/28/2006 10:46:21 |
|
|
zz 5
Russia
54 Posts |
Posted - 11/29/2006 : 13:37:24
|
Вроде, все получается. При создании или открытии шаблона создаю допольнительные строчки в меню, см. код:Public Sub AddMenuToMenuBar(vsoApplication As Visio.Application)
Dim cbrCommandBars As Office.CommandBars
Dim cbrMenuBar As Office.CommandBar
Dim cbrMenuPopup As Office.CommandBarPopup
On Error GoTo AddMenuToMenuBar_Err
Set cbrCommandBars = vsoApplication.CommandBars
Set cbrMenuBar = cbrCommandBars.ActiveMenuBar
Set cbrMenuPopup = cbrMenuBar.Controls.Add( _
Type:=msoControlPopup, _
Temporary:=True)
cbrMenuPopup.Caption = "#207;#238;#241;#242;#237;#238;#242;#224;#246;#232;#255;"
AddMenuItemToMenuBar cbrCommandBars, cbrMenuPopup
Exit Sub
AddMenuToMenuBar_Err:
If Not (vsoApplication Is Nothing) Then
If (vsoApplication.AlertResponse = 0) Then
MsgBox Err.Description
Else
Debug.Print Err.Description
End If
Else
Debug.Print Err.Description
End If
End Sub Потом начинаю добавлять пункты меню:Public Sub AddMenuItemToMenuBar( _
cbrCommandBars As Office.CommandBars, _
cbrMenuPopup As Office.CommandBarPopup)
' AddMenuItemToMenuBar
'
' Abstract - Adds a MenuItem called "My File Open...", to
' the Popup Menu that is passed in. This MenuItem, when
' clicked, will simulate the click on the File/Open...
' MenuItem
'
' Parameters
' cbrCommandBars The CommandBars object for the application
' cbrMenuPopup The Popup Menu to which a MenuItem is to be
' added
Dim cbrFilePopup As Office.CommandBar
Dim cbbMenuItem As Office.CommandBarButton
Dim cbbOpen As Office.CommandBarButton
On Error GoTo AddMenuItemToMenuBar_Err
' Get the ID of the "File/Open..." MenuItem
Set cbrFilePopup = cbrCommandBars.Item("File")
Set cbbOpen = cbrFilePopup.Controls.Item(2)
' Add a MenuItem with the ID of "File/Open...".
Set cbbMenuItem = cbrMenuPopup.Controls.Add( _
Type:=msoControlButton, _
ID:=cbbOpen.ID, Temporary:=True)
' Set the caption for the MenuItem.
cbbMenuItem.Caption = "#192;#226;#242;#238;#237;#243;#236;#229;#240;#224;#246;#232;#255; #244;#232;#227;#243;#240;..."
cbbMenuItem.Style = msoButtonCaption
cbbMenuItem.Visible = True
cbbMenuItem.OnAction = "ShowNum"
Теперь вопрос. Как корректно удалить созданное меню при закрытии документа. Событие я нашел, а вот с процедурой удаления меню нехорошо получается. Запись макроса дает такую строчку: Application.CommandBars("Menu Bar").Controls(10).Delete
Не самый лучший способ, так как индекс (в данном случае он равен 10) может иметь и другое значение. Как отвязаться от этой постоянной ?
------------------------------------------------------------------------------------------------ Если автор пишет о том, чего не понимает, его работа будет понята только теми читателями, которые понимают в этом больше, чем он ! |
|
|
zz 5
Russia
54 Posts |
Posted - 12/04/2006 : 15:11:09
|
Нашел ответ сам:Sub DeleteMenu()
Dim cbrCommandBars As Office.CommandBars
Dim cbrMenuBar As Office.CommandBar
Dim cbrMenuPopup As Office.CommandBarPopup
Dim cbrFilePopup As Office.CommandBar
Dim cbbMenuItem As Office.CommandBarButton
Dim cbbOpen As Office.CommandBarButton
' Get the CommandBars collection from Visio.
Set cbrCommandBars = Application.CommandBars
' Get the active menu bar from the CommandBars
' collection.
Set cbrMenuBar = cbrCommandBars.ActiveMenuBar
cbrMenuBar.Controls("#207;#238;#241;#242;#237;#238;#242;#224;#246;#232;#255;").Delete
End Sub
------------------------------------------------------------------------------------------------ Если автор пишет о том, чего не понимает, его работа будет понята только теми читателями, которые понимают в этом больше, чем он ! |
|
|
zz 5
Russia
54 Posts |
Posted - 12/04/2006 : 15:13:22
|
Возникла другая проблема. Можно ли как-то программно определить, на основе какого шаблона создан файл ?
------------------------------------------------------------------------------------------------ Если автор пишет о том, чего не понимает, его работа будет понята только теми читателями, которые понимают в этом больше, чем он ! |
|
|
Tumanov
Russia
1198 Posts |
Posted - 12/04/2006 : 21:38:26
|
На шаблон указывает свойство Document.Template |
|
|
zz 5
Russia
54 Posts |
Posted - 12/04/2006 : 22:28:42
|
Спасибо, я это тоже уже нашел :)
------------------------------------------------------------------------------------------------ Если автор пишет о том, чего не понимает, его работа будет понята только теми читателями, которые понимают в этом больше, чем он ! |
|
|
|
Topic |
|
|
|