аналог DisplayAlerts

Автор гость из Access, 5 мая 2015, 17:52

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

гость из Access

подскажите, пожалуйста, как подавить  при закрытии файла в Calc  сообщения о сделанных изменениях.
--------------------------------
в MS Excel  у объекта Application для этого используется св-во DisplayAlerts.
попробовал код:
oDoc = ThisComponent
oDoc.DisplayAlerts = False
получил сообщение, что св-во отсутствует.

JohnSUN

У oDoc есть метод .close с одним параметром Boolean. True - закрыть, проигнорировав изменения. В книге Питоньяка есть отдельная глава, посвящённая способам закрытия документов, окон и всего офиса. В общем, RTFM
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

гость из Access

если код такой:
oDoc = ThisComponent
oDoc.Close(True)
то на какое событие его можно повесить?
Только без применения кнопки "Закрыть".
У меня "отозвалось" только одно событие - "Документ будет закрыт", но и то коряво: сообщения об изменении не возникает, но сам документ ломается и требует последующего восстановления.

JohnSUN

#3
Цитата: JohnSUN от  5 мая 2015, 20:08
В книге Питоньяка есть отдельная глава, посвящённая способам закрытия документов...

Once more... В книге Питоньяка есть отдельная глава, посвящённая способам закрытия документов...
Глава называется 5.8. Open And Close Documents (And The Desktop). В ней есть отдельный раздел 5.8.1.1. What if the file is modified?, где приведен Listing 5.14: Close a document that is modified...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

гость из Access

Цитата: JohnSUN от  6 мая 2015, 13:22В ней есть отдельный раздел
я уже раньше это видел, и в вопросе просто не стал цитировать весь код оттуда.
.............
Но там не указано на какое событие документа можно повесить этот макрос?
А что от дополнительной кнопки всё работает, так это ясно, но вот пользователи так и норовят закрыть документ "крестиком"...

JohnSUN

Цитата: гость из Access от  6 мая 2015, 16:49
пользователи так и норовят закрыть документ "крестиком"...
И чем это плохо? В чём проблема-то? "Крестик" - штатное средство, если есть - значит можно нажать...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

гость из Access

Цитата: JohnSUN от  6 мая 2015, 15:26И чем это плохо?
причём тут "хорошо-плохо"? если макрос висит на нажатие специальной кнопки, то не возникает сообщения "не хотите ли сохранить изменения?"
При закрытии "крестиком" макрос этот не отрабатывает и сообщение, конечно, появляется.
Что-бы "и рыбку съесть, и ..." надо знать на какое событие документа можно повесить этот макрос.
Что я и пытаюсь выяснить...

JohnSUN

#7
Какую из рыбок хочется съесть сейчас? Не сохранять изменения перед закрытием документа? Или сохранить их в любом случае, не спрашивая у пользователя - изменил так изменил? Или не давать закрыть документ?

Событие ты определил правильно - "Документ будет закрыт". На нем ты можешь сделать всё, что угодно, кроме собственно закрытия... Сохранить, прикинуться не измененным, отменить команду закрытия...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

гость из Access

"рыбка": просто не предлагать сохранение, а тихо закрыться.
всё-равно  на открытие файла макрос сбрасывает ячейки в исходное состояние (файл - что-то вроде специализированного калькулятора)
Цитироватьможешь сделать всё, что угодно, кроме собственно закрытия
а вот тут не понял: если на это событие вешать код от Питоньяка, то там последней строкой идёт:
oDoc.Close(True)и как быть?

rami

Цитата: гость из Access от  6 мая 2015, 18:05и как быть?
Просто, закрыть "крестиком", а в макросе отменить сохранение. Только и всего.


Макрос на событие "Документ будет закрыт"
Sub Main
ThisComponent.setModified(False)   'закрыть без сохранения
End Sub

JohnSUN

Цитата: гость из Access от  6 мая 2015, 20:05
не предлагать сохранение, а тихо закрыться.
Даже если по ходу работы с калькулятором пользователь внёс в книгу изменения "не совместимые с жизнью" (например, открыл макрос "типа, посмотреть" и облокотился на клавиатуру), а потом ещё и нажал "Сохранить" (Ctrl+S)?
Цитата: гость из Access от  6 мая 2015, 20:05
файл - что-то вроде специализированного калькулятора
Надеюсь, речь идёт не просто о той формуле с логарифмами и квадратными корнями, а о чём-то навороченном? Например, о графике измерений и расчетов развёрнутом во времени?
Цитата: гость из Access от  6 мая 2015, 20:05и как быть?
Или так, как написал rami, или отказаться от недоверия к пользователям и изменить сценарий работы. Например, разрешить пользователю как угодно сохранять книгу с расчетами (а вдруг ему действительно нужны именно эти цифры?). А чтобы калькулятор всегда работал одинаково, сохранить его как шаблон и просто каждый раз создавать новую книгу на его основе.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне