Русский
English
Главная
RastrWin
Программа
Последние изменения
Часто задаваемые вопросы
Аннотация
Лицензирование и защита от копирования
Права Windows для пользователя RastrWin
Курсы
Компонентная архитектура
Интерфейс
Инструкция по установке
Документация, видео, презентации
Свидетельство о регистрации
RastrKZ
RastrMDP
RastrOS
ZamerSeti
Архив
Bars-Lincor
Расчетная модель
Система моделирования
Последние изменения
Программа
Инструкция пользователя
Инсталляция
RUStab
Загрузка
Последние изменения
Поддержка
Поддержка
Форум
Техподдержка
Персональная
Макро студия
Макро студия
Автоматизация
Работа с SQL
Оценка параметров ЛЭП и ТР
Эффективность размыкания сети
Анализ напряжений в Excel
Автоматизация с "AutoIt"
Создание графа сети из режима
Передача графики в SVG
Вариантные расчеты
Импортозамещение
О нас
О компании
Фотогалерея
Пользователи
Отчеты об использовании своего имущества
Реквизиты
Поддержка
Форум
Техподдержка
Персональная
Авторизация
Запомнить меня на этом компьютере
Забыли свой пароль?
Регистрация
Поиск по сайту
Подписка
Новости Bars- Lincor
Новости RastrWin
Общие новости
Новости RUStab
Изменение параметров
Hits
67418336
9686
Hosts
3608925
1962
Visitors
53570881
9351
127
Главная
/
Поддержка
/
Форумы
/
Макро
Форум «Макро»
Версия для печати
Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация
Тема: «
Множество расчетов
» в форуме:
Макро
Просмотров: 14537
Владимир Неуймин
Администратор
Всего сообщений:
268
Дата регистрации:
13.03.2007
Создано:
03.10.2007 10:00:23
Цитата
При задании макросом - более 1000 расчетов УР - в протокол заносится огромное кол-во записей - программа Растр тормозит
Ниже приведена рекомендуемая универсальная "обертка" для макросов, особенно выполняющих множество расчетов.
Код
r=setlocale("en-us") ' установить разделитель точка для операций ввода-вывода
Rastr.LockEvent=True ' блокировка изменения информации в открытых окнах
Rastr.LogEnable=False ' блокировка вывода в протокол
' Текст макроса
'------------------------
---
'
'
'------------------------
---
Rastr.LogEnable=True
Rastr.LockEvent=False
Rastr.SendChangeData 0,"","",0 ' обновить содержимое открытых окон
Профиль
Наверх
Юрий Федоров
Посетитель
Всего сообщений:
39
Дата регистрации:
07.09.2007
Создано:
23.04.2008 19:42:55
Хороший пример оптимизации кода.
Посредством макроса все работает. Но в среде программирования (CBuilder) попытка заблокировать вывод сообщений в протокол Rastr'а вызывает ошибку 'TRastr::LogEnable is not accessible'-дескать свойство недоступно.
Та же реакция и на LockEvent, но на это хотя бы можно предположить, что формы принадлежат оболочке, а не COM-объекту.
А что с протоколом....Ваши соображения?
Профиль
Наверх
Владимир Неуймин
Администратор
Всего сообщений:
268
Дата регистрации:
13.03.2007
Создано:
24.04.2008 12:45:34
К сожалению, CBuilder мы не пользуемся.
Но LogEnable и LockEvent
обычные свойства
COM объекта Rastr и должны быть доступны в любом случае. - Ошибка на компиляции ? или в ходе выполнения? Если на компиляции, то может враппер свойства, как то по другому называет = например PutLogEnable ( так VC делает) Да и на выполнение если ошибка - тоже врапппер надо копать. возможно он это свойство как ReadOnly представил. На VC помимо враппера досупны еще и raw функции - возможно для билдера они тоже доступны
С оболочкой связана только SendChangeData да ито вызову метода ничего не мешает ( правда и пользы от него нет)
Профиль
Наверх
Юрий Федоров
Посетитель
Всего сообщений:
39
Дата регистрации:
07.09.2007
Создано:
25.04.2008 13:26:05
Спасибо за подсказку. Вы правы: присмотревшись внимательно, понял, что свойства LogEnable и LockEvent действительно не доступны. Зато доступны аналогичные методы с приставками get_ и set_
Профиль
Наверх
Иван Трофимович
Постоянный посетитель
Всего сообщений:
76
Дата регистрации:
12.04.2008
Создано:
26.04.2008 16:17:10
Использую пример из первого поста, но...
Цитата
Rastr.SendChangeData 1,"","",0 ' обновить содержимое открытых окон
вот этот код у меня почему то не работает
После завершения расчетов окна не обновляются. чтобы продолжить работу приходиться закрывать и переоткрывать вручную все окна. в чем дело может быть ?
Профиль
Наверх
Юрий Федоров
Посетитель
Всего сообщений:
39
Дата регистрации:
07.09.2007
Создано:
01.05.2008 19:34:24
Верно, есть такое
Дело, наверное, во входном параметре метода.
См. стр. 159 и 162 Rastr.manual
SendChangeData hint,tabl,col,row
первый параметр hint может принимать значения:
HINTR_CHANGE_ALL=0,
HINTR_CHANGE_COL=1,
HINTR_CHANGE_ROW=2,
HINTR_CHANGE_DATA=3,
HINTR_ADD_ROW=4,
HINTR_DELETE_ROW=5,
HINTR_INS_ROW=6,
HINTR_CHANGE_TABL=7,
Чтобы обновить все, задавайте hint равным 0. При этом tabl и row (текстовые параметры) пустые, а row(числовой параметр) нулевой.
Итого имеем:
Rastr.SendChangeData 0,"","",0
У меня это работает.
Хотите обновлять выборочно (таблицу, строку, столбец), меняйте первый параметр и задавайте осмысленно следующие.
Например, для обновления только таблицы Узлов:
Rastr.SendChangeData 7,"node","",0
ну, и т.д и т.п.
Профиль
Наверх
Иван Трофимович
Постоянный посетитель
Всего сообщений:
76
Дата регистрации:
12.04.2008
Создано:
02.05.2008 15:39:05
спасибо. теперь работает как надо. первый пост обновить бы...
Профиль
Наверх
Владимир Неуймин
Администратор
Всего сообщений:
268
Дата регистрации:
13.03.2007
Создано:
04.05.2008 15:00:05
Спасибо, обновил
Кстати вызов
Rastr.SendChangeData 0,"","",0
полностью перезагружает содержимое окон и используется после загрузки файла, а вызов
Rastr.SendChangeData 0,"","",1
позволяет ускорить процедуру обновления когда не менялась ключевая информация и нет вставки удаления, например после расчета режима
Профиль
Наверх
Иван Трофимович
Постоянный посетитель
Всего сообщений:
76
Дата регистрации:
12.04.2008
Создано:
24.03.2009 22:02:54
к слову об оптимизации. для VBA в целом рекомендую такой код
Код
' В начале процедуры пишем
Dim scrup As Boolean
scrup = Application.ScreenUpdatin
g
Application.ScreenUpdatin
g = False
<Тело процедуры>
' В конце процедуры пишем
Application.ScreenUpdatin
g = scrup
таким образом обновление таблиц/экрана можно не просто выключить в подпрограмме, а оставить в конце таким же как было. при разбиении макроса на подпрограммы это очень удобно. можно ли аналогично сделать в растре ? пробовал LogEnabled команду - растр не узнает
Профиль
Наверх
Читают тему
гостей:
1
, пользователей:
0
, из них скрытых:
0
Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019