Загрузка стилей страниц

Автор JBrown, 18 октября 2019, 19:08

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

JBrown

Переношу стили страниц из одного документа (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

mikekaganski

Цитата: JBrown от 18 октября 2019, 19:08Оказалось, что вместо loadStylesFromDocument я могу написать вообще все что угодно, и ошибки не возникает.

Выглядит так, как будто выше есть вызов On Error Resume Next

Цитата: JBrown от 18 октября 2019, 19:08Как можно сделать так, чтобы при указании несуществующего метода выводилась ошибка?

Убрать этот вызов :)
С уважением,
Михаил Каганский

JBrown

Да, действительно, подобный вызов есть. Исправил код. Теперь на вызов outDoc.StyleFamilies.loadStylesFromDocument выводится ошибка. Спасибо.