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

Форум по вопросам применения и программирования в Visio
Текущее время: 24 июн 2018, 07:34

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Выделение одного шейпа
СообщениеДобавлено: 06 июл 2016, 16:22 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Привет.
Делаю работу с Visio из vb.net.
Все получилось кроме одного - никак не могу выделить один шейп...Т.е. чтобы вокруг него появилась рамка выделения. Для обращения к нему есть его имя...
Может у кого-нить есть пример такого выделения из внешней программы (не из VBA)?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 06 июл 2016, 17:31 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 892
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
ActiveWindow.Select ActivePage.Shapes("Sheet.1"), visDeselectAll + visSelect

вместо Sheet.1 - имя нужного шейпа

переделать под другой язык думаю не проблема


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 08:41 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Нет видит, к сожалению, vb vis-констант (((
У меня не видит...может я что-то не так делаю, но...Вся программа работает, шейпы создаются, удаляются, раскрашиваются, меняют положение и т.д., а вот visSelect и прочие константы - не работают, не "распознаются" системой


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 08:54 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1131
Очков репутации: 100585

Добавить очки репутацииУменьшить очки репутации
Взять и определить самому. Или просто подставить циферки.
Посмотреть всегда можно в SDK.
visDeselect 1
visSelect 2
visSubSelect 3
visSelectAll 4
visDeselectAll 256


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 09:30 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Дыг...смотрел ))) И подставлял ))) И не работает....заррррраза )))
будем подумать...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 10:15 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 892
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
powercat писал(а):
Нет видит, к сожалению, vb vis-констант (((

это не VB константы. а движка визио, независимо от языка.
надо полный путь писать: Visio.VisSelectArgs.visSelect
в c# вроде надо их приводить к типам (short), в VBnet не знаю, но как-то похоже должно быть.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 11:46 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1131
Очков репутации: 100585

Добавить очки репутацииУменьшить очки репутации
Посмотрел среди своих программок... Правда, на C#
Ничего дополнительно определять не приходилось.
Просто стоит строчка
Код:
    ActiveWindow.Select (shp, visDeselectAll + visSelect);

Вверху, естественно, ссылка
Код:
using Microsoft.Office.Interop.Visio;

Значит там все должно быть определено по умолчанию.
Само приложение работает как Add-In.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 11:48 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 492
Использую Visio c: 2008
Очков репутации: 99

Добавить очки репутацииУменьшить очки репутации
powercat, у меня в надстройках выделение везде происходит подобным образом:

Код:
winObj.Select(shpObj, 258)

Где:
winObj - объектная переменная содержащая активное окно
shpObj - объектная переменная содержащая шейп для выделения


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 11:54 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
powercat, у меня в надстройках выделение везде происходит подобным образом:

Код:
winObj.Select(shpObj, 258)

Где:
winObj - объектная переменная содержащая активное окно
shpObj - объектная переменная содержащая шейп для выделения


Пробовал и так...но увыиах...
Я понимаю, что где-то сам косячу, но пока не нашел...думаю, что на днях все же осилю эту штуку )))


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 14:27 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Посмотрел среди своих программок... Правда, на C#
Ничего дополнительно определять не приходилось.
Просто стоит строчка
Код:
    ActiveWindow.Select (shp, visDeselectAll + visSelect);

Вверху, естественно, ссылка
Код:
using Microsoft.Office.Interop.Visio;

Значит там все должно быть определено по умолчанию.
Само приложение работает как Add-In.


Во, сработало так:
Код:
Visio.Application.ActiveWindow.Select(shape,2)' Причем просто шейп, без имени или индекса


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 14:28 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Всех благодарю, тему можно закрыть


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 14:37 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1131
Очков репутации: 100585

Добавить очки репутацииУменьшить очки репутации
На всякий случай хочу предупредить, что 2 - это только visSelect. Значит, если на странице к моменту выполнения окажутся другие селектированные шейпы, то новый шейп присоединится к ним.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 07 июл 2016, 14:59 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 892
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
powercat писал(а):
Причем просто шейп, без имени или индекса

значит проблема была в куске кода, где ты брал шейп по имени. либо накосячил с синтаксисом, либо неправильное имя было.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Выделение одного шейпа
СообщениеДобавлено: 08 июл 2016, 10:58 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
9rey писал(а):
ActiveWindow.Select ActivePage.Shapes("Sheet.1"), visDeselectAll + visSelect

вместо Sheet.1 - имя нужного шейпа

переделать под другой язык думаю не проблема


Вот эта конструкция с выборкой по имени из коллекции не подошла...Уж не знаю почему...может это VS 2015 извращения...а вот без имени просто к объекту обратиться в неявном виде так сказать - получилось...


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

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



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

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


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

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