Антология OpenOffice. Часть 16. Язык макросов в OpenOffice. Часть 2

Это последний выпуск "Антологии OpenOffice". В нем мы завершаем изучение языка макросов, который используется в данном офисном пакете. Конечно, в рамках "Антологии" мы рассказали далеко не все об этом свободном офисном пакете. Но чтобы рассказывать все, потребуется толстая книга, но никак не газета.

Ведь по своей функциональности OpenOffice ничем не уступает MS Office. Мы же обрисовали только основные функции — и, надеюсь, дали читателю достаточное представление о возможностях OpenOffice. Но в начале, как обычно, новость. Вышел обновленный мультиплатформенный свободный офисный пакет OpenOffice.org 2.4. В новой версии довольно много изменений, среди которых:
— Во Writer улучшена поддержка регулярных выражений, клавиатурных комбинаций для работы со стилями; облегчен выбор языка при проверке орфографии.
— В Calc добавлены возможности перетаскивания строк и столбцов, установки раздельного масштаба для каждого листа; улучшены диалог печати, автофильтр и сводные таблицы.
— В Base добавлена поддержка формата Access 2007; улучшен редактор запросов и совместимость с MySQL и Oracle.
Помимо всего, добавлена возможность тонкой настройки диаграмм. Версия 2.4 также отличается новым шрифтом по умолчанию (DejaVu), поддержкой WebDAV поверх HTTPS, улучшенной поддержкой PDF включая поддержку формата PDF/A-1, относительных гиперссылок и ссылок между документами. Но вернемся к изучению языка макросов, который используется в пакете OpenOffice. Напомню главное: макросы сохраняются в модулях, модули сохраняются в библиотеках, а библиотеки сохраняются в контейнерах библиотек. Каждое приложение OpenOffice — контейнер библиотек, также как и каждый документ. IDE используется для создания и отладки макросов и диалогов.

Интегрированная среда разработки

Интегрированной средой разработки (IDE) называется ряд программных инструментов, которые используются для облегчения создания ПО. Пакет OpenOffice имеет очень развитую IDE с инструментами для выполнения, редактирования и поиска ошибок в макросах пользователя. Конечно, в рамках газетной статьи можно дать лишь краткий обзор стандартных функций IDE. Для полного освоения этого сложного и богатого возможностями инструмента желающим придется купить справочное руководство — достаточно толстую книгу. Центральная область, где содержится код макроса, называется окном редактирования. Простые, но эффективные средства для отладки кода макроса — это такие функции, как "Останов", "Контрольные точки", "Пошаговое выполнение" и панель контрольных значений. Первый набор функций используется для отладки, а другие поддерживают формирование и управление объектами в макропрограммах, библиотеках и документах. Вот описания основных значков:

— Значок "Компиляция" компилирует и выполняет проверку синтаксиса только текущего модуля. Он используется в случае, когда не следует выполнять макрос, но требуется проверить его на предмет синтаксических ошибок. Если найдена ошибка, появляется диалог, указывающий на нее. Стрелкой отмечается строка с ошибкой; также выделяется часть кода, который вызвал ошибку.
— Значок "Выполнить" компилирует все модули в текущей библиотеке, после чего выполняет первую подпрограмму или функцию в текущем модуле. — Значок "Остановить макрос" останавливает выполнение макроса. Но если на него нажать, будет невозможно продолжить выполнение макроса, придется запускать его снова. Значок доступен только когда макрос выполняется.
— Значок "Шаг без захода" выполняет текущее утверждение. Если макрос еще не выполняется, первая подпрограмма в модуле запускается и отмечается как текущее утверждение. Текущее утверждение отображается стрелкой в колонке "Контрольной точки", и курсор перемещается в эту строку. Если макрос уже выполняется, выполняется текущее утверждение, и следующее выполняемое утверждение помечается как текущее. Значок "Шаг без захода" рассматривает вызовы других подпрограмм как одно утверждение и не осуществляет пошаговое выполнение внутри них.
— Значок "Шаг с заходом" выполняет текущее утверждение. Он ведет себя так же, как и значок "Шаг без захода", за исключением того, что подпрограммы и функции не рассматривают как одно утверждение. Подпрограммы и функции выполняются пошагово внутри, отмечая определение вызванной подпрограммы или функции как текущее утверждение.
— Значок "Выход на верхний уровень" выполняет макрос до конца текущей подпрограммы, после чего выходит из нее. Эффект аналогичен повторяющемуся нажатию на значок "Шаг с заходом", пока последнее утверждение в текущей подпрограмме (End Sub или End Function) не станет текущим, и затем нажатию "Шаг с заходом" еще раз для выхода из подпрограммы. Утверждение после вызова текущей подпрограммы становится текущим утверждением. — Значок "Точка останова" устанавливает контрольную точку в утверждении. Красный признак останова отмечает строку в столбце точек останова. Двойной щелчок по столбцу точек останова устанавливает точку останова в этом утверждении. Щелчок правой кнопкой мыши на точке останова в столбце точек останова активирует или деактивирует ее.
— Значок "Управление точками останова" открывает диалог "Точки останова".
— Значок "Включить инспектор" предполагает, что текущее слово (слово, в котором находится курсор при нажатии на значок) — переменная, и добавляет имя этой переменной в панель Инспектора.
— Значок "Каталог объектов" открывает окно "Объекты". В нем пользователь может просмотреть все доступные на данный момент контейнеры библиотек. Обычно это окно используется, чтобы видеть, какие библиотеки, модули и подпрограммы являются доступными.
— Значок "Выбрать макрос" загружает диалог "Макрос". Пройдя путем Сервис --> Макрос --> Управление макросами --> OpenOffice.org Basic, пользователь также загружает диалог "Макрос".
— Значок "Выбрать модуль" загружает диалог "Управление макросами". Выберите или поместите курсор непосредственно слева от круглой скобки, после чего нажмите значок "Найти скобку" для поиска парной круглой скобки. Когда IDE находит парную круглую скобку, она выделяет парные круглые скобки и все, что заключено между ними.
— Значок "Вставить элементы управления" следует нажимать, чтобы открыть окно "Элементы управления" при редактировании диалога.
— Значок "Выбрать модуль" нужно нажать для того, чтобы создать диалог для редактирования.
— Последние два значка — "Вставить код Basic" и "Сохранить Basic" — применяются для вставки в текущий модуль текста, сохраненного во внешний исходный файл, и для сохранения текущего модуля во внешний текстовый файл. Так можно создать резервную копию макроса или текстовый файл для отправки другому пользователю. Это отличается от значка "Сохранить", используемого для сохранения всей библиотеки или документа, содержащего модуль.

Управляем библиотеками

Теперь разберемся с созданием, перемещением и переименованием библиотек и модулей. Но для начала вспомним некоторые основы, уже описанные выше: — Контейнер библиотек содержит ноль или более библиотек.
— Каждая библиотека содержит ноль или более модулей и диалогов.
— Каждый модуль содержит ноль или более макросов.
— Приложение — это контейнер библиотек, называемых "Мои макросы" и "Макросы OpenOffice.org". Библиотеки, сохраненные в приложении, доступны для всех макросов.
— Каждый документ — контейнер библиотек.
— Библиотека по имени Standard особенная — она всегда существует и не может быть перезаписана. Использовать ее для каких-либо операций не рекомендуется.
— Всегда стоит давать создаваемым библиотекам и модулям значащие имена. К примеру, Library1 и Module4 — это ничего не значащие названия, а AXONInvoiceForm1 — более описательное имя.
Библиотеки OpenOffice сохраняются как файлы XML — они легко редактируются в любом текстовом редакторе. Таким образом, их легко случайно повредить.

Библиотеки приложения

Каждая библиотека приложения сохраняется в одном каталоге, а каждый модуль и диалог содержатся в одном файле. Диалог "Параметры" (Сервис --> Параметры --> OpenOffice.org --> Пути ) содержит запись, указывающую местоположение библиотек. Создаваемые пользователем библиотеки сохраняются в различных каталогах. Параметры, задаваемые при установке OpenOffice, определяют местоположение личных библиотек пользователя. Список разделяемых каталогов показывает один файл для каждой библиотеки приложения. Пользовательский каталог, однако, более разнообразен:


ЭлементОписание
dialog.xlcXML-файл, который ссылается на каждый файл диалога, известный этому пользователю в OpenOffice.org
script.xlcXML-файл, который ссылается на каждый файл библиотеки, известный этому пользователю в OpenOffice.org
Standardкаталог, содержащий библиотеку Standard


Файлы dialog.xlc и script.xlc содержат ссылки на все диалоги и библиотеки, которые известны OpenOffice. Видимые библиотеки — те, которые видны в диалогах "Макрос" и "Управление макросами" — построены из файлов dialog.xlc и script.xlc. Если перезаписать эти два файла, то приложения пакета не будет знать о личных библиотеках пользователя даже если они будут существовать.

А вот листинг файлов в каталоге PitonyakDialogs. Каждый модуль и диалог в библиотеке имеет соответствующий файл.


ФайлОписание
dialog.xlbссылается на диалоги, содержавшиеся в этой библиотеке
script.xlbссылается на модули, содержавшиеся в этой библиотеке
Module1.xbaBASIC-код в модуле Module1
SimpleObjectBrowserCode.xbaBASIC-код в модуле SimpleObjectBrowserCode
SimpleObjectBrowser.xdlдиалог в модуле SimpleObjectBrowser


Библиотеки документа

Мало кто знает, что, когда документ OpenOffice сохраняется на диск, он сохраняется в стандартном формате ZIP. И любая программа, способная просматривать и извлекать файлы ZIP, может использоваться для просмотра этого документа — но некоторые программы потребуют изменить расширение файла на ZIP. После распаковки документа OpenOffice там на самом деле обнаруживается целый ряд файлов: файлы с исходным содержанием, со стилями и параметрами настройки. Извлеченный документ также содержит три каталога. Каталог META-INF ссылается на все другие файлы, вставленные изображения, коды библиотек и диалогов. Каталог Dialogs содержит все встроенные диалоги, а каталог Basic содержит все встроенные библиотеки.

Переименовываем модули и библиотеки

Изменить название модуля или библиотеки можно из диалога "Управление макросами". Имена модулей изменяются во вкладке "Модули", а названия библиотек — во вкладке "Библиотеки". Однако когда пользователь изменяет название библиотеки или модуля, это не изменяет ссылок, содержащихся в макросах. Помните: когда элементы управления внедрены в документ или диалог, они часто используют макросы в качестве обработчиков событий. Макросы вызывают диалоги, которые содержатся в библиотеках. Макросы могут быть вызваны из программ вне OpenOffice. В случае переименования библиотеки или модуля следует помнить, что объекты, которые ссылаются на модули и библиотеки, не будут обновлены. Можно переименовать библиотеки и модули с использованием диалога "Управление макросами"; процедура одинакова для обоих:
1. Находим библиотеку или модуль в соответствующей вкладке диалога "Управление макросами".
2. Выбираем библиотеку или модуль.
3. Нажимаем на библиотеку или модуль. Курсор должен принять вид для редактирования имени библиотеки или модуля (случайно выполненный двойной щелчок открывает библиотеку или содержимое модуля для редактирования).
4. Вводим новое название для библиотеки или модуля и нажимаем клавишу Enter.

Добавляем библиотеки

Кнопка "Добавить" в диалоге "Управление макросами" открывает диалог "Добавить библиотеки" — но в действительности он является диалогом выбора файла. Этот диалог используется для выбора файла, содержащего библиотеку для добавления. Чтобы добавить содержащуюся в документе библиотеку, начнем с выбора собственно документа. Кнопка "Открыть" в окне выбора файла диалога "Добавить библиотеки" открывает окно выбора библиотек диалога "Добавить библиотеки". Окно выбора библиотек используем для просмотра библиотек, содержащихся в выбранном документе, и выбора библиотек, которые мы хотим добавить. Окно выбора библиотек диалога "Добавить библиотеки" позволяет нам добавить столько библиотек, сколько захотим. Существующие библиотеки не перезаписываются, если флажок "Заменить существующие библиотеки" не установлен. Флажок "Вставить как ссылку" доступен только в случае, если добавляются библиотеки, которые не содержатся в документе. Нажимаем OK для добавления выбранных библиотек. Библиотеки, которые не содержатся в документе, сохраняются в отдельных каталогах. Чтобы добавить библиотеку, которая сохранена не в документе, открываем окно выбора файла диалога "Добавить библиотеки" и выбираем справочник, содержащий файлы библиотеки. Не имеет значения, где сохранены файлы библиотеки. Файлы могут быть на дискете или флэшке как резервная копия или в том же самом каталоге, используемом OpenOffice для библиотек прикладного уровня. При установке новой версии OpenOffice имеет смысл просто добавлять библиотеки от предыдущей установки OpenOffice. Когда добавляется библиотека, которая не содержится в документе, видны два файла: dialog.xlb и script.xlb. Оба файла требуются и автоматически добавляются независимо от того, какой файл выберет пользователь.

Денис Лавникевич


Компьютерная газета. Статья была опубликована в номере 13 за 2008 год в рубрике soft

©1997-2024 Компьютерная газета