All Forums
 Категория Visio
 Форум Вопросы и ответы
 Shape.Parent не работает
Author Previous Topic Topic Next Topic  

ssergey

Russia
3 Posts

Posted - 07/18/2006 :  19:07:26
На документе три шейпа, Sheet.3 это группа в которой Sheet.1 и Sheet.2. Задача состоит в том чтобы Sheet.1 вывести из группы и переподчинить странице. Делаю:

ActivePage.Shapes("Sheet.1").Parent = ActivePage.PageSheet

Выскакивает exception. Хотя в документации сказано:
If you want to assign a page or master to be the parent of a shape, you must assign the Shape object returned by the Page or Master object's PageSheet property.

Кто знает, что делать ????

Edited by - ssergey on 07/19/2006 02:51:15

Tumanov

Russia
1198 Posts

Posted - 07/18/2006 :  20:15:41
Непонятно...
На всякий случай проверил у себя. Скопировал строчку отсюда в макрос. Все сработало без проблем.
Может в процессе экспериментов какие-то другие группы образовались? Посмотрите в Drawing Explorer Window, все ли у Вас так, как написали.
Go to Top of Page

ssergey

Russia
3 Posts

Posted - 07/19/2006 :  02:50:50
quote:
Originally posted by Tumanov

Непонятно...
На всякий случай проверил у себя. Скопировал строчку отсюда в макрос. Все сработало без проблем.
Может в процессе экспериментов какие-то другие группы образовались? Посмотрите в Drawing Explorer Window, все ли у Вас так, как написали.


Спасибо за ответ, этот вопрос очень важен для меня.

Все делаю чисто: новый документ, blank drawing, два прямоугольника, группировка, Alt-F11,

Option Explicit
Public Sub s()
ActivePage.Shapes("Sheet.1").Parent = ActivePage.PageSheet
End Sub

Не работает :((((
Посмотрите пожалуйста, что не так?
http://pravoslavievbytu.narod.ru/drawing1.vsd
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 07/19/2006 :  09:39:48
Да, не работает.
Вернее, в Visio 2002 работает, а в Visio 2003 не работает.
Причины не знаю. В документации вроде ничего не говорится.
Может пока попытаться действовать другими методами? Если Ваша задача - исключить объект из группы, то можно использовать метод RemoveFromGroup. Только он работает через Selection...
Посмотрите вот такой макрос. (Снимается предыдущее селектирование, через visSubSelect селектируется нужный шейп внутри группы, селектированное удаляется из группы и ему больше некуда деться, как только попасть на страницу).
Public Sub s()
Dim Sh As Visio.Shape
Set Sh = ActivePage.Shapes("Sheet.1")
ActiveWindow.DeselectAll
ActiveWindow.Select Sh, visSubSelect
ActiveWindow.Selection.RemoveFromGroup
End Sub
Go to Top of Page

ssergey

Russia
3 Posts

Posted - 07/19/2006 :  11:23:55
Спасибо, я уже тоже нашел RemoveFromGroup. К сожалению, это надо делать несколько раз - если шейп в группе, которая еще в группе, и так далее.

Кроме того, правильно ли я понимаю, что надо обязательно сделать страницу, с которой работаю, активной, selection иначе создать нельзя?

Нельзя ли в microsoft-е попросить исправить ошибку?

Спасибо.
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)