русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Події та їх обробники


Дата додавання: 2014-09-10; переглядів: 2753.


Пригадайте!

1. Назвіть вікна Turbo 2006 та поясніть їхні призначення.

2. Що таке форма? Назвіть кілька її властивостей. Як змінити їх значення?

3. Які спільні властивості мають кнопка, поле, напис і область зображення? Які властивості мають одні з указаних об’єктів і не мають інші?

4. Сформулюйте правила запису виразів у формулах в Excel.

5. Що таке алгоритм? Який алгоритм називається лінійним? Який вигляд має блок-схема лінійного алгоритму?

 

Події та їх обробники

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

Причиною цієї ситуації є те, що лише самого розміщення на формі кнопки недостатньо, щоб при її виборі щось відбулося. Сам вибір кнопки є певною подією, і програмі потрібно "повідомити", що вона повинна зробити, тобто яка нова подія повинна відбутися при виборі кнопки.

Якщо виділити кнопку, то у вікні Object Inspector на вкладці Events (англ. events – події) можна вказати, яка подія повинна відбутися як реакція на настання іншої події, наприклад, вибір кнопки. Для цього потрібно двічі клацнути в полі справа від напису OnClick (англ. on click – на клацання кнопкою миші). У результаті цих дій у полі OnClick на вкладці Events з’являється текст Button1Click (Button1 – це ім’я виділеної кнопки), а у центральній частині вікна середовища розробки відкривається вкладка Code, на якій створюється заготовка процедури TForm1.Button1Click, команди якої й будуть виконуватися після вибору кнопки Button1 (рис. 2.27).

 

 

 
 

Запам’ятайте!

Процедура (лат. procedere – просуватися, йти вперед) – це частина програми, яка має ім’я і яку можна за цим іменем викликати на виконання в різних частинах програми.

 

Отже, після вибору кнопки Button1 (подія Click) настає подія OnClick, яка полягає у виконанні команд процедури TForm1.Button1Click.

Процедури в Delphiє одним з видів підпрограм. Іншим видом підпрограм в Delphiє функції. Вони будуть розглянуті детальніше в наступних пунктах.

 

Запам’ятайте!

Процедура, яка виконується при настанні певної події, називається обробником цієї події.

Процедура, яка пов’язана з певним об’єктом, називається методом цього об’єкта.

 

Такпроцедура TForm1.Button1Click є обробником події OnClick, яка настає після вибору кнопки Button1, а також є методом об’єкта "Кнопка Button1".

Аналогічно викладеному вище, можна створювати обробники інших подій, наприклад:

· OnMouseMove (англ. on mouse move – на переміщення миші) – ця подія настає після наведення вказівника на кнопку

· OnKeyPress (англ. on key press – на натиснення клавіші) – ця подія настає після натиснення клавіші клавіатури

· OnStartDrag (англ. on start drag – на початок перетягування) – ця подія настає після початку перетягування об’єкта

та ін.

 

Аналогічним чином можна створювати методи й інших об’єктів – елементів керування, наприклад, форми. На рисунку 2.28 наведено вміст вкладки Events форми Form1. Список подій на цій вкладці містить події, які ми вже бачили на вкладці для кнопки, а також деякі інші події. Наприклад:

· OnCreate (англ. on create – на створення) – ця подія настає після початку створенні форми; команди обробника цієї події виконуються під час створення форми, перед її відкриттям

· OnDblClick (англ. on double click – на подвійне клацання) – ця подія настає після подвійного клацання на формі.

 

 

Створення процедур-обробників подій в Delphi

 

Розглянемо детальніше структуру процедури TForm1.Button1Click – обробника події OnClick:

procedure TForm1.Button1Click (Sender: TObject);

Begin

end;

 

Перший рядок процедури – рядок заголовка. Він складається зі стандартного слова procedure (англ. procedure – процедура), імені процедури TForm1.Button1Clickі круглих дужок, в яких указується, що дана процедура буде виконуватися в результаті настання певної події з певним об’єктом, у даному випадку, події Click з кнопкою Button1. Закінчується рядок заголовка крапкою з комою (;).

Команди процедури, які будуть виконуватися при настанні подіїOnClick, записуються між двома стандартними словами begin(англ. begin – початок) і end(англ. end – кінець). Команди процедури утворюють тіло процедури. Слова beginі end визначають, де починається і де закінчується тіло процедури. Можна сказати, що вони відіграють роль відкриваючої та закриваючої дужки, між якими записується тіло процедури, тому їх називають операторними дужками. Після слова endповинна стояти крапка з комою (;). Кожна команда процедури також повинна закінчуватися крапкою з комою (;).

 

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

Якщо потрібно, щоб в результаті виконання процедури змінилися значення властивостей одного з об’єктів, процедура повинна містити команди встановлення значення властивостей об’єкта. Загальний вигляд цих команд такий

<ім’я об’єкта>.<ім’я властивості> := <значення або вираз>;

Наприклад,

Form1.Color := clGreen; –встановити колір фону вікна – зелений

Form1.Left := 300; –встановитивідступ лівої межі вікна – 300 пікселів

Form1.Width := Form1.Width*2;– збільшити поточну ширину вікна вдвічі

Button1.Caption := 'Збільшити'; – встановити текст заголовка на кнопці – Збільшити(якщо значенням властивості є текст, то його потрібно брати в одинарні лапки)

Label1.Font.Color := clRed; –встановити колір символів, яким буде відображатися текст у написі, – червоний.

Звертаємо вашу увагу, що ці команди є різновидами команд присвоювання, які ми вже використовували при складанні алгоритмів.

 

Наведемо приклад процедури TForm1.Button1Click, виконання якої змінить колір вікна на синій, змінить текст у рядку заголовка, зменшить його ширину на 150 пікселів, змінить положення кнопки і текст на ній:

procedure TForm1.Button1Click(Sender: TObject);

Begin

Form1.Color := clBlue;

Form1.Caption := 'Значення властивостей змінилися';

Form1.Width := Form1.Width - 150;

Button1.Left := 60;

Button1.Top := 100;

Button1.Caption := 'Змінити!';

end;

На рисунку 2.29 зліва наведено вигляд вікна після запуску проекту, а справа – після вибору кнопки Button1.

 

 

 

Середовище розробки Turbo Delphi 2006має зручні засоби допомоги при введенні тексту проекту:

· після введення першої букви імені об’єкта можна натиснути сполучення клавіш Ctrl+Пропуск і відкриється список імен об’єктів, властивостей, процедур, які починаються з цієї букви (рис. 2.30); з цього списку можна вибрати потрібне і цей текст буде вставлено в текст проекту;

· у ході написання тексту проекту середовище розробки слідкує за синтаксичними правилами написання команд; якщо ці правила порушуються, то текст з помилками або текст одразу після нього підкреслюється червоною хвилястою лінією (рис. 2.30, підкреслюється буква L; рис. 2.31, слово Label1 написано правильно, але після крапки не вказана властивість цього об’єкта; тому підкреслюється наступне слово); потрібно уважно слідкувати за цим і вчасно виправляти всі синтаксичні помилки;

· Turbo Delphi 2006не розрізняє великі і малі літери; але якщо слово утворено з кількох слів, прийнято (і зручно) писати першу літеру кожного слова великою; наприклад, TForm1.Button1Click;

· після введення крапки, що розділяє ім’я об’єкта та ім’я властивості, автоматично відкривається список властивостей даного об’єкта (рис. 2.31); далі ім’я властивості можна не вводити з клавіатури, а знайти в списку і натиснути клавішу Enter; такий спосіб введення запобігає допущенню синтаксичних помилок, особливо тими, хто не знає англійської мови;

· після запуску проекту на виконання компілятор аналізує текст на наявність синтаксичних помилок; якщо такі помилки будуть знайдені, то після аналізу всіх помилок компіляція проекту переривається і червоним кольором виділяється фон першого з тих рядків тексту проекту, який містить синтаксичні помилки, або наступного за ним рядка (на рис 2.32 неправильно написане слово Label, тому червоним фоном позначено саме цей рядок, а на рис. 2.33 пропущено крапку з комою в кінці першої команди, у таких випадках червоним фоном позначається наступний рядок); усі інші помилки підкреслюються червоною хвилястою лінією; крім того, у вікні Structureз’являються повідомлення-підказки про вид помилки; потрібно виправити в тексті програми всі синтаксичні помилки і знову запустити проект на виконання.

Ми розглянули, як створити і використати процедуру TForm1.Button1Click - обробник події OnClick. Аналогічно можна створити інші процедури - обробники інших подій.


<== попередня лекція | наступна лекція ==>
Практична робота № 5 | Уведення і виведення даних під час виконання проекту


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн