Подія й процедура обробки події 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Подія й процедура обробки події



Вид створеної форми підказує, як працює додаток. Очевидно, що користувач повинен ввести в поля редагування вихідні дані й клацнути мишею на кнопці Обчислити. Клацання на зображенні командної кнопки – це приклад того, що в Windows називається подією.

Подія (Event) – це те, що відбувається під час роботи програми. В Delphi кожній події привласнене ім'я. Наприклад, клацання кнопкою миші – це подія OnClick, подвійне клацання мишею подія OndblClick.

У табл. 9 наведені деякі події Windows.

Таблиця 9. Події.

Подія Відбувається
Onclick При клацанні кнопкою миші
Ondblclick При подвійнім клацанні кнопкою миші
Onmousedown При натисканні кнопки миші
Onmouseup При відпусканні кнопки миші
Onmousemove При переміщенні миші
Onkeypress При натисканні клавіші клавіатури
Onkeydown При натисканні клавіші клавіатури. Події Onkeydown і Onkeypress –, що це чергуються, повторюються події, які відбуваються доти, поки не буде відпущена утримувана клавіша (у цей момент відбувається подія Onkeyup)
Onkeyup При відпусканні натиснутої клавіші клавіатури
Oncreate При створенні об'єкта (форми, елемента керування). Процедура обробки цієї події звичайно використовується для ініціалізації змінних, виконання підготовчих дій
Onpaint З появою вікна на екрані на початку роботи програми, після появи частини вікна, яка, наприклад, була закрита іншим вікном, і в інших випадках
Onenter При одержанні елементом управління фокуса
Onexit При втраті елементом управління фокуса

 

Реакцією на подію повинна бути яка-небудь дія. В Delphi реакція на подію реалізується як процедура обробки події. Таким чином, для того щоб програма виконувала деяку роботу у відповідь на дії користувача, програміст повинен написати процедуру обробки відповідного події. Слід звернути увагу на те, що значну частину обробки подій бере на себе компонент. Тому програміст повинен розробляти процедуру обробки події тільки в тому випадку, якщо реакція на подію відрізняється від стандартної або не визначена. Наприклад, якщо за умовою завдання обмежень на символи, що вводяться в поле Edit, не має, то процедуру обробки події OnKeyPress писати не потрібно, тому що під час роботи програми буде використана стандартна (схована від програміста) процедура обробки цієї події.

 

Методику створення процедур обробки подій розглянемо на прикладі процедури обробки події OnClick для командної кнопки Обчислити.

Щоб приступити до створення процедури обробки події, треба спочатку у вікні Object Inspector вибрати компонент, для якого створюється процедура обробки події. Потім у цьому ж вікні потрібно вибрати вкладку Events (Події).

У лівому стовпчику вкладки Events (рис. 16) перераховані імена подій, які може сприймати обраний компонент (об’єкт). Якщо для події визначена (написана) процедура обробки події, то в правому стовпчику поруч із іменем події виводиться ім’я цієї процедури.

 

Рис. 16. На вкладці Events перераховані події,

які може сприймати компонент (у цьому випадку – командна кнопка)

 

Для того щоб створити функцію обробки події, потрібно зробити подвійне клацання мишею в поле імені процедури обробки відповідної події. У результаті цього відкриється вікно редактора коду, у яке буде доданий шаблон процедури обробки події, а у вікні Object Inspector поруч із іменем події з’явиться ім’я функції її обробки (рис. 17).

Delphi привласнює функції обробки події ім’я, яке складається із двох частин. Перша частина імені ідентифікує форму, що містить об’єкт (компонент), для якого створена процедура обробки події. Друга частина імені ідентифікує сам об’єкт і подія. У нашому прикладі ім’я форми – Form1, ім’я командної кнопки – Button1, а ім’я події – Click.

 

Рис. 17. Шаблон процедури обробки події, сгенерований Delphi

 

У вікні редактора коду між словами begin і end можна друкувати інструкції, що реалізують функцію обробки події.

У лістингу В1 наведений текст функції обробки події OnClick для командної кнопки Обчислити. Зверніть увагу на те, як представлена програма. Її загальний вид відповідає тому, як вона виглядає у вікні редактора коду: ключові слова виділені напівжирним, коментарі – курсивом (виділення виконує редактор коду). Крім того, інструкції програми набрані з відступами відповідно до прийнятих у середовищі програмістів правилами гарного стилю.

 

Лістинг В1. Процедура обробки події OnClick на кнопці Button1 (Обчислити).

// натискання кнопки Обчислити

procedure Tform1.Buttonlclick(Sender: Tobject);

var

dist: integer; // дистанція, метрів

t: real; // час як дробове число

min: integer; // час, хвилини

sek: integer; // час, секунди

v: real; // швидкість

begin

// одержати вихідні дані з полів введення

dist: = Strtoint(Edit1.Text); t: = Strtofloat(Edit2.Text);

// попередні перетворення

min: = Trunc(t); // кіл-у хвилин – це ціла частина числа t

sek: = Trunc(t*100) mod 100;

// кіл-у секунд – це дробова частина

// числа t

// обчислення

v: = (dist/1000) / ((min*60 + sek)/3600);

// висновок результату

label4.Caption: = 'Дистанція: '+ Edit1.Text

+ ' м' + #13 + 'Час: ' + Inttostr(min)

+ ' хв ' + Inttostr(sek) + ' сек ' + #13 +

'Швидкість: ' + Floattostrf(v,fffixed,4.2) + ' км/година';

end;

 

Функція Button1click виконує розрахунки швидкості й виводить результат розрахунків у поле Label4. Вихідні дані вводяться з полів редагування Edit1 і Edit2 шляхом звертання до властивості Text. Властивість Text містить рядок символів, який під час роботи програми введе користувач. Для правильної роботи програми рядок повинен містити тільки цифри. Для перетворення рядка в числа в програмі використовуються функції Strtoint і Strtofloat. Функція Strtoint перевіряє символи рядка, переданого їй у якості параметра (Edit1.Text – це вміст поля Editl), на допустимість і, якщо всі символи вірні, повертає відповідне число. Це число записується в змінну dist. Аналогічним чином працює функція Strtofioat, яка повертає дробове число, відповідне до вмісту поля Edit2. Це число записується в змінну t.

Після того як вихідні дані будуть поміщені в змінні dist і t, виконуються підготовчі дії й розрахунки. Спочатку з використанням функції Trunc, яка «відкидає» дробову частину числа, виділяється ціла частина змінної t – це кількість хвилин. Значенням вираження Trunc(t*100) mod 100 є кількість секунд. Обчислюється це вираження так. Спочатку число t множиться на 100. Отримане значення передається функції Trunc, яка повертає цілу частину результату множення t на 100. Отримане в такий спосіб число ділиться по модулю на 100. Результат розподілу по модулю – це залишок від розподілу.

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

Обчислене значення швидкості виводиться в поле Label4 шляхом присвоювання значення властивості Caption. Для перетворення чисел у рядки використовуються функції Inttostr і FloatToStr.

У результаті натискання кнопки Завершити програма повинна завершити роботу. Щоб це відбулося, треба закрити, забрати з екрана, головне вікно програми. Робиться це за допомогою методу close. Процедура обробки події OnСlick для кнопки Завершити наведена в лістингу В2.

Лістинг В2. Процедура обробки події Onclick на кнопці Button2 (Завершити).

// натискання кнопки Завершити

procedure Tform1.Button2Click(Sender: Tobject);

begin

Form1.Close; // закрити головне вікно програми

end;



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 61; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.143.181 (0.01 с.)