All Forums
 Категория Visio
 Форум Вопросы и ответы
 UIObject
Author Previous Topic Topic Next 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 - это корень выбранного Вами набора, а дальше по дереву идет обращение к отдельным панелям, меню...
Важно не только модифицировать меню или тулбар, но и не забыть его активировать, а то он будет в наличии, но пользователь его не почувствует.
Смотрите примеры...
Go to Top of Page

Juri_Zivago

13 Posts

Posted - 03/26/2005 :  19:53:05
Попробовал использовать CommandBars. Тут все еще более непонятно и запутано. В C# это object и как из него что-то получить я не знаю.
Главня моя задача - запретить пользователю добавлять новые страницы и документы к моему Application. Мне кажется, что сделать меню неактивным - это простое и красивое решение проблемы.
Вопрос такой: как мне программно добраться до File/New/New Drawing и Insert/New Page и сделать их неактвиными ?
Go to Top of 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
Go to Top of Page

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). Как мне понять, что я вызвал ?
Go to Top of Page

immortal

Russia
391 Posts

Posted - 03/31/2005 :  14:46:25  Visit immortal's Homepage
quote:
Originally posted by Juri_Zivago

Как пользоваться объектом UIObject ?
Вычитал в SDK про него, что он хранит все Menus и ToolBars. Вызвать MenuSets я могу, но что с ним делать дальше - неизвестно. Очень сильно меня property Enabled интересует.
Я хочу, чтобы вызывался Visio, в котором все Menu и ToolBar не активны.

напишите отдельную программу, вставте туда компонент Microsoft Visio Draving Control type library

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)