Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 16:26

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Свойства шейпа в Visio 2010 add-in C#
СообщениеДобавлено: 24 апр 2012, 12:47 
Добрый день всем, кто хочет мне помочь.

В общем я делаю надстройку над visio 2010 при помощи C#.

Вопрос такой: нужно обработать событие выделения шейпа, по событию выделения вывести на экран его свойства (эта функция есть в визио). Но мне нужно, исходя из выделенного шейпа (один клик левой кнопкой мыши, он становится розовеньким тогда) ПРОЧИТАТЬ его свойства и передать другому методу для выполнения некоторых расчетов. Помогите люди добрые, встроенные функции есть, но их слишком много, незнаю какой подойдет. Желательно с примером кода... Спасибо всем!


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Свойства шейпа в Visio 2010 add-in C#
СообщениеДобавлено: 25 апр 2012, 11:58 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
я в C# не шарю и этой среды у меня нет …
не совсем понял что надо?
1. код события выделения шейпа на c# ?
в SDK Visio есть код события выделения шейпа на C#, такой вариант не рассматривался
или можно попробовать использовать visio event monitor из SDK, чтоб вычислить название интересующего события
2. или нужна наводка какая встроенная функция содержит эти свойства ?

кстати какие свойства интересуют:
а) custom properties (или shape data Visio 2007 и старше)
б) user-defined cells
в) иное

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Свойства шейпа в Visio 2010 add-in C#
СообщениеДобавлено: 25 апр 2012, 18:01 
Главная задача - это вытянуть свойства программно и передать их в мою форму. Свойства - значения, вводимые при выделении шейпа, прилагаю скрин, какие свойства я имею ввиду.

Вот...такая проблема, программно добраться до этих свойств и передать их в другую форму для дальнейшей работы.Изображение


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Свойства шейпа в Visio 2010 add-in C#
СообщениеДобавлено: 26 апр 2012, 10:45 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
значит требуется считать значения свойств Shape Data. Ниже пример на VBA, придется поискать аналогии в C#

Код:
Sub Macro1()
Dim D(4) As Integer                                                                     ' опредеяем массив например из 4 строк
Dim vsoShape As Visio.Shape                             ' определяем переменную vsoshape как шейп
Set vsoShape = Application.ActiveWindow.Page.Shapes.ItemFromID(1) ' устанавливаем значение переменной vsoshape, шейп с ID=1 на активной странице
For x = 1 To 4                                           ' цикл перебора 4 значений
D(x) = vsoShape.CellsSRC(visSectionProp, x - 1, visCustPropsValue      ' считывание значения свойства у шейпа vsoshape с номером X
   
        ' дальше загоняете полученое значение D(x) на свою форму

Next x
End Sub

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Свойства шейпа в Visio 2010 add-in C#
СообщениеДобавлено: 27 апр 2012, 10:16 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
вот тут про неудачные попытки заполнять поля ShapeData на C#

http://social.technet.microsoft.com/For ... e1aa207ffa

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Свойства шейпа в Visio 2010 add-in C#
СообщениеДобавлено: 27 апр 2012, 11:46 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 24 апр 2012, 12:36
Сообщений: 180
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Спасибо большое! В скором времени приступлю к разработке, отпишусь, что и как получилось или нет) :oops:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Свойства шейпа в Visio 2010 add-in C#
СообщениеДобавлено: 07 май 2012, 13:16 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 24 апр 2012, 12:36
Сообщений: 180
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Получилось, вот код, кому интересна реализация на C#:

Код:
foreach (Shape shape in shapes)
            {
                // Индекс iRow для просмотра каждой строки в поле свойств

                short iRow = (short)VisRowIndices.visRowFirst;

                // Цикл просмотра строк свойств шейпа

                while (shape.get_CellsSRCExists((short)VisSectionIndices.visSectionProp,iRow,(short)VisCellIndices.visCustPropsValue,(short)0) != 0)
                {

                    // Получаем название и значение текущего свойства

                    string label = shape.get_CellsSRC(
                            (short)VisSectionIndices.visSectionProp,
                            iRow,
                            (short)VisCellIndices.visCustPropsLabel
                        ).get_ResultStr(VisUnitCodes.visNoCast);

                    string value = shape.get_CellsSRC(
                            (short)VisSectionIndices.visSectionProp,
                            iRow,
                            (short)VisCellIndices.visCustPropsValue
                        ).get_ResultStr(VisUnitCodes.visNoCast);

                 
                    iRow++;
                }


label - название поля свойства
value - значение поля свойства


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB