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

Robinkzn

84 Posts

Posted - 03/23/2012 :  05:49:30
Через макрос вношу формулы в фигуры, потом мне нужно дождатся, результатов выполнения формул и продолжить выполнение макроса. Как сделать?

9rey

Russia
30 Posts

Posted - 03/23/2012 :  06:50:20
мне кажется можно попробовать DoEvents, либо если не получится, то посылать самому себе событие через Application.QueueMarkerEvent "название события"
потом, когда после этого мозги у программы провернутся ловить событие и продолжать макрос
Go to Top of Page

Robinkzn

84 Posts

Posted - 03/23/2012 :  12:22:30
Я в цикле создаю шейпы, сразу после внесения формулы, изменения не фиксируются, после того как нарисуется следующий шейп, эти изменения уже применены и можно их брать в оборот. На их применение нужно какое то время.

Edited by - Robinkzn on 03/23/2012 12:23:39
Go to Top of Page

9rey

Russia
30 Posts

Posted - 03/23/2012 :  14:57:05
ну так а че, если после каждого создания шейпа вставлять DoEvents? пробовал?
и вообще пока твой цикл выполняется, визио ничего не делает. тебе надо отдавать ему управление после каждого создания шейпа. иначе как ты хочешь?
вообще, когда такие нестандартные запросы, скорее всего челоек просто неправильно составляет алгоритм. думаю проще перестроить свою программу так чтоб не требовалось так извращаться.
а вообще повторюсь, разбирайся с QueueMarkerEvent, если хочешь более гибко взаимодействовать с визио.
Go to Top of Page

9rey

Russia
30 Posts

Posted - 03/23/2012 :  15:00:05
я например делал так, чтобы например кружок двигался по экрану. делал цикл изменения его координат. после каждого изменения вставлял doevents. все работало. т.е. обновлялись и формулы в шейпе в процессе работы цикла. вот и думай как это к себе применить
Go to Top of Page

Robinkzn

84 Posts

Posted - 03/23/2012 :  16:56:11
quote:
пока твой цикл выполняется, визио ничего не делает.


Оказывается делает :). Вопрос в том, как это действие происходит, в моем случае оно происходит с первым шейпом, после того как я нарисую второй. В какой именно момент интересно, яно не сразу после создания первого, видимо как бы по событию до отрисовки второго. Я первый шейп, просто обрабатываю после создания второго, второй после создания третьего, работает.
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)