Події, опрацювання подій в Delphi |
Написав kims | |||||||||||||||||||||||||||||||
Неділя, 05 серпня 2012 10:37 Переглядів: 14515
|
|||||||||||||||||||||||||||||||
Вид створеної форми(див. попередні уроки) підказує, як працює дана програма. Очевидно, що користувач повинен ввести в поля редагування початкові дані і клацнути мишею на кнопці Обчислити. Клацання на зображенні командної кнопки — це приклад того, що в Windows називається подією. Подія (Event) — це те, що відбувається під час роботи програми. У Delphi кожній події привласнено ім'я. Наприклад, клацання кнопкою миші - це подія OnClick, подвійне клацання мишею подія OnDblClick. У таблиці приведені деякі події Windows.
Події
Реакцією на подію повинна бути яка-небудь дія. У 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 strong>. В результаті натиснення кнопки Завершити програма повинна завершити роботу. Щоб це відбулося, треба закрити, прибрати з екрану, головне вікно програми. Робиться це за допомогою методу 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 Проголосувало ) Новіші матеріали:
Старіші матеріали:
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |