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

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

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

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

Сообщений: 220


« Ответ #15: 28 Ноябрь 2019, 16:21 »

У Вас используются LockControllers+addActionLock с их последующей отменой, как показано здесь? (вдруг поможет)
Кстати. внедрил эту фишку. Действительно стало чуть быстрей.
А вот для форм, чтобы каждая кнопочка по отдельности не прорисовывалась, не знаете ли способа заморозки? А то кнопочки всё равно при формировании таблиц медленно прорисовываются.
Записан
mikekaganski
Мастер
*****
Online Online

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


« Ответ #16: 28 Ноябрь 2019, 18:43 »

Дайте пример кода, просто создающего 10 кнопок на обычном документе (без БД; я предполагаю, что это должен быть документ Calc?), чтобы погонять.
Записан

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

Сообщений: 220


« Ответ #17: 28 Ноябрь 2019, 21:31 »

Сделал примерный demo.
При очистке иногда пропадает запускающая кнопка. Не получается закрепить её навсегда.
А на создаваемые кнопки повесить запуск макроса у меня не получается. Не умею, а разбираться нет времени.

Задержки Wait 100 поставил, чтобы приблизить скорость заполнения к реальной, которая делается в базе. В базе задержку создают громоздкие запросы к бд и насыщенное форматирование строк calc.

* DEMO.ods (31.62 Кб - загружено 0 раз.)
« Последнее редактирование: 28 Ноябрь 2019, 23:46 от Kadet » Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #18: 28 Ноябрь 2019, 22:24 »

В строке кода 113: функция GetIndex не определена (отсутствует)
Записан

rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #19: 28 Ноябрь 2019, 23:02 »

Нашёл функцию GetIndex.

А на создаваемые кнопки повесить запуск макроса у меня не получается. Не умею, а разбираться нет времени.
Для назначения макроса Macro из этого же модуля (Standard.Module1 в документе) на кнопку, нужно поправить строку кода:
Код:
sScriptURL = "vnd.sun.star.script:Standard.Module1.Macro?language=Basic&location=document"
естественно этот макрос должен быть в наличии.
Записан

Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #20: 28 Ноябрь 2019, 23:45 »

В строке кода 113: функция GetIndex не определена (отсутствует)
Прошу прощения. Не углядел.
Прицепил функцию GetIndex.

Спасибо за совет по цеплянию макроса на кнопки! Теперь буду знать. А то я и так и эдак, а оно никак.
Теперь по каждой кнопке снова будет запускаться этот же макрос.

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

Сообщений: 220


« Ответ #21: 28 Ноябрь 2019, 23:55 »

Вот я чего думаю. В коде вставки кнопки есть вот этот код:
Код:
oControlShape.setControl(oButtonModel)
oDrawPage.add(oControlShape)
Именно он и предъявляет саму кнопку и делает её видимой. По идее, наверное, есть, вернее должна быть такая возможность, чтобы сначала формировать модели кнопок (oButtonModel) не выставляя их сразу,.. скапливать их модели в каком-нибудь массиве, а потом выставить этот массив объектов в форме, всех скопом (oDrawPage.add(oControlShape)).
« Последнее редактирование: 28 Ноябрь 2019, 23:58 от Kadet » Записан
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #22: 29 Ноябрь 2019, 12:19 »

В принципе сделал формирование блока кнопок быстрое их выведение.
Однако, rami, попал в самую точку с функцией GetIndex. Она, в поисках индекса нового элемента (кнопки) перебирает всю форму. И так при каждой вставки новой кнопки. Чем больше кнопок, тем медлительней он становится и тормозит весь процесс.
А так как вновь вставляемый элемент (кнопка) всегда имеет последний индекс, то не зачем перебирать всю форму. Достаточно взять count-1 и получим именно этот нужный индекс элемента. Что и сделал.
Заменил вот эту строку:
Код:
nIndex = GetIndex(oButtonModel, oForm)
На эту:
Код:
nIndex = oForm.Count-1
И всё значительно ускорилось.

Ну и некоторые другие эксперименты проделал. Всё во вложении.

* DEMO.ods (33.65 Кб - загружено 2 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #23: 29 Ноябрь 2019, 20:31 »

Kadet, вы слишком усложняете макросы.

1. нужно удалять из библиотек и модулей все не нужные макросы, переменные и всё что никак не используется, а вот краткие и понятные комментарии очень нужны.

2. нужно из всех возможных методов выбирать самые лёгкие и простые, например, вместо раздельного удаления столбцов и форм (при этом от кнопок остаются "шкурки" — не видимые рисованные объекты, со временем их накопится столько, что прогнётся днище у компьютера Смеющийся), лучше очищать диапазон от содержимого (включая объекты) одним простым действием.

3. не нужно для "каждого чиха" (каждого вида кнопок) создавать свой макрос, один макрос должен создавать любую кнопку в зависимости от переданных параметров.

Смотрите:

* DEMO4.ods (31.22 Кб - загружено 2 раз.)
Записан

Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #24: 29 Ноябрь 2019, 21:17 »

rami, красиво, кратко и лаконично.
Когда делал, по большому счёту подобные макросы копировал как штампы и не сильно разбирался с их содержимым. Просто подгонял и штамповал дубли. Торопился запустить в работу.

Сейчас всё уже запущено. Поэтому сижу спокойно, разбираюсь что и как сократить или улучшить, чищу ненужное.
Вот и вы за меня часть моей работы сделал, в частности макрос кнопок красиво подогнали.
Скопировал. Подгоню и буду пользоваться.
Спасибо!

И спасибо, за подсказку по чистке. Я её искал, да не нашёл.
« Последнее редактирование: 29 Ноябрь 2019, 21:18 от Kadet » Записан
Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


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

Подскажите, пожалуйста, ещё пару моментов, уважаемые коллеги.
Сделал макросы печати calc документов. Всё хорошо. Всё печатает. Однако, для полной идилии хотел бы прежде печати выводить окно предпросмотра и настройки. Никак не могу найти как это можно сделать в макросе.

И ещё один вопрос. Есть макрос, который работает достаточно долго. Однако, пока он работает никаких опознавательных знаков не подаёт, типа "ждите". И не понятно - работает он или нет. Хочу сделать диалоговое окно типа "Ожидайте...". Однако, любой диалог сразу останавливает все макросы, пока его не закроешь. Как можно сделать диалог, который не останаливал бы макросы?
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #26: 3 Декабрь 2019, 22:46 »

Если нужно диалоговое окно как признак работы макроса, то запускайте этот макрос из этого окна кнопкой.
Записан

Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #27: 3 Декабрь 2019, 22:52 »

запускайте этот макрос из этого окна кнопкой
Неудобно. Лишняя итерация. У меня в форме стоит кнопка "расчёт" и по её нажатии начинается расчёт сложных вычислений. Иной раз быстро, а иной раз долго, в зависимости от количества введённых параметров. Вызов дополнительного диалога для запуска расчёта неудобно, в особенности для быстрых расчётов, которых большинство.
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #28: 3 Декабрь 2019, 22:59 »

Можно на кнопке менять надпись "ждите..." или что-нибудь подсвечивать во время работы макроса.
Записан

Kadet
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #29: 3 Декабрь 2019, 22:59 »

Нашёл в инете идею, что вместо диалога выводить маленькую форму. В принципе идея стоящая. Попробую.

А вот по принтеру пока никаких идей не нашёл.
Записан
Страниц: « 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!