Author |
Topic |
|
Borg
Kazakhstan
20 Posts |
Posted - 01/26/2006 : 07:50:35
|
Как в шейп встроить объект что бы шейп как бы являлся контейнером для контролов. Групировка не подходит. И как это сделать програмно. |
|
Tumanov
Russia
1198 Posts |
Posted - 01/26/2006 : 20:10:17
|
Объект не нужно встраивать в шейп. Когда Вы его разместите на странице, Visio обернет его в шейп (натянет оболочку). Сначала разберемся с ручным методом. Открываем рисунок. Открываем полезный тулбар Developer. Нажимаем кнопочку Insert Control, из списка выбираем Microsoft Forms 2.0 CheckBox, жмем OK. На рисунке появляется контрол, который ведет себя примерно как обычный шейп. Это Design Mode, который включается при размещении контрола. Теперь нажимаем кнопочку Design Mode на тулбаре Developer. Контрол оживает. При нажатии на него появляется и исчезает галочка в CheckBox'е и т.д. Теперь он ведет себя как правильный контрол. Если нам что-то надо изменить в нем, то независимо от режима, по правой кнопке выбираем Properties и в появившемся окошке со свойствами выставляем нужные значения.
Программно проделанная операция выполняется примерно так: Sub ttt() Application.ActiveWindow.Page.InsertObject "{8BD21D40-EC42-11CE-9E0D-00AA006002F3}", visInsertAsControl + visInsertNoDesignModeTransition End Sub Доступ к свойствам контрола получаем следующим образом: Sub ttt1() Debug.Print ActivePage.OLEObjects.Count Debug.Print ActivePage.OLEObjects.ObjectType Debug.Print ActivePage.OLEObjects(1).Object.Name Debug.Print ActivePage.OLEObjects(1).Object.Value End Sub Этот код выводит следующие данные: 1 38 CheckBox1 True 1 - это количество контролов на активной странице. 38 - тип контрола. CheckBox1 - его имя. Это же имя, видно в окне Drawing Explorer. True - состояние чекбокса.
Примерно такими же манипуляциями можно вставить и объект Microsoft TreeView Control 6.0, добираться до его свойств и выполнять его методы. Идентификатор класса, естественно, другой будет... Одно плохо. Подобные контролы привязываются к разрешению окна, а страница Visio может масштабироваться. В результате при изменении масштаба изображения контрол ведет себя не так, как хочется. Наверное это одна из причин, по которой они не очень широко используются. Вот если написать свой контрол, то ему можно придать нужное поведение :)
|
|
|
Borg
Kazakhstan
20 Posts |
Posted - 01/27/2006 : 06:35:24
|
>> Tumanov Спасибо, только на счёт маштабируемости немного другая картина,все компоненты MS Form 2.0 без проблем маштабируются. Проблемы начинаются тогда когда вы втавляете свой ActiveX причём написанный только в Basic 6.0, все попытки вставить контрол из VS2005 провалились. Так вот свой ActiveX и подвержен проблемам маштабируемости. Просто вы видели рисунок который мне надо получить получается нужен шейп который может в себе помещать объекты, как контрол Panel. И ещё на что способна и нужна ShapeStudio какие у неё возможности? |
|
|
Tumanov
Russia
1198 Posts |
Posted - 01/27/2006 : 18:56:53
|
quote: получается нужен шейп который может в себе помещать объекты, как контрол Panel
Таким шейпом может быть только группа. Она сама по себе является шейпом. Этот шейп содержит коллекцию своих внутренних шейпов. Другие контейнеры не соответствуют объектной модели Visio. quote: на что способна и нужна ShapeStudio
Это технология, рассчитанная на производство серий шейпов (обладающих сходными признаками), учет версий при разработке и повторное использование наработок. |
|
|
Borg
Kazakhstan
20 Posts |
Posted - 01/30/2006 : 08:12:18
|
>> Tumanov Большое спасибо. |
|
|
|
Topic |
|
|
|