Макрос libreoffice - включить / выключить отображение в текстовом поле - PullRequest
0 голосов
/ 04 июня 2018

Я использую макрос Python для работы с файлом писателя libreoffice.И мне бы хотелось иметь возможность переключать флаг EnableVisible для TextField.

Это означает, что нужно переключать маленький флажок, который можно использовать при двойном щелчке по этому полю, чтобы сделать его видимым или невидимым.

Пока что я получил это в своем коде:

import uno

def toggle_field(field_title):
    document = XSCRIPTCONTEXT.getDocument()
    textfields = document.getTextFields()
    enum = textfields.createEnumeration()
    while enum.hasMoreElements():
        tf = enum.nextElement()
        if tf.VariableName == field_title:
            visibility = tf.getPropertyValue('EnableVisible') #wrong
            tf.EnableVisible = not visibility                 #wrong
            tf.update()                                       #maybe right

Это дает мне, что

com.sun.star.beans.UnknownPropertyException: Неизвестное свойство: Enabled (Ошибка при вызове функции toggle_field в модуле (...) file.py (: неизвестное свойство: EnableVisible

Кроме того, если я прокомментирую первую неправильную строку, вторая неправильная строка даст мне

com.sun.star.beans.UnknownPropertyException: неизвестное свойство: включено (ошибка при вызове функции toggle_field в модуле (...) file.py (: EnableVisible


обновление:

tf.IsFieldDisplayed = False

или

tf.setPropertyValue('IsFieldDisplayed', False)

больше не является неизвестным свойством, но я получил это сообщение об ошибке:

com.sun.star.beans.UnknownPropertyException: IntrospectionAccessStatic_Impl :: setPropertyValueByIndex (), свойство в индексе 13 доступно только для чтения (ошибка при вызове функции toggle_field в модуле (...) file.py (: IntrospectionAccessStatic_Impl :: setPropertyValueByIndex (), свойство в индексе 13 доступно только для чтения

что кажется несправедливым, потому что он не доступен только для чтения в документе, и BASIC может его изменить (https://wiki.documentfoundation.org/images/b/b0/BH5009-Macros.pdf стр. 19)

1 Ответ

0 голосов
/ 04 июня 2018

После общих исследований выясняется, что свойство называется IsVisible:

 tf.IsVisible = not tf.IsVisible
...