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

Borg

Kazakhstan
20 Posts

Posted - 01/27/2006 :  06:35:24
>> Tumanov
Спасибо, только на счёт маштабируемости немного другая картина,все компоненты MS Form 2.0 без проблем маштабируются. Проблемы начинаются тогда когда вы втавляете свой ActiveX причём написанный только в Basic 6.0, все попытки вставить контрол из VS2005 провалились. Так вот свой ActiveX и подвержен проблемам маштабируемости. Просто вы видели рисунок который мне надо получить получается нужен шейп который может в себе помещать объекты, как контрол Panel.
И ещё на что способна и нужна ShapeStudio какие у неё возможности?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/27/2006 :  18:56:53
quote:
получается нужен шейп который может в себе помещать объекты, как контрол Panel

Таким шейпом может быть только группа. Она сама по себе является шейпом. Этот шейп содержит коллекцию своих внутренних шейпов. Другие контейнеры не соответствуют объектной модели Visio.
quote:
на что способна и нужна ShapeStudio

Это технология, рассчитанная на производство серий шейпов (обладающих сходными признаками), учет версий при разработке и повторное использование наработок.
Go to Top of Page

Borg

Kazakhstan
20 Posts

Posted - 01/30/2006 :  08:12:18
>> Tumanov
Большое спасибо.
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)