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

Форум по вопросам применения и программирования в Visio
Текущее время: 17 ноя 2019, 22:08

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Можно ли в макросе:?
СообщениеДобавлено: 21 сен 2009, 13:05 
Не в сети

Зарегистрирован: 18 сен 2009, 07:31
Сообщений: 6
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
У меня к Вам несколько вопросов
Можно ли в макросе:?
1. Знать координаты мышиного клика на (экране/листе)
Вы - Запускать макрос в обработчике события MouseDown и смотреть передаваемые
параметры.

Да, в ThisDocument вставка
Private Sub App_MouseDown(ByVal Button As Long, ByVal KeyButtonState As Long, ByVal x As Double, ByVal y As Double, CancelDefault As Boolean)
Debug.Print x, y
End Sub

Дала нужный эффект. Большое спасибо.

2. А значит, знать координаты выделенного прямоугольника (даже пустого)
Вы - Координаты выделенного прямоугольника можно узнать и через
ActiveWindow.Selection(1).Cells("PinX") и PinY.

Извините, не понял. Еслиб он ОСТАВАЛСЯ на листе, тогда… Но ведь он исчезает…
Можно ли сделать так, чтоб выделенный район не исчезал (если он пуст) и не сжимался (если не пуст)? (Но это не важно, это просто интересно).

3. Сжимать/раскрывать Visio, чтоб видеть «за ним» (например, Excel)
Вы - Можно через Application.Visible = False и Application.Visible = False
Спасибо. Это тоже интересно и может быть даже достаточно для меня.
Но может быть, Вы знаете как именно сжимать частично (а не удалять полностью)?

4. Знать, что клик двойной
Вы - Это что-то сразу не придумаю, но как-нибудь можно.
Если не придумаете, то теперь, после (1) это и не важно.

5. По правому м-клику не выводить контекстное меню (но знать, что клик –
правый)
Вы - Сначала сработает событие MouseDown, а там уже можно будет разобраться,
нужно ли показывать меню.

Извините, а как именно можно блокировать временно не нужное меню?

6. Менять имя рисунка, а не рисунок (на формах)
Вы - Не понял вопроса.
Извините, я действительно думая о своём написал не то.
Форма, на ней Image1 у него свойство (Properties) Picture (Icon)
Можно ли как-то менять их из программы?


7. Отличить окружность от линии и прямоугольника кроме
vsoShape.RowCount(intCurrentGeometrySection) - счётчика её рядов = (2,3, 6
и более)
Вы - Линия отличается легко по типу шейпа, а окружность от прямоугольника можно
отличить только по секции геометрии.

Ну, значит, я нормально их различаю. Спасибо. Но вот, интересно, тип? У линии и у эллипса они одинаково = 3? Ну да это уже не особо важно.

8. Увидеть все вопросы пользователей (и ответы на них) одним файлом
Вы - В форуме нельзя. На сайте есть FAQ. Сейчас там, правда, не одна, а три
страницы. Но формировались они давно, за последний год (если не больше)
вопросы не вошли. В ближайшее время как раз собираюсь их обновить.

Извините, не знал. Всё очень хорошо. Но, может быть, для таких же как я ... Вы
- или переименуете тему с Вопросы по … на Вопросы по … (дополнительно к уже заданным в FAQ)
- или за FAQ припишите что-то типа ответы на часто задаваемые вопросы?

Геннадий Евгеньевич, огромное Вам спасибо.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 21 сен 2009, 13:21 
Не в сети

Зарегистрирован: 18 сен 2009, 07:31
Сообщений: 6
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
И ещё 3 вопроса
1. Где можно увидеть схему (объектную модель) Visio? (Visio-форм со всем набором ячеек cells/cellsSRC?)
2. Можно-ли безболезненно поменять шейпы местами (их ID). Сейчас я вынужден держать на них индексы (незапоминаемые Visio между сеансами)
3. Есть ли разница между ID/ID16, Index/Index16, Name/NameID/NameU – когда она проявляется/работает?

С уважением и благодарностью.
P.S. Сейчас я на некоторое время погружусь в Ваш FAQ. Уверен, что там много интересного для меня.
Стоит ли рассказать о моих глюк-находках в другой теме? Или они встретились лишь у меня?
Может лучше я сформулирую их здесь? Как вопросы ответы?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 21 сен 2009, 19:42 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
2. Можно ли сделать так, чтоб выделенный район не исчезал
Вон Вы о каком прямоугольнике... Нет, он в объектной модели Visio отсутствует. Придется ловить только через мышь.
Цитата:
3. Сжимать/раскрывать Visio
Еще можно управлять окном, типа вот так:
Код:
Application.Window.SetWindowRect 200, 200, 400, 400
Цитата:
5. как именно можно блокировать временно не нужное меню?
Через CancelDefault. Примерно так:
Код:
Private Sub app_MouseUp(ByVal Button As Long, ByVal KeyButtonState As Long, ByVal x As Double, ByVal y As Double, CancelDefault As Boolean)
    If Button = 2 Then
        CancelDefault = True
    Else
        CancelDefault = False
    End If
End Sub
Цитата:
6. Менять имя рисунка
Прямо в лоб, как в обычной программе - UserForm1.Image1.Picture
Цитата:
7. Но вот, интересно, тип? У линии и у эллипса они одинаково = 3?
Это я неточно выразился. На самом деле не тип, а свойство OneD. Типа - одномерный, двумерный.
Код:
ActivePage.Shapes(1).OneD


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 21 сен 2009, 20:03 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
1. Где можно увидеть схему (объектную модель) Visio? (Visio-форм со всем набором ячеек cells/cellsSRC?)

Скачайте SDK для нужного Visio. Прямо с Microsoft. Там хоть, не по-русски, зато все есть.
Вот только набор ячеек в объектную модель не входит. Ячейки внавал описываются, по алфавиту.
Цитата:
2. Можно-ли безболезненно поменять шейпы местами (их ID). Сейчас я вынужден держать на них индексы (незапоминаемые Visio между сеансами)

ID менять нельзя. Но обычно это и не требуется.
Если нужно что-то помнить, то в секцию User или Custom Properties вводятся свои идентификаторы и работают через них.
Цитата:
3. Есть ли разница между ID/ID16, Index/Index16, Name/NameID/NameU – когда она проявляется/работает?

Есть и большая. Да еще и в разных версиях между ними существуют отличия. В старом форуме про это есть, поэтому повторять здесь не буду.
С ID и Index пользователь вообще работает очень редко. Чаще с именами: локальным - Name, составным имя + ID (NameID) или универсальным, не зависящим от локализации (NameU).
Цитата:
Стоит ли рассказать о моих глюк-находках в другой теме? Или они встретились лишь у меня?
Может лучше я сформулирую их здесь? Как вопросы ответы?

В одну тему все замешивать нехорошо. Потом народ искать замучается. Лучше для каждого вопроса отдельную тему, чтобы можно было по названиям ориентироваться.
А вот для перечня ошибок в Visio может быть стоит одну продолговатую тему сделать.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 22 сен 2009, 12:19 
Не в сети

Зарегистрирован: 18 сен 2009, 07:31
Сообщений: 6
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Цитата:
3. Сжимать/раскрывать Visio

Еще можно управлять окном, типа вот так:
Application.Window.SetWindowRect 200, 200, 400, 400

Большое спасибо, я счастлив, именно этого я и хотел.

Цитата:
5. как именно можно блокировать временно не нужное меню?

Через CancelDefault. Примерно так:
Private Sub app_MouseUp(ByVal Button As Long, ByVal KeyButtonState As Long, ByVal x As Double, ByVal y As Double, CancelDefault As Boolean)
If Button = 2 Then
CancelDefault = True
Else
CancelDefault = False
End If
End Sub

Спасибо, прекрасно. Но...
А не знаете-ли Вы как подобный эффект получить и на кнопках?
Это позволило бы удвоить число функций. Я (кажется) где-то (раньше) встречал имена кнопок основного меню, но тогда мне было не до функций... Да и сейчас, не уверен, что мне они что-то дадут...
Итак, можно ли подобным образом поймать клик на кнопке меню?

Цитата:
6. Менять имя рисунка

Прямо в лоб, как в обычной программе - UserForm1.Image1.Picture
Извините, не понимаю: У меня там вместо ожидаемого пути+имя (C:\...\a.ico) - непонятное для меня число типа (9935762)
А комбинация смены картинок на кнопках и ловли клика до подпрограммы - вообще открывает море возможностей. Сейчас я заменяю Image-и, это работает (там можно ещё и координаты клика ловить), но замена Image-ей - тяжеловата... (Я это умею делать на кнопках форм, а хотелось бы уметь и на кнопках visio-панелей)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 22 сен 2009, 13:13 
Не в сети

Зарегистрирован: 18 сен 2009, 07:31
Сообщений: 6
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Цитата:
1. Где можно увидеть схему (объектную модель) Visio? (Visio-форм со всем набором ячеек cells/cellsSRC?)

Скачайте SDK для нужного Visio. Прямо с Microsoft. Там хоть, не по-русски, зато все есть.
Вот только набор ячеек в объектную модель не входит. Ячейки внавал описываются, по алфавиту.

Ой, аж всё "зачесалось"... А не дадите-ли ссылку?
Когда я попробовал поискать (разными запросами), то ... Тысячи предложений, но все не о том. Я могу читать по "аглицки", но ... не родной. Нужное, интересное - без проблемм, а всё подряд - аж ...

Цитата:
2. Можно-ли безболезненно поменять шейпы местами (их ID). Сейчас я вынужден держать на них индексы (незапоминаемые Visio между сеансами)

ID менять нельзя. Но обычно это и не требуется.
Если нужно что-то помнить, то в секцию User или Custom Properties вводятся свои идентификаторы и работают через них.

Жаль. У меня сотни Shapes, помнить о них - программа рухнет. Каждая ячейка "их" памяти +4к стоит.
Поэтому, то что сверх-важно я храню либо в Excele, либо в "одной" ячейке в текстовом формате.
А плачу за это кодировкой/раскодировкой. Всё работает со свистом, но... вот индексы... в них тоже сотни указателей...
Разовые Visio поиски работают быстрей, но они "переборные" (For Each). А на многократных поисках "порядок (двоичный) бъёт класс".
Иногда даже жалко, что эти ребята с исходниками за океаном. Да и деньги у нас разные (у них дутые (бутерброд 5$), а у нас трудовые...)
Идентификаторы для меня - ..., а индексы - жизнь.


Цитата:
3. Есть ли разница между ID/ID16, Index/Index16, Name/NameID/NameU – когда она проявляется/работает?

Есть и большая. Да еще и в разных версиях между ними существуют отличия. В старом форуме про это есть, поэтому повторять здесь не буду.
С ID и Index пользователь вообще работает очень редко. Чаще с именами: локальным - Name, составным имя + ID (NameID) или универсальным, не зависящим от локализации (NameU).

Ясно. Увы, я чуток [list=][/list]разочаровался в увиденном в FAQ-е. Вы говорили о трёх страницах, а я и там вижу лишь одну (да ещё и аглицкую). Может я не знаю где именно лежат систематизированные Вами вопросы-ответы (обожаю системы). Если я Вас не правильно понял вначале, ну чтож, буду искать по случайнорасположенным страницам вопросов в форуме. Вы итак проделали огромную созидательную работу.
Геннадий Евгеньевич, спасибо Вам за созидательность. Я бы не смог так (в этой области знаний).


Цитата:
Стоит ли рассказать о моих глюк-находках в другой теме? Или они встретились лишь у меня?
Может лучше я сформулирую их здесь? Как вопросы ответы?

В одну тему все замешивать нехорошо. Потом народ искать замучается. Лучше для каждого вопроса отдельную тему, чтобы можно было по названиям ориентироваться.
А вот для перечня ошибок в Visio может быть стоит одну продолговатую тему сделать.

Сделайте, пожалуйста. Типа "Встречавшиеся глюки и как их обходили"
И ещё, Вы правы: "нехорошо"! Хотя мне и не нравятся мини вопросы, но и моя ветка мне тоже... Ну да я сам в этом виноват.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 22 сен 2009, 23:06 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
А не знаете-ли Вы как подобный эффект получить и на кнопках?

Если задачи настолько глобальные, то можно просто перепрограммировать хоть весь пользовательский интерфейс. Все меню доступны. Вот, например, - http://visio.artberg.ru/forum/topic.asp?TOPIC_ID=469&SearchTerms=UIobject
---
SDK для Visio 2007 вот здесь http://www.microsoft.com/downloads/deta ... laylang=en
На той же страничке есть и ссылка на 2003.
Цитата:
Жаль. У меня сотни Shapes, помнить о них - программа рухнет. Каждая ячейка "их" памяти +4к стоит.
Поэтому, то что сверх-важно я храню либо в Excele, либо в "одной" ячейке в текстовом формате.

Это я пока не понимаю. Возможно, Вы имеете в виду какой-то очень специфичный случай, с которым я пока не сталкивался, потому и не понятно.
Цитата:
Увы, я чуток разочаровался в увиденном в FAQ-е. Вы говорили о трёх страницах, а я и там вижу лишь одну (да ещё и аглицкую).

Вот эту - http://visio.artberg.ru/faq.htm ?
А весь форум систематизируется с трудом :) Там более 1000 записей и они еще довольно часто касаются нескольких тем. Так что загнать их в какие-то рамки будет нелегко. Я уже порядком подутомился...
P.S. Вот, кстати, полуавтоматическая подборка из старого форума на тему пользовательского интерфейса :) http://visio.artberg.ru/store/tst.htm
Тема затрагивалась порядка 20 раз. Выборка очень сырая, но если найдете что-то интересное и будет непонятно, то можно взять кусок фразы и найти поиском это место в форуме.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 23 сен 2009, 07:41 
Не в сети

Зарегистрирован: 18 сен 2009, 07:31
Сообщений: 6
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Глубокоуважаемый (за взваленный на себя тяжкий крест помощи людям) Геннадий Евгеньевич, Спасибо Вам!!!
Вот это (Ваши ссылки и разъяснения в них) именно тот воздух, которым я дышу, который мне необходим.

Ухожу в чтение.

Спасибо Вам за уже оказанную большую и важную для меня помощь.
Спасибо Вам за свет и тепло Вашего Разума для и во имя России.
Не утомляйтесь, но (и) продолжайте свою нужную миссию.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 27 сен 2009, 12:46 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
К вопросу о систематизации старого форума... На сайте появилось вот такое оглавление - http://visio.artberg.ru/f_rubr/top.htm . Может не слишком качественно, но хоть какие-то разделы выделены. Надеюсь, станет поудобнее.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Можно ли в макросе:?
СообщениеДобавлено: 30 мар 2010, 23:49 
http://depositfiles.com/files/9yfetz3cm Самое лучшее


Последний раз поднималось Anonymous 30 мар 2010, 23:49.


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

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



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

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


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

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