Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії


Головна Програмування - Delphi Події, опрацювання подій в Delphi

Події, опрацювання подій в Delphi
Написав kims   
Неділя, 05 серпня 2012 10:37
Переглядів: 14515

Вид створеної форми(див. попередні уроки) підказує, як працює дана програма. Очевидно, що користувач повинен ввести в поля редагування початкові дані і клацнути мишею на кнопці Обчислити. Клацання на зображенні командної кнопки — це приклад того, що в Windows називається подією. Подія (Event) — це те, що відбувається під час роботи програми. У Delphi кожній події привласнено ім'я. Наприклад, клацання кнопкою миші - це подія OnClick, подвійне клацання мишею подія OnDblClick. У таблиці  приведені деякі події Windows.

 

Події

Подія

Відбувається

OnClick

При клацанні кнопкою миші

OnDblClick

При подвійному клацанні кнопкою миші

OnMouseDown

При натисненні кнопки миші

OnMouseUp

При відпуску кнопки миші

OnMouseMove

При переміщенні миші

OnKeyPress

При натисненні клавіші клавіатури

OnKeyDown

При натисненні клавіші клавіатури. Події OnKeyDown і OnKeyPress — це події, що чергуються, повторюються, які відбуваються до тих пір, поки не буде відпущена утримувана клавіша (у цей момент відбувається подія OnKeyUp)

OnKeyUp

При відпуску натиснутої клавіші клавіатури

OnCreate

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

OnPaint

При появі вікна на екрані на початку роботи програми, після появи частини вікна, яка, наприклад, була закрита іншим вікном, і в інших випадках

OnEnter

При отриманні елементом управління фокусу

OnExit

При втраті елементом управління фокусу

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

На вкладці Events перераховані події, які може сприймати компонент (в даному випадку — командна кнопка). У лівій колонці вкладки Events  перераховані імена подій, які може сприймати вибраний компонент (об'єкт). Якщо для події визначена (написана) процедура обробки події, то в правій колонці поряд з ім'ям події виводиться ім'я цієї процедури. Для того, щоб створити функцію обробки події, потрібно зробити подвійне клацання мишею в полі імені процедури обробки відповідної події. В результаті цього відкриється вікно редактора коду, в яке буде доданий шаблон процедури обробки події, а у вікні Object Inspector поряд з ім'ям події з'явиться ім'я функції його обробки.

 

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

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

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

procedure TForm1.Button1Click(Sender: TObject);
  var s,t,v:real;  // s - шлях, t -час, v -швидкість
  begin
    s:=StrToFloat(Edit1.text); // попередні перетворення
    t:=StrToFloat(Edit2.text);
    v:=s/t;   // обчислення швидкості
    label4.Caption:='Швидкість V= '+FloatTostr(v)+' км/год.';  // вивід результату
  end;

 

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

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

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

Процедура обробки події Onclick на кнопці Button2 (Завершити)

procedure TForm1.Button2Click(Sender: TObject);
  begin
    Close;   // завершити
  end;

 

Проект «Властивості форми»

В цьому проекті ми розглянемо властивості форми. Для цього на форму встановимо кнопки (компонент Button) і дамо їм назви: зменшити форму, розтягнути форму, заховати кнопки, показати кнопки, а також створимо дві кнопки для задання кольору форми та форма на цілий екран, згорнути вікно, закрити вікно.

1. Створення форми та розміщення компонентів на форм

2. Задання властивостей компонентів.

Формі дамо назву робота з формою – властивість Caption. Через властивість Caption надаємо назви кнопкам Button через властивість Caption згідно зразка. Розташуйте кнопки на формі якнайкраще та задайте їм потрібні властивості.

 

3. Написання процедур обробки подій

Для того, щоб задати для кожної з кнопок потрібні події можна двічі клацнути на кнопку і написати код процедури обробки події. Можна у вікні Object Inspector вибрати закладку Events (події) і вибрати подію OnClick. Для  кожної з кнопок потрібно написати такий код:

procedure TForm1.Button1Click(Sender: TObject);
 begin
   Form1.Height:=Form1.Height-100;
   Form1.Width:=Form1.Width-50;
 end;
procedure TForm1.Button2Click(Sender: TObject);
 begin
   Form1.Height:=Form1.Height+200;
   Form1.Width:=Form1.Width+100;
 end;
procedure TForm1.Button3Click(Sender: TObject);
 begin
   Button1.Visible:=False;
   Button2.Visible:=False;
   Button3.Visible:=False;
   Button4.Visible:=False;
   Button5.Visible:=False;
 end;
procedure TForm1.Button6Click(Sender: TObject);
 begin
   Button1.Visible:=True;
   Button2.Visible:=True;
   Button3.Visible:=True;
   Button4.Visible:=True;
   Button5.Visible:=True;
 end;
procedure TForm1.Button4Click(Sender: TObject);
 begin
   Form1.Color:=clBlue;
 end;
procedure TForm1.Button5Click(Sender: TObject); 
 begin
   Form1.Color:=clYellow;
 end;
procedure TForm1.Button7Click(Sender: TObject); 
 begin
   Form1.WindowState:=wsMaximized;
 end;
procedure TForm1.Button8Click(Sender: TObject); 
 begin
   Form1.WindowState:=wsMinimized;
 end;
procedure TForm1.Button9Click(Sender: TObject); 
 begin
   Close;
 end;



 

Практичні завдання для статті

 

Ця стаття входить в курс уроків по Delphi.

Зміст курсу лекцій та практичних занять по Delphi.

 

Кузбит І.М.


( 15 Проголосувало )
Коментарі
Добавити новий
Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Підписка

Хто онлайн?

Немає
На даний момент 24 гостей на сайті

Український рейтинг
TOP.TOPUA.NET