Author |
Topic |
|
Juri_Zivago
13 Posts |
Posted - 03/26/2005 : 00:03:49
|
Как пользоваться объектом UIObject ? Вычитал в SDK про него, что он хранит все Menus и ToolBars. Вызвать MenuSets я могу, но что с ним делать дальше - неизвестно. Очень сильно меня property Enabled интересует. Я хочу, чтобы вызывался Visio, в котором все Menu и ToolBar не активны. |
|
Tumanov
Russia
1198 Posts |
Posted - 03/26/2005 : 08:23:50
|
Если Вы читали про него в SDK, то там же есть и примеры использования (непосредственно в документации). А если "на пальцах", то UIObject - это старый интерфейс к меню и тулбарам Visio, который сейчас заменяется CommandBars. Действовал раздельно на меню и тулбары. Основан на том, что и Application и Document могут иметь как встроенные, так и пользовательские наборы меню. Один из наборов ассоциируется с объектом UIObject, изменяется и активируется, подменяя ранее доступный пользователю набор. Измененный набор может быть сохранен в файле и загружаться макросом или при старте документа или приложения. UIObject - это корень выбранного Вами набора, а дальше по дереву идет обращение к отдельным панелям, меню... Важно не только модифицировать меню или тулбар, но и не забыть его активировать, а то он будет в наличии, но пользователь его не почувствует. Смотрите примеры... |
|
|
Juri_Zivago
13 Posts |
Posted - 03/26/2005 : 19:53:05
|
Попробовал использовать CommandBars. Тут все еще более непонятно и запутано. В C# это object и как из него что-то получить я не знаю. Главня моя задача - запретить пользователю добавлять новые страницы и документы к моему Application. Мне кажется, что сделать меню неактивным - это простое и красивое решение проблемы. Вопрос такой: как мне программно добраться до File/New/New Drawing и Insert/New Page и сделать их неактвиными ? |
|
|
Tumanov
Russia
1198 Posts |
Posted - 03/26/2005 : 20:38:08
|
Ну вот же пример из документации. Без изменений. Из SDK. Отличие только в том, что пункт не деактивируется, а удаляется, да пункт меню для примера другой выбран.
To remove an item, use the Delete method of that item. For example, the following statements remove the Show ShapeSheet menu item from the Window menu in the drawing window for the running Visio instance:
Dim uiObj As Visio.UIObject Dim menuSetObj As Visio.MenuSet Dim menuItemsObj As Visio.MenuItems Dim i As Integer
Set uiObj = Visio.Application.BuiltInMenus Set menuSetObj = _ uiObj.MenuSets.ItemAtID(visUIObjSetDrawing)
'Get the Window menu. Set menuItemsObj = menuSetObj.Menus(7).MenuItems
'Get the Show ShapeSheet menu item by its CmdNum property. 'This technique works with localized versions of Visio. For i = 0 To menuItemsObj.Count -1 If menuItemsObj(i).CmdNum = _ visCmdWindowShowShapeSheet Then menuItemsObj(i).Delete Exit For End If Next i
'Replace built-in Visio menus with customized set. Visio.Application.SetCustomMenus uiObj |
|
|
Juri_Zivago
13 Posts |
Posted - 03/28/2005 : 14:52:47
|
С CommandBars разобрался. Но тут проблемы не закончились. Когда я произвожу какие-либо изменения в меню, то эти изменения касаются всего Visio. То есть при любом последующем запуске Visio, даже если запускаю не из программы, появляется измененное мной меню. Чтобы убоать изменения, надо удалить файл custom11.vsu . Меню File я обрезал как надо. С меню edit началить проблемы: не могу добраться до пункта меню, который неактивный(Enabled = false Visioble = true). Как до него добраться ? Есть меню View и Toolbar View, чтобы их вызвать я пишу CommandBars(View). Как мне понять, что я вызвал ? |
|
|
immortal
Russia
391 Posts |
Posted - 03/31/2005 : 14:46:25
|
quote: Originally posted by Juri_Zivago
Как пользоваться объектом UIObject ? Вычитал в SDK про него, что он хранит все Menus и ToolBars. Вызвать MenuSets я могу, но что с ним делать дальше - неизвестно. Очень сильно меня property Enabled интересует. Я хочу, чтобы вызывался Visio, в котором все Menu и ToolBar не активны.
напишите отдельную программу, вставте туда компонент Microsoft Visio Draving Control type library
визио 2003 форэвер
...а вобще-то я белый и пушистый. |
|
|
|
Topic |
|
|
|