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

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

18 Октябрь 2018, 01:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Макрос, запрещающий выводить на печать не сохранённую форму  (Прочитано 5638 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ali
Участник
**
Offline Offline

Сообщений: 5


« Стартовое сообщение: 1 Май 2014, 13:17 »

Добрый день! Подскажите пожалуйста выход из ситуации.
Есть форма в БД Open Office. Как можно сделать так, чтобы нельзя было вывести на печать не сохранённую форму? Или чтобы при нажатии на кнопку "Печать" форма сначала сохранялась, а потом печаталась? Обязательно ли для этого писать макрос или можно обойтись другими средствами? Тут важен именно момент, чтобы нельзя было напечатать на принтере пустую форму.
Заранее всем спасибо за ответы
Записан
Yakov
Администратор
**
Offline Offline

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


WWW
« Ответ #1: 1 Май 2014, 19:12 »

В версиях OO до 3.3 можно было поставить обработчик в виде макроса на Basic на событие "при печати"
Но в 3.3 ввели новый диалог печати, и событие "печать" не вызывается
Записан

Yakov
Администратор
**
Offline Offline

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


WWW
« Ответ #2: 3 Май 2014, 09:00 »

Проверил на AOO 4.1 и LO 4.2 - на них обработчик "при печати" вызывается, то есть всё работает правильно
Записан

ali
Участник
**
Offline Offline

Сообщений: 5


« Ответ #3: 6 Май 2014, 14:37 »

Проверил на AOO 4.1 и LO 4.2 - на них обработчик "при печати" вызывается, то есть всё работает правильно
не совсем понял, как мне можно использовать этот обработчик? извиняюсь за возможно глупый вопрос, нет опыта в этом)
Записан
ali
Участник
**
Offline Offline

Сообщений: 5


« Ответ #4: 6 Май 2014, 15:54 »

В версиях OO до 3.3 можно было поставить обработчик в виде макроса на Basic на событие "при печати"
Но в 3.3 ввели новый диалог печати, и событие "печать" не вызывается
полазил в программе, нашёл список событий. Там есть "Печать документа" и к нему можно назначить макрос. На этом мои знания заканчиваются)
Записан
Yakov
Администратор
**
Offline Offline

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


WWW
« Ответ #5: 6 Май 2014, 16:03 »

а" и к нему можно назначить макрос.
Это и надо сделать
В Макросе вызвать сохранение формы
Это проще всего сделать через UNO команды.
Код:
Sub SvFromDispatcher
  
   Dim oFrame As Object
   Dim oDispath As Object
   ' Получаем фрейм документа
   oFrame      = ThisComponent.CurrentController.Frame
   ' Создаём диспетчер
   oDispath   = createUnoService("com.sun.star.frame.DispatchHelper")
   ' Выполняем действие
   oDispath.executeDispatch(oFrame, ".uno:Save", "", 0, Array())
End Sub
Список команд диспетчера http://wiki.services.openoffice.org/wiki/Framework/Article/OpenOffice.org_3.x_Commands


* NMacros.jpg (50.73 Кб, 561x510 - просмотрено 48 раз.)
« Последнее редактирование: 6 Май 2014, 16:25 от Yakov » Записан

ali
Участник
**
Offline Offline

Сообщений: 5


« Ответ #6: 7 Май 2014, 18:25 »

а" и к нему можно назначить макрос.
Это и надо сделать
Спасибо! Уже что-то работает. Правда, команда Save почему-то не сохраняет запись. Я её заменил на команду NewRecord, т.к. она автоматически сохраняет предыдущую запись. Но возникла проблема другого рода. Я поставил макрос на событие "Печать документа" как в вашем скриншоте. Нажимаю "Печать" (при пустой записи), выскакивает ошибка, что мол форма не заполнена (т.е. макрос включился) - всё по плану. Но после того, как нажимаешь в ошибке "ок", пустой и несохранённый документ всё равно уходит на печать. А у меня и главный вопрос в том, чтобы не печатались пустые документы. Может есть идеи по этому поводу?
Записан
Yakov
Администратор
**
Offline Offline

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


WWW
« Ответ #7: 8 Май 2014, 09:14 »

Вместо Save можно попробовать и RecSave

Записан

ali
Участник
**
Offline Offline

Сообщений: 5


« Ответ #8: 11 Май 2014, 11:51 »

Вместо Save можно попробовать и RecSave


попробовал RecSave, работает. Но осталась проблема - макрос включается, говорит, что документ невозможно сохранить (т.к. форма не заполнена), а потом всё равно уходит на печать. Может можно как то другим способом запретить печать пустой формы?
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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