Примеры макросов в LibreOffice Writer

1)Написать макросы для очистки формата всего текста документа, выделенного текста, первого абзаца.

Подсказка. Перебрать все параграфы и задать одни и те же общие свойства текста параграфа. Ниже приведен список свойств текста.

• CharFontName (String) – имя выбранного типа шрифта; Например, TextElement.CharFontName = "Free Times".

• CharColor (Long) – цвет текста;

Например, TextElement.CharColor = RGB(0,255,0) — зеленый цвет

• CharHeight (Float) – высота символа в пунктах (pt);

• CharUnderline (Constant group) – тип подчеркивания (константы в соответствии с com.sun.star.awt.FontUnderline);

Например, TextElement.CharUnderline = com.sun.star.awt.FontUnderline.WAVE

• CharWeight (Constant group) – вес шрифта (константы в соответствии с com.sun.star.awt.FontWeight);

• CharBackColor (Long) – фоновый цвет;

• CharKeepTogether (Boolean) – подавление автоматического разрыва строк;

• CharStyleName (String) – имя стиля символа.

Курсив устанавливается в свойстве шрифта CharPosture, присвоив данной переменной значения 2 TextElement.CharPosture = 2 или TextElement.CharPosture =

com.sun.star.awt.FontSlant.ITALIС. Кроме italic в FontSlant есть свойства NONE, OBLIQUE, ITALIC DONTKNOW, REVERSE_OBLIQUE, REVERSE_ITALIC.

Также свойства абзаца.

• ParaAdjust (enum) – вертикальная ориентация текста (константы в соответствии с

com.sun.star.style.ParagraphAdjust);

• ParaLineSpacing (struct) – межстрочный интервал (структура в соответствии с com.sun.star.style.LineSpacing); Константы LineSpacingMode PROP – высота пропорциональна, MINIMUM — минимальная высота строки, LEADING — расстояние до предыдущей линии, FIX — фиксированная высота строки.

Например,

v = TextElement.ParaLineSpacing

v.Mode = com.sun.star.style.LineSpacingMode.FIX v.Height = 300

TextElement.ParaLineSpacing = v

•ParaBackColor (Long) – фоновый цвет;

•ParaLeftMargin (Long) – левое поле в сотых долях миллиметра;

•ParaRightMargin (Long) – правое поле в сотых долях миллиметра;

•ParaTopMargin (Long) – верхнее поле в сотых долях миллиметра;

•ParaBottomMargin (Long) – нижнее поле в сотых долях миллиметра;

•ParaTabStops (Array of struct) – тип и положение позиций табуляции (массив структур типа com.sun.star.style.TabStop);

•ParaStyleName (String) – имя стиля абзаца.

2) Написать макрос для изменения стиля каждой первой и пятой буквы каждого абзаца на курсив, изменить цвет буквы в активном документе и выделенном тексте.

Ниже приведен макрос, который используется для того, чтобы каждое первое слово предложения было выделено жирным шрифтом. При этом создается специальный объект текстовый Сursor, который позволяет осуществлять навигацию по документу, выделяя нужный текст или область нужного текста. Мы можем устанавливать все свойства символов для данного выделенного текста, при этом нужно помнить, что текст не является выделенным в понимании - выделение для копирования, а просто это область текста или блок текста свойства, которого будут меняться если мы будем присваивать какие-то значения свойствам объекта Cursor.

Sub Main

Dim Doc As Object

Dim Cursor As Object

Dim Proceed As Boolean

Doc = StarDesktop.CurrentComponent

'создать объект — текстовый курсор для текущего открытого документа

Cursor = Doc.Text.createTextCursor()

'начать цикл Do

'перейти к концу слова с выделением от текущего положения курсора Cursor.gotoEndOfWord(True)

'изменить шрифт отмеченного текста на жирный

Cursor.CharWeight = com.sun.star.awt.FontWeight.BOLD

'перейти на следующее предложение без выделения, в переменную procеed занести значение возвращаемой функцией gotoNextSentence, она вернет True если следующее предложение есть и False если нет, т.е. фактически когда завершится текст функцяи вернет значение False

Proceed = Cursor.gotoNextSentence(False)

'перейти на начало текущего предложения без выделения Cursor.gotoStartOfSentence(False)

'условие выполнения цикла, пока логическая переменная Proceed истинна, то-естьTrue Loop While Proceed

msgbox "end" End Sub

Ниже перечислены возможные способы навигации.

•goLeft (Count, Expand) – переход на Count символов влево;

•goRight (Count, Expand) – переход на Count символов вправо;

•gotoStart (Expand) – переход к началу текстового документа;

•gotoEnd (Expand) – переход к концу текстового документа;

•gotoRange (TextRange, Expand) – переход к указанному TextRange-объекту;

•gotoStartOfWord (Expand) – переход к началу текущего слова;

•gotoEndOfWord (Expand) – переход к концу текущего слова;

•gotoNextWord (Expand) – переход к началу следующего слова;

•gotoPreviousWord (Expand) – переход к началу предыдущего слова;

•isStartOfWord () – возвращает True, если TextCursor в начале слова;

•isEndOfWord () – возвращает True, если TextCursor в конце слова;

•gotoStartOfSentence (Expand) – переход к началу текущего предложения;

•gotoEndOfSentence (Expand) – переход к концу текущего предложения;

•gotoNextSentence (Expand) – переход к началу следующего предложения;

•gotoPreviousSentence (Expand) – переход к началу предыдущего предложения;

•isStartOfSentence () – возвращает True, если TextCursor в начале предложения;

•isEndOfSentence () – возвращает True, если TextCursor в конце предложения;

•gotoStartOfParagraph (Expand) – переход к началу текущего абзаца;

•gotoEndOfParagraph (Expand) – переход к концу текущего абзаца;

•gotoNextParagraph (Expand) – переход к началу следующего абзаца;

•gotoPreviousParagraph (Expand) – переход к началу предыдущего абзаца;

•isStartOfParagraph () – возвращает True, если TextCursor в начале абзаца;

•isEndOfParagraph () – возвращает True, если TextCursor в конце абзаца.

Входной параметр Expand показывает выделяется ли текст при передвижении курсора, значение True — выделяется (отмечается) и False — курсор продвигается и текст не выделяется (не отмечается). Каждая функция при этом возвращает значение true, либо false в зависимости от успешности выполнения, например, если следующего параграфа нет при вызове функции перейти на следующий параграф, то вернется значение false.

Подсказка для выполнения задания:

Использовать gotoStartOfParagraph,.goRight, CharColor, gotoNextParagraph.

3) Написать макрос для поиска в тексте запятых и замены их на троеточие.

Ниже приведен пример макроса, который позволяет заменить одни слова на другие, используя свойство параграфа textportion, это текст являющийся частью параграфа, которому присущи свои собственные свойства и характеристики.

Sub Main

Dim Doc As Object Dim Enum1 As Object Dim Enum2 As Object

Dim TextElement As Object

Dim TextPortion As Object

Doc = StarDesktop.CurrentComponent Enum1 = Doc.Text.createEnumeration ' цикл по всем абзацам

While Enum1.hasMoreElements

TextElement = Enum1.nextElement

'проверка является ли текстовый элемент параграфом

If TextElement.supportsService("com.sun.star.text.Paragraph") Then

Enum2 = TextElement.createEnumeration

'цикл по всем элементам текущего параграфа (текстовым порциям) TextElement, пока есть еще элементы

While Enum2.hasMoreElements

TextPortion = Enum2.nextElement

'взять строку текста порции текста, произвести замену одной последовательности символов на другую, эту замену возвратит функция replace, произвести присвоение строке содержащейся в порции новой строки возвращенной функцией replace.

TextPortion.String = Replace(TextPortion.String, "you", "U")

TextPortion.String = Replace(TextPortion.String, "o", "2")

Wend

End If

Wend msgbox s

End Sub

4) Сделать макрос для обмена двух абзацев местами.

Можно воспользоваться свойством параграфа TextElement.String и поменять текст в двух параграфах местами. Заведите две переменные TextElement, присвойте им значение первого и последующего параграфа с помощью Enum.nextElement и используя третью строковую переменную произведите обмен.

5)Изменить цвет и размер шрифта каждого абзаца на произвольный. Использовать функцию rnd(), которая возвращает случайное вещественное значение от 0 до 1 и функцию rgb(r,g,b), которая возвращает преобразованное цветовое значение из последовательности интенсивностей красного, зеленого и синего, где каждое значение интенсивности варьируется от 0 до 255. Комбинация интенсивностей основных трех цветов создает для человека иллюзию различных цветов, например, три интенсивности со значениями 255, будет давать белый цвет, все значения 140, дают серый цвет.

6)Изменить цвет и размер шрифта каждого третьего слова в тексте.

Ниже приведен пример макроса, который меняет цвет каждой первой буквы параграфа на красный цвет.

Sub Main

Dim Doc As Object

Dim Cursor As Object Dim Proceed As Boolean

Doc = StarDesktop.CurrentComponent

Cursor = Doc.Text.createTextCursor()

Do

Cursor.gotoStartOfParagraph(False)

Cursor.goRight(1,True)

Cursor.CharColor = RGB(255,0,0)

Proceed = Cursor.gotoNextParagraph(False)

Loop While Proceed

msgbox "end" End Sub

7) Написать макрос в котором каждая запятая будет заменена на последовательность трех разноцветных точек.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: