Отсутствие доступа ко всем функциям в открытых интерфейсах?
У меня есть довольно фундаментальная проблема с кодированием в 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.