[oodisc] По поводу программной вставки колонтитулов

Yuriy Osmerkin yura на fklan.com.ua
Чт Мар 6 01:20:55 MSK 2003


Добрый день!

Некоторое время назад я спрашивал в этой рассылке о том, как вставить 
программно (Delphi) текст в колонтитул. И обнаружил, что я чуть-ли не 
пионер в использовании OpenOffice из других программ ;-) .
Позже видел письма с аналогичными вопросами, но практически не видел 
ответов.
На сегодня я таки раскопал решение той задачи и готов поделиться со 
страждущими :-). Код написан на Basic от Windows Scripting Host, но 
принцип там общий для всех платформ. Я вот, к примеру, перенесу код под 
Delphi, и, возможно, слезу с OLE на UNO.
Если некоторые строчки окажутся разбитыми на две - это не я, а почтовая 
программа :)

--- mysheet.vbs ---

' Соединиться и получить интерфейс документа
Set objServiceManager = WScript.CreateObject("com.sun.star.ServiceManager")
Set objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
Dim args()      
Set objDocument = objDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, args)

' Получить список семейств стилей документа
Set oStyleFamilies = objDocument.getStyleFamilies()
' Получить семейство страничных стилей документа
Set oPageFamilies = oStyleFamilies.getByName("PageStyles")

' Получить название стиля страницы текущего листа
Set oSheets = objDocument.getSheets()
Set oSheet = oSheets.getByIndex(0)
sPageStyle = oSheet.PageStyle

' Получить объект-страничный стиль по имени
Set oPageStyle = oPageFamilies.getByName(sPageStyle)

' Включить верхний колонтитул
oPageStyle.HeaderOn = True

' Колонтитул общий для правых и левых страниц
oPageStyle.HeaderIsShared = True

' Получить текстовый объект нужного колонтитула
Set oHeaderLeft = oPageStyle.RightPageHeaderContent
Set oHeaderText = oHeaderLeft.getCenterText

' Вставляем текст
oHeaderText.string = "Test test test"

' Вставляем измененный стиль обратно 
' Вот из-за отсутствия этой строчки я долго бился :)
oPageStyle.RightPageHeaderContent = oHeaderLeft

--------------

Счастливо!
-- 
Yuriy Osmerkin
System Administrator
Odessa, Ukraine





Подробная информация о списке рассылки Oo-discuss