LO Basic. Запрет сохранения файла Calc

Автор ost, 4 августа 2021, 13:14

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

ost

Доброго.
Файл LO Calc представляет собой морду к базе данных SQLite, содержит необходимые для выполнения этой функции код и форматирование. Результаты работы в нем храниться не должны.
Можно ли как-то заблокировать возможность сохранения (и "сохранения как...", "сохранить копию...", "экспорт..." и пр.) этого файла пользователями?

Альтернативой представляется повесить на событие открытия файла макрос, возвращающий все "ин статус-кво". Это, в принципе, могу.

economist

Только автостарт-макрос, при открытии:
- проверяющий что он не в копии
- очищающий всё
- убирающий лист-заставку (при закрытии другой макрос активирует лист-заставку). Это на случай того если calc-файл откроют в Excel, Gnumeric итп. Или в Calc с выключенными макросами.   

Сам файл морды защитить от записи (атрибутом, безопасность Windows итд)
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ost

Цитата: economist от  4 августа 2021, 13:26- проверяющий что он не в копии
Можно чуть подробнее о том, как можно проверить, что запущенный файл не копия оригинала?

sokol92

Попробуйте относительно новый путь (с версии LO 6.3) и расскажите нам. Метод setArgs (и возможные параметры) описан здесь.

Sub DocumentLock
  Dim args(3) as new com.sun.star.beans.PropertyValue, s, i As Long
  For Each s In Array("LockContentExtraction", "LockExport", "LockPrint", "LockSave")
    args(i).Name=s
    args(i).Value=True
    i=i+1
  Next s 
 
  ThisComponent.setArgs args
End Sub
Владимир.

bigor

А если морду сохранить как шаблон, а то что сохранят периодически чистить
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

ost

Тогда уж просто чистить. Без возни с шаблонами.

ost

#6
Цитата: sokol92 от  4 августа 2021, 13:54Попробуйте относительно новый путь
Спасибо, Владимир.
Что могу сказать, после успешного применения блокировки с помощью установки в "true" свойств "LockExport" и "LockSave" файл сохранить вроде бы нельзя.
Но в меню "Файл" остается активной "Сохранить все". И ее использование при активных блокировках "LockExport" и "LockSave", как я заметил, файл сохранить позволяет.
Кроме того, состояние, "LockExport" после сохранения и следующего открытия файла все равно сбрасывается. Точнее, среди структур массива структур com.sun.star.beans.PropertyValue (получаю по oDoc.getArgs) структур с .Name = "LockExport" и .Name = "LockSave" вообще нет.

Накостылял тут https://yadi.sk/i/vWn2-A4cauQjEA

sokol92

#7
Спасибо за исследование.
Макрос из #3, на мой взгляд, лучше выполнять из события открытия документа.
То, что команда меню "Сохранить все" не игнорирует документы, у которых свойства "LockSave"  и "LockExport" установлены в True - баг (tdf#140020).
Владимир.