О компании  |  Услуги  |  Партнёрам  |  OpenOffice.org  |  OpenOffice-Enterprise  |  Купить  |  Скачать  |  Форум 
 
OpenOffice.org
История версий
Статьи и переводы
Глоссарий











Rambler's Top100

Главная OpenOffice.org Статьи и переводы

Первые шаги в автоматизации OpenOffice.Calc и OpenOffice.Writer под Delphi




Часть 3. Writer


3.1 Вставка текста в начало документа


Основными действиями, которые нас интересуют в работе с Writer'ом является возможность вставлять текст, например в начало документа и по метке, плюс возможность задавать форматирование текста. Поскольку работа с метками несколько более сложная, разберемся вначале с первым вариантом. Функция вставки текста приведена в листинге 10.
Листинг 10
procedure TOpenOffice.InsertTextWriter(const Text: String);
var
   TextPointer: Variant;
   CursorPointer: Variant;
begin
   TextPointer := Document.GetText;
   CursorPointer := TextPointer.CreateTextCursor;

   TextPointer.InsertString(CursorPointer, Text, false);
   TextPointer.InsertControlCharacter(CursorPointer, 0, false);
end;

Рассмотрим эту процедуру подробнее. Прежде чем начать работу с текстом, нам необходимо получить указатель на текст, как на объект документа. Для чего мы используем TextPointer := Document.GetText. Таким образом, схема взаимодействия будет следующей: ServiceManager -> Desktop -> Document -> TextPointer. После этого нам надо создать курсор, что делается методом CreateTextCursor. Только после этого мы уже можем непосредственно вставить строку в начало документа: TextPointer.InsertString(CursorPointer, Text, false). В качестве параметров для этого метода мы передаем созданный курсор, текст для вставки, а также параметр absorb: boolean. Если этот параметр равен False, то текст будет вставляться последовательно, в этом случае TextPointer будет указывать на весть текст, включая последнюю вставленную строку; если же True – тогда только на последнюю вставленную строку, причем, строка, на которую он указывал раньше будет удалена.

Метод InsertControlCharacter вставляет символ завершения строки. Второй аргумент («0») - константа, которая обозначает этот символ (com::sun::star::text::ControlCharacter::PARAGRAPH_BREAK).

Теперь разберемся с форматированием текста. Чтобы поменять размер шрифта или его цвет, нужно установить соответствующее свойство курсора. Например, для установки 20 шрифта это будет выглядеть так:

CursorPointer.SetPropertyValue('CharHeight', 20);

Можно поменять цвет шрифта:

CursorPointer.SetPropertyValue('CharColor', 500);

В этом случае в качестве второго параметра передается цвет в формате RGB.

CursorPointer.SetPropertyValue('CharShadowed', True);

Можно сделать текст подчеркнутым, курсивным и жирным. Это будет выглядеть так:

CursorPointer.setPropertyValue('CharPosture',fsItalic);
CursorPointer.setPropertyValue('CharWeight',fsBold);
CursorPointer.setPropertyValue('CharUnderline',fsUnderline);

В принципе, можно и самому задать степень «жирности» и другие параметры. Ведь fsBold и т.д. есть ни что иное, как константы. Поэтому можно, например ввести вместо fsBold константу 200, текст будет жирными. Советую поэкспериментировать с этим.

Отмечу, что вновь вставленная строка будет обладать установленными свойствами, если их определить до вставки.

И еще пара возможностей для работы с курсором. Можно перейти в начало текста:

CursorPointer.gotoStart(False).

В конец текста:

CursorPointer.gotoEnd(False).
CursorPointer.goLeft(short Count, boolean Expand) – передвигаем курсор влево на Count.
Аналогично goRight(short Count, boolean Expand).

Можно передвигаться по словам:

boolean gotoNextWord(boolean Expand);
boolean gotoPreviousWord(boolean Expand);
boolean gotoEndOfWord(boolean Expand);
boolean gotoStartOfWord(boolean Expand);

Переменная Expand определяет будет ли курсор расширятся при своем передвижении.

Существует и множество других возможностей работы с курсором, но мы остановимся только на этом необходимом наборе.

3.2 Вставка текста по метке


Теперь рассмотрим вставку текста по меткам. Вообще, на мой взгляд, именно операции с метками являются самыми важными с точки зрения автоматизации работы на предприятии. Обычно создается типичный шаблон отчета, туда один раз забиваются все метки и все. Дальнейшая работа программ автоматизации каждый раз вставлять новые данне в этот шаблон по меткам. Поэтому отведем работе с метками повышенное внимание. За работу с метками отвечает интерфейс xBookmarksSupplier. В листинге 11 показан пример вставки текста по метке.
Листинг 11
procedure TOpenOffice.InsertTextByNameWriter(const Text: String, BookmarkName: String );
 var
   TextPointer: Variant;
   CursorPointer: Variant;
   BookmarksSupplier: Variant;
   Bookmark: Variant;
   Flag: boolean;
begin
   Flag:=True;
   TextPointer := Document.GetText;
   CursorPointer := TextPointer.CreateTextCursor;
   BookmarksSupplier:=Document.getBookmarks;
   try
     Bookmark:=BookmarksSupplier.getByName(BookmarkName).getAnchor;
   except
     ShowMessage('Такой метки нет');
     Flag:=False;
   end;
   if(Flag) then Bookmark.setString(Text);
end;

Как видно, начало этого метода ничем не отличается от предыдущего. Далее идут различия в получении метки. Для этого мы используем метод getBookmarks. Таким образом, мы получаем все метки, которые есть в документе. Далее мы можем найти метку, которая нам нужна. Для этого мы из всех меток выбираем метку с именем BookmarkName: BookmarksSupplier.getByName(BookmarkName). Метод getAnchor возвращает текстовый объект, который относится к этой метке. Если такой метки в документе нет, возвращается сообщение об ошибке. Для отслеживания этой ошибки мы вводим переменную Flag: boolean. Если же метка обнаружена, мы можем вставлять текст с помощью метода setString, вызванного для этой метки. На этом разговор о OpenOffice.Writer будем считать законченным и перейдем к OpenOffice.Calc.

Об авторе

Подробнее: Васильков Юрий Владимирович
Дата создания: 01.05.2007

Обсудить

на форуме: community.i-rs.ru

Присоединенные файлы

_OOo_Delphi.odt
_OOo_Delphi.pdf

<< Предыдущая страница | 1 | 2 | 3 | 4 | < 5 > | 6 | 7 | Следующая страница >>

| Версия для печати |
Copyright © 2002-2007 Infra Resource