Переношу стили страниц из одного документа (inDoc) в другой (outDoc) так:
inDoc = thisComponent
outDoc = StarDesktop.LoadComponentFromUrl("private:factory/swriter", "_default", 0, docLoadOptions())
DIM styleCopyOptions(5) AS NEW com.sun.star.beans.PropertyValue
styleCopyOptions(0).Name = "LoadCellStyles"
styleCopyOptions(0).Value = FALSE
styleCopyOptions(1).Name = "LoadTextStyles"
styleCopyOptions(1).Value = TRUE
styleCopyOptions(2).Name = "LoadFrameStyles"
styleCopyOptions(2).Value = FALSE
styleCopyOptions(3).Name = "LoadPageStyles"
styleCopyOptions(3).Value = TRUE
styleCopyOptions(4).Name = "LoadNumberingStyles"
styleCopyOptions(4).Value = FALSE
styleCopyOptions(5).Name = "OverwriteStyles"
styleCopyOptions(5).Value = TRUE
outDoc.StyleFamilies.loadStylesFromURL(inDoc.URL, styleCopyOptions())
Нашел в описании API метод loadStylesFromDocument, который был бы для меня удобней.
Но Xray говорит, что outDoc.StyleFamilies не имеет такого метода.
Интересно, что строка:
outDoc.StyleFamilies.loadStylesFromDocument(inDoc, styleCopyOptions())
обрабатывается без ошибок, но стили не загружаются.
Оказалось, что вместо loadStylesFromDocument я могу написать вообще все что угодно, и ошибки не возникает.
Как можно сделать так, чтобы при указании несуществующего метода выводилась ошибка?
Еще вопрос, связанный с загрузкой стилей. В документ добавляю линии таким кодом:
DIM aPosition AS NEW com.sun.star.awt.Point
DIM theSize AS NEW com.sun.star.awt.Size
xPage = xDoc.DrawPage
hLine = xDoc.createInstance("com.sun.star.drawing.LineShape")
hLine.LineColor = C
hLine.LineWidth = W
hLine.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE
aPosition.X = xHL
aPosition.Y = yHL
hLine.setPosition(aPosition)
theSize.Width = dxHL
theSize.Height = dyHL
hLine.setSize(theSize)
xPage.add(hLine)
hLine.LayerID = 1
Если xDoc=inDoc, то линия в inDoc появляется и доступна для выделения мышью.
Если xDoc=outDoc и стили страниц не загружать, то линия в outDoc появляется и доступна для выделения мышью.
Но если xDoc=outDoc и стили страниц загружены из inDoc.URL, то линия в outDoc появляется, но недоступна для выделения мышью(?).
Может ли кто-нибудь это объяснить?
Попутно вопрос про добавление линий.
Почему-то линии, добавленные вышеуказанным способом, не отражаются в окне документа Navigator (По клавише F5 в разделе Drawing Object).
Линии, добавленные через меню - отражаются. Выяснил, что с загрузкой стилей это не связано. Это у всех так?
Версия LO: 6.2.4.2
Цитата: JBrown от 18 октября 2019, 19:08Оказалось, что вместо loadStylesFromDocument я могу написать вообще все что угодно, и ошибки не возникает.
Выглядит так, как будто выше есть вызов On Error Resume Next
Цитата: JBrown от 18 октября 2019, 19:08Как можно сделать так, чтобы при указании несуществующего метода выводилась ошибка?
Убрать этот вызов :)
Да, действительно, подобный вызов есть. Исправил код. Теперь на вызов outDoc.StyleFamilies.loadStylesFromDocument выводится ошибка. Спасибо.