Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  159

•  TDictionary Custom Sort  3 336

•  Fast Watermark Sources  3 087

•  3D Designer  4 846

•  Sik Screen Capture  3 340

•  Patch Maker  3 552

•  Айболит (remote control)  3 657

•  ListBox Drag & Drop  3 014

•  Доска для игры Реверси  81 692

•  Графические эффекты  3 944

•  Рисование по маске  3 248

•  Перетаскивание изображений  2 628

•  Canvas Drawing  2 751

•  Рисование Луны  2 579

•  Поворот изображения  2 188

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 235

•  Головоломка Paletto  1 767

•  Теорема Монжа об окружностях  2 229

 

 

Архив исходников

   
  Базы данных
  Графика & Мультимедиа
  Сети & Интернет
  Система
  Разное
   

Ссылки и Баннеры ...

 

Delphi Sources

Delphi Sources

СТАТЬИ

 

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

 

Страницы | 1 | 2 | 3 |


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.
 

Страницы | 1 | 2 | 3 |
 

Дата: 14.05.2007, Автор: Васильков Ю. В.



Назад

   

 




















































































 

© 2004-2024 "DS"

Соглашение пользователя / Реклама / Карта сайта             Created by BrokenByte Software