2 Вивчення макросів libreoffice writer

2.1. Об'єкти і класи.

Змінна-об'єкт, це змінна, яка містить в собі інші об'єкти, властивості і дії, що здійснюються над об'єктом, об'єкт є конкретною реалізацією, якого то класу (клас є опис, деякого безлічі об'єктів з одними і тими ж властивостями). Зазвичай доступ до властивостей і функцій складних типів даних (таких як класи) здійснюється шляхом написання імені змінної об'єкта, а потім через точку імені функції і чи властивості даного об'єкта.

2.2. Змінні і об'єкти в Basic

Dim desk as com.sun.star.frame.Desktop - змінна типу desktop уніфікованої мережевий моделі UNO, дана змінна може посилатися на об'єкти типу Desktop.

У мові Basic можна звертатися до змінних представляє собою посилання на об'єкти, це можуть бути об'єкти текст, параграфи, таблиці, які відображаються на екрані вікна, вони мають набір властивостей і методів роботи з цими об'єктами. Об'єктна модель може бути будь-який, як і її реалізація, наприклад в пакеті Microsoft Office реалізована своя об'єктна модель, в пакеті LibreOffice або OpenOffice своя, тому об'єкти і спосіб взаємодії з цим об'єктами в цих різних пакетах відрізняються.

2.3. Оператори Basic

Оператор циклу For.

For index = n1 to n2 [step s] Rem тіло циклу

Мінлива Index пробігає значення від n1 до n2 c інкрементація s (збільшення на s), в даному випадку s може бути змінної або константою цілого типу, квадратні скобочки вказують на те, що конструкція є не обов'язковою, в разі якщо вона не вказується то крок дорівнює 1.

For xyz = 4 to 50 step 4 val = val + xyz

Алгоритм обчислює суму значень від 4 до 50 з кроком 4, тобто суму 4, 8, 12, 16.

до 48 в змінну val. val1 = 0

For aval = 1 to 50 val1 = val1 + aval next aval

В даному випадку розраховується сума цілих чисел від 1 до 50.

Оператор циклу While, роби поки виконується умова. Оператори всередині циклу повторюються до тих пір поки виконується умова.

While <условие> оператори Wend

Приклад: While i

Цикл виконується поки змінна i менше N. Умовний оператор If,

if <условие> then

<последовательность операторов если условие выполняется> [else

<последовательность операторов в случае невыполнения условия>] End if

Приклад: якщо I менше 100 (якщо умова виконана) то збільшити I на 1, інакше зменшити на 1.

If i<100 then i=i+1

else i = i-1 end if

2.4. Процедури і функції.

Функції та процедури представляють собою окремі блоки операторів, які можуть бути викликані в основній програмі або підпрограми, зазвичай виклик функції або процедури здійснюється в програмі за допомогою вказівки її імені та переданих в неї параметрів, після виконання операторів функції управління повертається програмі або підпрограми викликала її і починається виконання операторів наступних за функцією або процедурою. Очевидно, що призначення процедур і функцій в тому, щоб не писати кожен раз один і той же код для часто повторюваних операцій виконують певне логічно завершене дію. При цьому всередині функцій і процедур можливо використовувати свої локальні змінні, які можуть мати ті ж назви, що і змінні в інших процедурах і функціях і в основній програмі. При цьому ззовні процедури ми не можемо змінювати локальні змінні функції. Типове використання процедур і функцій полягає, в тому що ми передаємо в функцію якісь значення, на основі яких ця функція виробляти ряд дій і обчислення якогось результату. Основна відмінність процедур від функцій в тому, що ім'я функції асоційований якийсь тип повертаються даних, грубо кажучи, функцію можна використовувати у виразах, наприклад, арифметичних або в логічних, в умовних операторах і циклах. Процедура викликається поза будь-якого виразу.

Функція повертає суму двох чисел, що передаються як фактичні параметри в функція з зовнішньої програми

Function sum (a, b as integer) as integer Sum = a + b

Використання функції sum в програмі. Dim x as integer

Приклад процедури дозволяє скласти два числа, значення повертається в формальному параметрі с, при виклику процедури не повинно бути константою, а повинно бути змінної типу integer

Sub sum (a, b, c as integer)

2 Вивчення макросів libreoffice writer

Dim c as integer Call sum (2,2, c)

2.5. Створення макросу в LibreOffice

Для створення макросу в LibreOffice вибираємо сервіс + макроси + управління макросами + LibreOffice Basic (Tools + Macros + Organize Macros). При цьому на екрані з'явиться вікно представлене на малюнку нижче (рисунок 19). Для того, щоб макрос був збережений в самому документі, необхідно вибрати ваш документ, вибрати набір стандартних модулів «standard» і потім натиснути «створити», потім необхідно ввести ім'я модуля. Після створення модуля можна його вибрати, в віконці справа вибрати макрос Main і натиснути редагувати (Edit). Або необхідно після створення модуля (Module1), написати в поле Macro Name (Ім'я макросу) нове ім'я макросу і натиснути створити (рисунок 20).

Малюнок 19 - Вікно створення і редагування макросів

Малюнок 20 - Приклад створення нового макросу MyMainMacros

2 Вивчення макросів libreoffice writer

У LibreOffice, як уже зазначалося, об'єктна модель дещо інша ніж в Microsoft Office, в LibreOffice Basic використовується так називаємося уніфікована мережева об'єктна модель UNO. Нижче наведено приклад макросу openoffice збільшує розмір шрифту кожного параграфа.

Dim Doc As Object

Dim Enum As Object

Dim TextElement As Object

'StarDesktop - головний об'єкт доступний з макросу

'Створення посилання на об'єкт document, поточний документ Doc = StarDesktop.CurrentComponent

'Створення об'єкта enumeration

'Цикл по всіх текстових елементів While Enum.hasMoreElements TextElement = Enum.nextElement

'Перевірка чи є поточний блок таблицею

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

MsgBox "Поточний блок містить таблицю"