Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

9 Март 2021, 00:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Загрузка стилей страниц  (Прочитано 1410 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JBrown
Участник
**
Offline Offline

Сообщений: 34


« Стартовое сообщение: 18 Октябрь 2019, 19:08 »

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

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 050


« Ответ #1: 18 Октябрь 2019, 19:33 »

Оказалось, что вместо loadStylesFromDocument я могу написать вообще все что угодно, и ошибки не возникает.

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

Как можно сделать так, чтобы при указании несуществующего метода выводилась ошибка?

Убрать этот вызов Улыбка
Записан

С уважением,
Михаил Каганский
JBrown
Участник
**
Offline Offline

Сообщений: 34


« Ответ #2: 20 Октябрь 2019, 14:31 »

Да, действительно, подобный вызов есть. Исправил код. Теперь на вызов outDoc.StyleFamilies.loadStylesFromDocument выводится ошибка. Спасибо.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!