Макрос, запрещающий выводить на печать не сохранённую форму

Автор ali, 1 мая 2014, 14:17

0 Пользователи и 1 гость просматривают эту тему.

ali

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

Yakov

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

Yakov

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

ali

Цитата: Yakov от  3 мая 2014, 10:00
Проверил на AOO 4.1 и LO 4.2 - на них обработчик "при печати" вызывается, то есть всё работает правильно
не совсем понял, как мне можно использовать этот обработчик? извиняюсь за возможно глупый вопрос, нет опыта в этом)

ali

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

Yakov

Цитата: ali от  6 мая 2014, 15:54а" и к нему можно назначить макрос.
Это и надо сделать
В Макросе вызвать сохранение формы
Это проще всего сделать через 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

ali

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

Yakov


ali

Цитата: Yakov от  8 мая 2014, 10:14
Вместо Save можно попробовать и RecSave


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