Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

11 Декабрь 2019, 13:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 5 »   Вниз
  Печать  
Автор Тема: Возможно ли создать многостраничную форму в LO Base  (Прочитано 2527 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 627


« Ответ #30: 3 Декабрь 2019, 23:09 »

Код:
...
oDlg.Visible = true
' doing something with progress bar
Записан

С уважением,
Михаил Каганский
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #31: 3 Декабрь 2019, 23:20 »

oDlg.Visible = true
Несколько не понял идею?! Visible = true обычно используется для визуализации чего-нибудь. Это вместо запуска диалога или после его запуска?
Записан
mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 627


« Ответ #32: 3 Декабрь 2019, 23:34 »

Это вместо запуска.
Записан

С уважением,
Михаил Каганский
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #33: 3 Декабрь 2019, 23:42 »

Огромное спасибо. С этим вопросом разобрался.
Записан
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #34: 4 Декабрь 2019, 00:40 »

Возможно, что-то нашёл по печати. ТУТ. Завтра попробую.
Записан
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #35: 4 Декабрь 2019, 15:33 »

Очень жаль, но не получается воспользоваться "индикатором выполнения", в частности как предлагается ТУТ. Теперь диалог не останавливает работу самого макроса, к поторому и должен быть прицеплен индикатор, а сам цикл индикатора останавливает.
Или я просто не смог его правильно подцепить.
Записан
mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 627


« Ответ #36: 4 Декабрь 2019, 15:39 »

Цикл индикатора?? Шокирован У индикатора не должно быть никакого цикла. Цикл может быть (а может и не быть) у той самой длительной процедуры, которая в какой-то момент этого цикла, или в какие-то моменты выполнения без цикла, решает обновить показания индикатора ...
Записан

С уважением,
Михаил Каганский
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #37: 4 Декабрь 2019, 15:48 »

mikekaganski, да, да... Я уже врубился, что приращивание индикатора нужно внедрять в основной макрос.
Записан
mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 627


« Ответ #38: 4 Декабрь 2019, 15:53 »

Кстааати! Ведь можно вообще использовать прогрессбар в строке статуса ЛО, например, как указано здесь: https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=87057
Записан

С уважением,
Михаил Каганский
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #39: 5 Декабрь 2019, 21:58 »

Ведь можно вообще использовать прогрессбар в строке статуса ЛО
Хорошая идея. Однако, мне кажется, что лучше будет если диалог будет мешать оператору, чтобы ожидал, а не мешал своими клацаниями по всем кнопкам... и этот самый макрос по десять раз не запускал, полагая, что с первого раза ничего не стартовало. А внизу в строке состояния и не увидят.

Кстати, по этому поводу ещё хотел бы спросить совета. Этот самый макрос - это поиск оптимального раскроя детали. Вещь достаточно сложная и иной раз длительная. По сути он пересчитывает факториал возможных раскроев. И с каждым увеличением количества деталей время расчёта увеличивается в разы. Сегодня столкнулся с подобной проблемой. Поставил индикатор итераций на этот диалог и увидел некоторую особенность. В общем, все результаты, вернее найденные раскрои, я записываю в массив, постепенно увеличивая его разрядность. Для поиска раскроев использую рекурсивную процедуру. Так вот, заметил, что с увеличением размеров массива поиск становится всё медленнее и медленнее. По-началу индикатор просто просто мелькает без остановки, а со временем всё медленней и медленней, потом щёлкает с длительными задумчивостями. Хотя процедуру выполняет одну и ту же, что в начале, что в конце.
Предполагаю, что это напрямую связано с объёмом формируемого массива.
Как бы обойти эту ситуацию, чтобы в конце работы скорость обработки была бы такой же как в начале?
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 833


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #40: 5 Декабрь 2019, 23:29 »

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

kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 778



« Ответ #41: 5 Декабрь 2019, 23:40 »

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

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #42: 6 Декабрь 2019, 00:21 »

Это нужно смотреть на макрос и данные. Возможно, глубина рекурсии увеличивается.
"Глубина рекурсии"?!.. Завтра проверю.

Ну, вот сварганил приблизительно демку. Вроде работает.

* DEMO.ods (17.24 Кб - загружено 1 раз.)
Записан
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #43: 6 Декабрь 2019, 08:02 »

Вот на скорую руку сделал полную демку с выводом результатов.

Кнопка "Запустить (1)" берёт данные из "Лист1", которые нужно вводить самому (как в оригинале).
Кнопка "Запустить (2)" берёт данные из "Лист2", которые уже занесены и можно менять.

* DEMO1.ods (22.06 Кб - загружено 0 раз.)
« Последнее редактирование: 6 Декабрь 2019, 13:14 от Kadet » Записан
mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 627


« Ответ #44: 6 Декабрь 2019, 09:10 »

Несколько предварительных замечаний

1. Перед oLib = DialogLibraries.getByName("MyLibrary") добавьте DialogLibraries.LoadLibrary("MyLibrary"), чтобы избежать появляющихся сообщений о ненайденной библиотеке. (Ну, и опечатка там - потеряна единичка в oDlgWait = CreateUnoDialog(DialogLibraries.MyLibrary.oDlgWait1)).
2. В RASCHET_raskroy1 oEvent не передаётся в OPTOMAL_fas1
3. Нет WAITExitDlg
4. Насчёт производительности: постарайтесь всеми средствами избегать реаллокаций - создавайте достаточно большой массив и храните информацию о его наполнении, но уберите все ReDim preserve из циклов! Это очень дорогая операция.
« Последнее редактирование: 6 Декабрь 2019, 09:31 от mikekaganski » Записан

С уважением,
Михаил Каганский
Страниц: « 1 2 3 4 5 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!