Отсутствие доступа ко всем функциям в открытых интерфейсах?

У меня есть довольно фундаментальная проблема с кодированием в OpenOffice/LibreOffice Basic, которую я не могу понять. У меня не всегда есть доступ ко всем функциям, которые я должен. Вот пример:

Sub TestSub
    Dim doc As Object
    doc = ThisComponent  'Note that we're in LibreOffice Writer

    MsgBox(doc.Text.Dbg_SupportedInterfaces)

    doc.Text.finishParagraph(Array())  'Works OK
    doc.Text.appendParagraph(Array())  'Error, property or method not found
End Sub

doc.Text.Dbg_SupportedInterfaces свойство говорит мне, что один из интерфейсов, к которым я должен иметь доступ, это com.sun.star.text.XParagraphAppend, который предназначен для finishParagraph а также appendParagraphпока у меня есть только доступ к finishParagraph, Почему это? Это не единичный случай - повсюду я вижу, что у меня должен быть доступ к функциям, к которым у меня нет доступа.

1 ответ

Решение

Openoffice и Libreoffice - это разные проекты. Вот почему они будут развиваться по-разному, и в будущем они станут намного более разными. В вашем примере у Libreoffice больше нет appendParagraph, но есть finishParagraphInsert. См.: http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1text_1_1XParagraphAppend.html

Для разработки BASIC я рекомендую использовать инструмент отладки, такой как XRAY. См.: https://wiki.documentfoundation.org/Macros Этот инструмент покажет только те свойства и методы, которые действительно есть. К сожалению, в документации API Libreoffice нет даже глобального индекса. Таким образом, XRAY не может напрямую связываться с документацией Libreoffice API. Поэтому на данный момент я использую https://www.openoffice.org/api/docs/common/ref/index-files/index-1.html для Openoffice и Libreoffice и вручную проверяю API Libreoffice http://api.libreoffice.org/ если я работаю над макросом для Libreoffice.

Другие вопросы по тегам