LibORef no4 LibreOffe RefCard LibreOfice Basic События Средн. v. 1.10 – 12/02/2018 PRINT Написан с использованием LibreOffice v. 5.3.3 – Платформа: Все События LibreOffice объекты знают о разл-х типах событий, которые могут зап-ся в разл-х ситуациях. Вы можете перехв-ть эти события и обраб-ть их соотв-м образом. Объекты, которые обеспечивают события • • • • • Объекты документа: • OLE объекты • АвтоТекст • Изображения • ImageMaps • Фреймы • Гиперссылки Приложение Документы Формы и элементы Basic диалоги и элементы Привязка события к макросу Принцип 1. Создайте макрос для выполнения. Следуйте шаблону: Sub MacroName() End Sub 2. 3. 4. 5. Назовите макрос в соответствии с объектом, действием и типом события. пример : Sub OnButtonOKClick() Sub может иметь параметр. Смотри ниже. Выберите объект который переносит событие на перехват (список выше). Перейти к настройкам объекта (способ различается в зависимости от объекта). Выберите событие для перехвата (см. списки в этой реф.карте). Укажите на макрос для выполнения при срабатывании события. Получение информации о сработавшем событии Sub может прочитать вход-й параметр, чтобы получить больше инф-и о событии: Sub EventResponse(ByRef Event As Object) End Sub Структура объекта Event и свойства объекта зависят от типа события, которое запускает Sub (см. ниже). Частые ситуации для элементов управления диалогов Basic: Чтобы добраться до: Читать Вызов объекта control Event.Source Объект модели управления Event.Source.Model Event.Source.Context Объект Диалога, владелец элем-та упр-я Категории и свойства событий Диалоги предоставляют четыре категории событий (столб. Cat в посл.таблице): Mouse M Соб-я, вызв-е дейст-ми с исп-м мыши (напр., движ-я и щелчки). Keyboard K События срабатывают по нажатию клавиш. Focus F События запускаются при изменении фокуса. Specific S События, связанные с некоторыми элементами управления. Перечисленные ниже константы регистрочувствительны. События мыши Координаты в пикселях, измеренные от верхнего левого угла управления. См. com.sun.star.awt.MouseEvent структуру Buttons (short) Нажатая кнопка (const. com.sun.star.awt.MouseButton). X (long) and Y (long) X (resp. Y) координата указателя мыши. ClickCount (long) Кол-во кликов, связ-х с событием мыши. Когда LibreOffice сможет реаг-ть дост-но быстро, ClickCount будет 1 для двойного щелчка, потому что запускается одно событие. True если контекстное меню. PopupTrigger (boolean) Константы, определенные в com.sun.star.awt.MouseButton RIGHT MIDDLE LEFT Лев.кнопка. Прав.кнопка Ср.кнопка. VBA Click и Doubleclick события не поддерживаются LibO Basic. Можно использовать событие LibO Basic Mouse button released как замену события и подражания события Doubleclick путем изменения логики приложения. События клавиатуры Соб-я клав-ры связаны с действиями логич-х клавиш, а не с физич-ми действиями. ☞ Комбинация клавиш = одно событие. ☞ Уникальное действие на клавишу модификации (неработающую клавишу, например, SHIFT или ALT) не создает независимое событие. Объект клавиатуры Event содержит свойства KeyCode (short) Код нажатия клавиши (com.sun.star.awt.Key.XXX). Клав. Модиф-и ( Shift , Ctrl и Alt ) не меняют этот код. KeyChar (String) Введенный символ (учитывает клавиши модификации). Клавишная функциональность, как константа в KeyFunc (Integer) com.sun.star.awt.KeyFunction.XXXX Modifiers (Integer) Указывает, был ли нажат модификатор, см. константы com.sun.star.awt.KeyModifier.XXX. Константы опред-е в com.sun.star.awt.Key.XXX (выдержки) RETURN POINT NUM0 .. NUM9 Numbers Enter A .. Z F1 .. F26 UP DOWN LEFT RIGHT HOME END PAGEUP PAGEDOWN Letters Function keys Up Down Left Right Home End Page up Page down ESCAPE TAB BACKSPACE SPACE INSERT DELETE ADD SUBTRACT MULTIPLY DIVIDE Esc Tab Space Ins Del + − * / ☞ Эти коды идентифицируют физические клавиши. Константы в com.sun.star.awt.KeyFunc.XXX None Cut DONTKNOW CUT New Copy NEW COPY Open Paste OPEN PASTE Save Undo SAVE UNDO SAVEAS Save as REDO Redo COMMA LESS GREATER EQUAL CUT COPY PASTE HELP MENU CONTEXTMENU . , < > = Ctrl + X Ctrl + C Ctrl + V F1 Print REPEAT Repeat Close CLOSE Quit QUIT PROPERTIES Properties Find FIND FINDBACKWAR Find D backwards To front FRONT Константы в com.sun.star.awt.KeyModifier.XXX (добавка с +/And) Ctrl Alt Maj MOD1 MOD2 SHIFT События фокуса Объекты фокуса Event предоставляют следующие свойства FocusFlags (short) Причина изменения фокуса. См. константы com.sun.star.awt.FocusChangeReason . NextFocus (Object) Объект, к-рый получ-т фокус (т-ко для On focus lost) соб-я. Temporary (Boolean) True если фокус временно потерян. Константы как определены в com.sun.star.awt.FocusChangeReason TAB Tab был нажат. BACKWARD элем-т упр-я Former. CURSOR AROUND Клавиша направления От посл-го к первому упр-ю (вперед) или от нажата. перв. к посл-му (назад). Была нажата клавиша MNEMONIC UNIQUEMNEMONIC Была нажата клавиша быстрого доступа. быстрого доступа к элементу управления unique. FORWARD элем-т упр-я Next. Специфические события Нек-рые соб-я (пример: При иниц.) могут быть запущены действиями на нек-рых элементах управления (например, переключ-х). Не вып-ся никаких действий, чтобы узнать, дейст-но ли изменилось сост-е элемента управления. Избегайте таких «слепых событий», записывая прежнее знач-е элемента управления в глобальную переменную, а затем проверяя, изменилось ли значение при запуске события. Свойства для события Item Status Changed: Selected (long) Текущая выбранная запись. Highlighted (long) Текущая выделенная запись. ItemId (long) Идентификатор записи. События документа Свойства входящего события (см. следующую главу): EventName (string) Название события. Source (object) Документ, вызвавший событие. ViewController (object) Затр-й контр-р дисплея, в прот-м случае Null. Supplement (variant) Если нет, доп-я информация Empty. События документов или приложений Вкладка Tools > Customize, Events. Доступные события: Событие Назначенный макрос выполняется… Start application После старта приложения. Close application До закрытия приложения. Document created После File > New. New document После создания документа из шаблона. Document loading finished После перезагрузки документа. Open document После File > Open. Document is going to be closed До закрытия документа. Document closed После закрытия документа. ☞ Учтите, что соб-е Document closed также может сраб-ть при сохранении документа непосредственно перед его закрытием. View created После создания представления документа. View is going to be closed Перед закрытием просмотра документа. View closed После закрытия просмотра документа. Activate document После отображ-я документа на переднем плане. Deactivate document После отобр-я другого док-та на перед-м плане. Save document Перед File > Save, если имя документа указано. ☞ См. Document closed. Document has been saved После File > Save, если имя документа указано Saving of document failed После того, как не удалось сохранить документ. Save document as Перед File > Save as (или File > Save если имя документа не указано). Document has been saved as После File > Save as (или File > Save если имя документа не указано). ‘Save as’ has failed После Save as ошибки. Storing or exporting copy of document Document copy has been created После создания копии. Creating of document copy failed После ошибки при создании копии. Print document После закрытия диалога Print, но до печати. После изменения статуса модификации. ‘Modified’ status changed Document title changed После изменения названия документа. Printing of form leters started После закр-я диалога Print, но до печати. Printing of form leters finished После печати слиянием почты. Merging of form fields started Merging of form fields finished Changing the page count Когда меняется число страниц. ☞Соб-я View запускаются при изменении отображения документа: режим предварительного просмотра или режим нового окна. Последовательности события документа Открытие существующего документа (все способы) Open document > View created Закрытие активного документа (все методы) View is going to be closed > Document is going to be closed > View closed > Document closed Создание документа из шаблона New document > View created LibOBasic_4_Events_Flat_A4_EN_v110.odt Взаимодействие с объектами документа AutoText ImageMap Объект выбран. Мышь движется над объектом. Гиперссылка, назначенная объекту ● ● ● ● ● ● ● ● ● ● ● Mouse quit активирована. Указатель мыши перемещен за пределы объекта. ● ● ● ● ● Назначенный макрос выполняется… Перед сбросом формы. Связанный макрос может, напр., предотвратить это действие, вернув FALSE. Форма сбрасывается, если выполняется одно из следующих условий: Hyperlink Image Object clicked Mouse hover Hyperlink fired Frame OLE object Свойства объекта, затем разное: вкладка Macro, кнопка Macro, кнопка Events, и т.д. Событие Срабатывает когда Событие Prior to reset 1. Пользователь нажимает (HTML) кнопку, определяемую как кнопка сброса. 2. Новая и пустая запись создается в форме, связанной с источником данных. Например, в последней записи кнопка Next Record м/быть нажата. ● Image loading ended Загрузка изображения завершена. Image loaded stopped Загрузка изображения была прервана пользователем (напр.: на загр.стран.). Image loading error Сбой загрузки изобр-я (напр. Изобр-е Не найдено). ● ● Некоторый текст введен с использ-м клавиатуры. Непечат-е символы введены (tab, enter, и т.д.). ● Frame sized changed Размер рамки изменен с использ-м мыши. Рамка перемещена с использ-м мыши. ● Before autotext insertion Перед вставкой блока текста. Afer autotext insertion После вставки блока текста. После сброса формы. Перед изменением текущего указателя записи. Напр. Чтобы остановить это действие, вернув FALSE. Before unloading Before reloading Confirm deletion До выгрузки формы (отделена от БД). Перед перезагрузкой формы. Содержимое данных еще не было обновлено. Как только данные были удалены из формы. Напр. When loading When unloading Запрос на подтверждение. После загрузки формы. Сразу после выгрузки формы (отдельно от БД). ● Alphanumerical characters entered Non-alphanumerical characters entered Frame moved Afer reseting Before record change ● ● ● When reloading Сразу после перезагрузки формы. Данные были уже обновлены. ● Fill parameters Когда загружаемой форме нужны параметры (SQL). Это соб-е зап-ся всякий раз, когда пар-р не м/быть предост-н. Напр., ист-ком данных формы может быть команда SQL.: События листов Calc Sheet > Sheet Events (или ПКМ ярлык листа, затем Sheet events) Событие Activate document Deactivate document Selection changed Double click Right click Formulas calculated Content changed Назначенный макрос выполняется… После того, как док-т был отобр-н на переднем плане. После отобр-я другого документа на переднем плане. После изменения выбора. После двойного щелчка по ячейке. После нажатия ПКМ на диапазоне ячеек. После пересчета формулы. После изменения содержимого ячейки. SELECT * FROM address WHERE name=:name где :name параметр, который необходимо заполнить при An error happened загрузке. Пар-р автом-ки зап-ся из родит-й формы, если это возможно. Если пар-р не может быть заполнен, это событие вызыв-ся, и связанный макрос может заполнить параметр. Когда бы ни произошла ошибка при доступе к БД. ☞ Применяется к формам, спискам и полям со списком. События формы Свойства элемента управления, вкладка Events . Общие события вне базы данных Cat F F K K M M Событие When receiving focus When losing focus Key pressed Key released Mouse inside Mouse moved while key pressed M Mouse moved M Mouse button pressed M Mouse button released M Mouse outside Перевод: Петр Окунев https://vk.com/peter1st Назначенный макрос выполняется… Когда элемент управления получает фокус. Когда элемент управления теряет фокус. При нажатии клавиши на сфокусир-м элем-те упр-я. При отпуск-и клавиши на сфокусир-м элем-те упр-я. Когда указ-ль мыши внутри границ элем-та упр-я. Когда мышь перем-ся, пока нажата клавиша. Напр.: нажатие клавиши во время перетаскивания устанав-т drag/drop режим (перем-е или копир-е). Пока указ-ль мыши движется над элем-том упр-я. Пока кнопка мыши нажата когда указатель над элементом управления. ☞Событие Mouse button pressed также используется для уведомления вызовов context menu. Затем, св-во события PopupTrigger будет TRUE. При ПКМ событие сработает дважды: (1) на вызове контекст.меню и (2) самом клике. Если вы только заинтересованы в событии клика, игнорируйте вызовы, когда PopupTrigger TRUE. Когда кнопка мыши отпущена, в момент когда указатель находится над элементом управления. Пока указатель мыши за границами элемента упр-я. События диалоговых окон Некоторые элементы управ-я диалоговых окон предоставляют дополн-е события: Credits Author : Jean-François Nifenecker – jean-francois.nifenecker@laposte.net Cat We are like dwarves perched on the shoulders of giants, and thus we are able to see more and farther than the latter. And this is not at all because of the acuteness of our sight or the stature of our body, but because we are carried aloft and elevated by the magnitude of the giants (Bernard de Chartres [attr.]) Событие Execute action KM Item status changed M While adjusting Назначенный макрос выполняется… При старте действия. Напр.: если у формы Send кнопка, пр-сс отправки - это действие, к-рое н/пр-ть. ☞ Используйте для ответа на нажатие кнопки. Когда состояние элемента управления изменилось. При перемещ-и scroll bar или колеса прокрутки. События только базы данных Событие After record action After record change Before record action Before submitting Before update After update History Version Date 1.01 11/09/2018 Minor updates Comments 1.10 02/12/2018 Rework and complements Назначенный макрос выполняется… После изменения текущей записи. Сразу после изменения текущего указателя записи. Перед изменением текущей записи. Позволяет запросить подтверждение. Перед отправкой данных формы. Перед записью изм-го сод-го элемента упр-я в базу данных. Напр. Остановить это действие, вернув FALSE. После того, как изм-е сод-е элем-та упр-я было записано в БД License This refcard is placed under the CreativeCommons BY-SA v4 (intl) license. More information: https://creativecommons.org/licenses/by-sa/4.0/