Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції по delphi методичка 1!!!.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
79.42 Mб
Скачать

4 Реагування на події

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

У Delphs стандартно визначено список подій, які може використову­вати програміст, вибираючи їх через сторінку подій інспектора об'єктів (див. 1.3.4). Нижче наведено коротку характеристику можливих подій. Описано лише ті з них, які виникають частіше від інших, і є характерними для багатьох компонент. Назви всіх подій починаються префіксом ОN, піс­ля якого є коротка назва події. Назви зафіксовані і змінювати їх не можна. З погляду мови Паскаль подія - це властивість (ргорertу) процедурного типу. Дано також формальне означення потрібних процедурних типів.

Параметр Sender у заголовках процедурних типів визначає той об'єкт чи елемент програми, який є джерелом події, тобто місце, де подія виникла. Якщо потрібно, параметр Sender можна використати для уточнення об'єкта -джерела події, або параметрів і поточного стану об'єкта.

• OnActivate - подія виникає для форми програми кожного разу в момент, коли форма стає активною й отримує фокус уведення.

TNotifyEvent = ргосеduге (Sender: ТОbject) оf оbject; ргорегtу OnActivate : ;TNotifyEvent

• Оnclosе - подія виникає під час закриття форми програми. Можна збе­регти деякі дані, визначені під час роботи програми, вивільнити пам'ять тощо.

ТСІoseEvent = ргосеduге (: Sender :ТОbject; vаг Асtіоn:

ТСІоseAction) оf оbject; ргореrtу Оnclosе: ТСІоseEvent

• ОnCloseQuery - подія виникає безпосередньо перед Оnclosе , її використовують для програмної перевірки можливості закриття форми. Наприклад, якщо деякі файли були модифіковані, то можна з'ясувати, чи записувати нові версії файлів. Програміст може відмінити закриття форми, якщо виявиться, що не вся робота виконана.

ТСІoseQueryEvent = ргосеduге(Sender:TObject;var CanClose:

Boolean) of object; ргорегtу ОnCloseQuery: ТСІoseQueryEvent;

• ОnCreate - подія виникає тоді, коли форму створюють уперше на початку виконання програми. Використовують для виконання підготов­чих операцій: перевірки наявності файлів, створення в пам'яті робочих структур даних тощо. Якщо властивість видимості форми є ввімкненою (ргорегtу Visible = trие), то події виникають у такому порядку: ОnCreate => ОnShow=> ОnActivate => ОnPaint. ргорегtу Oncreate: ТNotifyEvent;

• OnDeactivate - подія виникає для форми в момент, коли вона втрачає фокус уведення. Фокус передається іншій формі програми або іншій програмі. Втрата фокуса може бути тимчасовою, форма може повторно його отримати з повторним виникненням події ОnActivate.

ргорегіу : OnDeactivate: ТNotifyEvent;

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

ргореtіу ОnDestгоу:ТNotifyEvent ;

• ОnHidе - подія виникає для форми в момент, коли вона стає невидимою (властивість Visible набуває стану False). Форма у цьому разі продов­жує існувати і може пізніше знову з'явитися з виникненням події ОnShow.

ргорегtу ОnHidе :ТNotifyEvent ;

• ОпРаіnt - подія виникає для форми тоді, коли вона вже стала видимою, і відбувається перемальовування елементів, розташованих на ній, точні­ше, перед початком їх перемальовування. її можна використати для перемальовування власних елементів, зокрема, графіків функцій, побу­дованих під час виконання програми.

ргорегtу ОпРаіnt: ТNotifyEvent ;

• ОnResizе - подія виникає для форми в кожен момент, коли вона змінює свої розміри. Зміна розміру може робити видимими чи невидимими час­тину елементів, розташованих на ній, отже, подію можна використати для аналізу можливості роботи з розташованими на формі елементами.

ргорегtу ОnResizе : ТNotifyEvent;

• ОnShow- подія виникає щораз, коли форма стає видимою, тобто зна­чення властивості Visible набуває стану Тгие.

ргорегtу ОnShow . ТNotifyEvent ;

• ОnСlіск - подія виникає для будь-якого видимого елемента на формі (кнопки, панелі, списки, таблиці тощо) в момент, коли вказівник мишки є над елементом і ми клацаємо клавішею мишки. Однак треба пам'я­тати, що ця подія може виникати і за інших умов, наприклад, під час натискання на клавішу Еntег, клавішу пропуску.

Заняття 4 Інструментальні піктографічні кнопки

Описані в параграфі 2.5 команди виконують, вибираючи їх через меню. Однак очевидно, що одні команди використовують частіше, а інші порівняно рідше. Для зручної роботи в середовищі Delphiінший спосіб ви­конання команд - через панель швидкого доступу, яку ще називають панел­лю інструментів. На цій панелі (див. рис. 2.3) розташовано піктографічні кнопки, які відповідають найчастіше використовуваним командам. Натис­кання мишкою на кнопки приводить до виконання відповідної команди, як і в разі її вибирання через меню. Нижче наведено з ображення кнопок та ко­манди, що їм відповідають.

Наведений перелік кнопок є стандартним для системи Delphi. Однак його можна змінювати, якщо є потреба і практичний досвід роботи, вводя­чи інші потрібні кнопки або вилучаючи менш використовувані. Щоб змі­нити перелік кнопок, треба спершу клацнути правою клавішею мишки на одній з кнопок панелі швидкого доступу або взагалі в будь-якому місці цієї панелі. З'явиться спадне меню, з якого вибирають команду Ргорегties,

після чого з'явиться вікно

редактора кнопок (рис.2.17). Ліва частина вікна містить

ЗреедЬаі Егіїїш

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

Для вилучення менш використовуваних кнопок з панелі швидкого до­ступу потрібно^' разі відкритого вікна редактора кнопок натиснути на ліву клавішу мишки на кнопці панелі, і, не відпускаючи її, перетягнути з панелі вниз за межі головного вікна.

Рис.2.17. Вікно редактора кнопок.