Работа с текстом (замена, вставка, удаление, форматирование)

В  примерах кода можно увидеть, как использовать интерфейсы API AlterOffice UNO для выполнения различных операций с текстом, таких как установка формата текста, выделение текста, вставка нового текста и многое другое.

XTextRange


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

Пример использования XTextRange:

// Получаем интерфейс XText
  Reference<XText> xText = xDoc->getText();

// Получаем объект интерфейса XTextRange, соответствующий концу документа
Reference<XTextRange> xTextRange = xText->getEnd();

// Вставляем текст "Hello World!" используя объект интерфейса XTextRange
 xText->insertString(xTextRange, "Hello World!", false);

Методы интерфейса XTextRange:


  • getEnd() - возвращает диапазон, который содержит только конец указанного  диапазона.
Параметры:
-
Возвращаемое значение: XTextRange

  • getStart() - возвращает  диапазон, который содержит только начало указанного диапазона.
Параметры:
-
Возвращаемое значение: XTextRange

  • getString() - возвращает строку, которая содержится в указанном диапазоне.
Параметры:
-
Возвращаемое значение: string

  • getText() - возвращает интерфейс текста, с позицией текста.
Параметры:
-
Возвращаемое значение: XText

  • setString(aString ) - заменяет строку символов заданной строкой символов. Обратите внимание, что все стили будут удалены при использовании этого метода.
Параметры:
  • string aString - заданная строка символов.

Возвращаемое значение: void


XPropertySet


В данном примере мы использовали метод setPropertyValue для установки значения свойства "CharWeight" (жирность символов) для интерфейса XPropertySet, который является частью интерфейса XTextCursor. Интерфейс XPropertySet позволяет устанавливать и получать значения свойств объектов в AlterOffice. В данном случае, мы устанавливаем значение жирности текста для выделенной части текста.

Пример использования XPropertySet:

// Получаем интерфейс XText из объекта xDoc
Reference<XText> xText = xDoc->getText();

// Получаем интерфейс XTextCursor из объекта xText
Reference<XTextCursor> xCursor = xText->createTextCursor();

// Выделяем весь текста
xCursor->gotoStart(true);
xCursor->gotoEnd(true);

// Устанавливаем жирное начертание
Reference<XPropertySet> xCursorProps(xCursor, UNO_QUERY);
xCursorProps->setPropertyValue("CharWeight", makeAny(150.0)); // 150.0 - значение жирности текста

XPropertySet: изменение размера текста


// Получаем интерфейс XText из объекта xDoc
Reference<XText> xText = xDoc->getText();

// Получаем интерфейс XTextCursor из объекта xText
Reference<XTextCursor> xCursor = xText->createTextCursor();

// Выделяем весь текст
xCursor->gotoStart(true);
xCursor->gotoEnd(true);

// Устанавливаем размер символов
Reference<XPropertySet> xCursorProps(xCursor, UNO_QUERY);
xCursorProps->setPropertyValue("CharHeight", makeAny(24.0)); // 24.0 - значение размера шрифта

Список доступных параметров символов можно найти поссылке

XPropertySet: установка заглавных букв


// Получаем интерфейс XText из объекта xDoc
Reference<XText> xText = xDoc->getText();

// Получаем интерфейс XTextCursor из объекта xText
Reference<XTextCursor> xCursor = xText->createTextCursor();

// Выделяем весь текст
xCursor->gotoStart(true);
xCursor->gotoEnd(true);

// Устанавливаем все буквы в верхнем регистре (капсом)
Reference<XPropertySet> xCursorProps(xCursor, UNO_QUERY);
xCursorProps->setPropertyValue("CharCaseMap", makeAny(CaseMap::UPPERCASE));

Методы интерфейса XPropertySet:


  • addPropertyChangeListener(aPropertyName, xPropertyChangeListener ) - добавляет XPropertyChangeListener для указанного свойства.  XPropertyChangeListener  используется для получения событий изменения свойств при изменении связанного свойства.  Пустое имя ("") регистрирует прослушиватель для всех связанных свойств. Если свойство не связано, поведение не определено. Рекомендуется разрешать множественную регистрацию одного и того же прослушивателя, таким образом, для каждого добавления прослушивателя, его также необходимо удалить.

Параметры:
  • string aPropertyName - имя свойства.
  • com::sun::star::beans::XPropertyChangeListener xPropertyChangeListener - объект  XPropertyChangeListener.
Возвращаемое значение: void

  • addVetoableChangeListener(PropertyName, xVetoableChangeListener) - добавляет XVetoableChangeListener для указанного свойства. XVetoableChangeListener используется для получения событий изменения свойств с ограничениями при изменении такого свойства.  Пустое имя ("") регистрирует прослушиватель для всех ограниченных свойств. Если свойство не ограничено, поведение не определено. 

Параметры:
  • string PropertyName - имя свойства.
  • com::sun::star::beans::XVetoableChangeListener xVetoableChangeListener - объект  XVetoableChangeListener.
Возвращаемое значение: void

  • getPropertySetInfo() - возвращает интерфейс XPropertySetInfo, который описывает все свойства объекта, который предоставляет данный интерфейс. Если реализация не может или не предоставляет информацию о свойствах, возвращается значение NULL. 
Параметры:
-
Возвращаемое значение: XPropertySetInfo

  • getPropertyValue(PropertyName) - возвращает значение свойства с указанным именем.

Параметры:
  • string PropertyName - имя свойства
Возвращаемое значение: any

  • removePropertyChangeListener(aPropertyName, xPropertyChangeListener) - удаляет XPropertyChangeListener из списка слушателей. Если слушатель не зарегистрирован, то метод ничего не делает. Рекомендуется допускать множественную регистрацию одного и того же слушателя, поэтому для каждого добавленного слушателя необходимо вызывать метод удаления. 

Параметры:
  • string aPropertyName - имя свойства.
  • com::sun::star::beans::XPropertyChangeListener xPropertyChangeListener - объект  XPropertyChangeListener.
Возвращаемое значение: void


  • removeVetoableChangeListener(PropertyName, xVetoableChangeListener) -  удаляет XVetoableChangeListener из списка слушателей. Если слушатель не зарегистрирован, то метод ничего не делает ("noop" - no operation). 

Параметры:
  • string PropertyName - имя свойства.
  • com::sun::star::beans::XVetoableChangeListener xVetoableChangeListener - объект XVetoableChangeListener.
Возвращаемое значение: void

  • setPropertyValue(aPropertyName, aValue) -  устанавливает значение свойства с указанным именем.

Параметры:
  • string aPropertyName - имя свойства.
  • any aValue - значение свойства.
Возвращаемое значение: void

XTextCursor


Интерфейс XTextCursor используется для навигации и манипуляции текстом в документе. Он позволяет перемещаться по тексту, изменять форматирование, вставлять и удалять текст. 

Пример использования XTextCursor для удаления текста в документе:

// Получаем интерфейс XText
 Reference<XText> xText = xDoc->getText();

// Создаем объект интерфейса XTextRange, указывающий на начало документа
Reference<XTextRange> xStart = xText->getStart();

// Создаем объект интерфейса XTextRange, указывающий на конец документа
Reference<XTextRange> xEnd = xText->getEnd();

// Создаем объект интерфейса XTextCursor
Reference<XTextCursor> xCursor = xText->createTextCursor();

// Устанавливаем позицию курсора в начало документа
xCursor->gotoRange(xStart, false);

// Выделяем весь текст в документе
xCursor->gotoRange(xEnd, true);

// Удаляем выделенный текст
 xCursor->setString("");

Методы интерфейса XTextCursor:


  • collapseToEnd() -  устанавливает начало позиции на конец.

Параметры:
-
Возвращаемое значение: void

  • collapseToStart() - устанавливает конечную позицию на начало.
Параметры:
-
Возвращаемое значение: void

  • goLeft(nCount, bExpand) -  перемещает курсор на указанное количество символов влево. Возвращает  TRUE, если команда была успешно выполнена. В противном случае - FALSE.

 Параметры:
  • short nCount - количество символов, на которое нужно переместить курсор.
  • boolean bExpand - указывает, должно ли текущее выделение курсора быть расширено.
Возвращаемое значение: boolean

  • goRight(nCount, bExpand) - перемещает курсор на указанное количество символов вправо. Возвращает  TRUE, если команда была успешно выполнена. В противном случае - FALSE.

Параметры:
  • short nCount -  количество символов, на которое нужно переместить курсор.
  • boolean bExpand -  указывает, должно ли текущее выделение курсора быть расширено.
Возвращаемое значение: boolean

  • gotoEnd(bExpand) - перемещает курсор в конец текста.
Параметры:
  • boolean bExpand -  указывает, должно ли текущее выделение курсора быть расширено.
Возвращаемое значение: void

  • gotoStart(bExpand) - перемещает курсор в начало текста.
Параметры:
  • boolean bExpand -  указывает, должно ли текущее выделение курсора быть расширено.
Возвращаемое значение: void

  • gotoRange(xRange, bExpand ) - перемещает или расширяет курсор до указанного диапазона (TextRange).
Параметры:
  • com::sun::star::text::XTextRange xRange - необходимый диапазон
  • boolean bExpand -  указывает, должно ли текущее выделение курсора быть расширено.
Возвращаемое значение: void

  • isCollapsed() - определяет, являются ли начальная и конечная позиции одинаковыми. 
Параметры:
-
Возвращаемое значение: boolean


Ниже прикреплен пример кода на языке C++ и C#, который удаляет весь текст в документе, используя API AlterOffice. Он использует интерфейсы XText, XTextCursor, XTextDocument и другие для работы с объектами и функциями UNO. 
Прикреплённые файлы
delete_all_text.cpp
404kb
delete_all_text.cs
404kb
for_linux.tar
404kb