середа, 23 листопада 2016 р.

Lazarus. Урок 4. Обробник події на практиці.

Привіт усім хто читає мій блог! Сьогодні черговий урок присвячений вивченню програмування в середовищі Lazarus. І нарешті сьогодні ми перейдемо від теорії до практики, від дизайнерської роботи до справжнього програмування. 
Ми вже вивчили, що таке властивості об’єктів та як їх змінювати у вікні Інспектора об’єктів. Ми вивчили поняття "обробник події", розглянули приклади подій на які реагує форма та як створити обробник події для обраної події і сподіваюсь ви спробували виконати легеньке завдання із попереднього посту.
Сьогодні ми продовжимо вивчати і властивості об’єкта "Form1" і події на які вона може реагувати. Але найголовніше ми будемо вивчати все це на практиці. 


Отож запускаємо Лазарус і перше що зробимо збережемо проект у окрему папку. А тепер переходимо до практики.
Але куди практика без теорії :-). Які властивості визначають розміри форми? 
WIDTH - ширина форми у пікселях; (якщо забули, виділіть мишкою цей рядок тексту )
HEIGHT - висота форми у пікселях; (якщо забули, виділіть мишкою цей рядок тексту )
І щоб змінити значення цієї властивості потрібно у вікні Інспектора об’єктів вибрати цю властивість та у полі праворуч вказати нове значення.
Завдання
  • Задайте розміри форми 400х400 пікселів;
  • Змініть заголовок форми на ТРАНСFOPМЕР(якщо забули, виділіть мишкою цей рядок тексту Сaption;
  • За встановіть колір форми відповідно до вашого настрою.
  • Запустіть програму на виконання. F9 або "зелений трикутник".

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

Пригадайте, яка властивість є найголовнішою для об’єкта? Цього разу я не буду приховувати її, а ще раз нагадаю - це Name.

З попередніх постів ви вже могли помітити, що при створенні нового проекту, властивість Name та властивість Caption мають однакове значення - Form1. Але властивість Caption  - це властивість яка відповідає за текст, що ми бачимо в заголовку програми. 



А властивість Name - визначає ім’я об’єкту. Візуально ці властивість на формі ми побачити не можемо, але без неї ми не обійдемось коли будемо будувати вказівки для наших об’єктів всередині обробника події.
До речі, яку розкладку клавіатури Ви використовували коли змінювали заголовок у завданні вище? Чи можна вказати значення ТРАНСFOPМЕР і для властивості Name? Скопіюйте цей текст та вкажіть його в якості значення властивості Name. А тепер подумайте як розв’язати цю задачку.

Але не будемо вдаватись до таких крайнощів. У реальних проектах імена об’єктів потрібно придумувати так, щоб подивившись на ім’я, було зрозуміло, що це за об’єкт, а не менш важливим є легкість його запису в тексті програми. Отож пригадаємо, що зазвичай головну форму програми називають Main. 

Завдання
Змініть значення властивості Name на Main.

Час взятися за обробники подій.
Давайте створимо обробник для вже знайомої нам події OnClick та поговоримо, що ж ми можемо до нього додати, щоб побачити реакцію форми на цю подію.
А що нам потрібно від того OnClick? Поки що нічого, але ж ми вчимося тому щось таки треба для придумати.

БАЖАЮ, НЕХАЙ ФОРМА ЗМІНИТЬ РОЗМІРИ З 400х400 ДО 200х200 ТОДІ КОЛИ МИ КЛАЦНЕМО ПО НІЙ КНОПКОЮ!

Отже завдання є. І подія коли повинно виконатись завдання також є. Отже створимо обробник події для OnClick. Виберіть другий спосіб (подвійним клацанням кнопки миші в полі поруч з назвою події) і отримайте у редакторі тексту наступний код:

procedure TMain.FormClick(Sender: TObject);
begin
//тут ми будемо писати код, який виконає наше бажання.
end;

Змінюємо значення властивості програмно.
Але що ж писати? Все дуже просто... Пам’ятаєте найголовнішу властивість для об’єкта?
Пам’ятаєте яке значення ви вказали у завданні вище? Правильно Main.
Отже ми повинні "попросити" Main встановити значення своїх властивостей Width і Height у 200.
Для цього всередині обробника події ми повинні написати наступний код:

Main.Width:=200;
Main.Height:=200;

Отже ваш обробник події повинен мати такий вигляд:

procedure TMain.FormClick(Sender: TObject);
begin
Main.Width:=200;
Main.Height:=200;
end; 

Запустіть програму і зробіть так, як ми того бажали! Побачили результат? Чудово! Не побачили? Тоді ви неуважно читали пост і просто забули про завдання викарбуване великими літерами.
А тепер давайте розберемо ці два рядки тексту які ми додали до обробника події.

Main.Width:=200;

Main - це ім’я нашої форми.
Width - ширина об’єкту Main
200 - значення в пікселях яке ми забажали

Залишилось дізнатись що означає := . Називається ця послідовність із двокрапки і дорівнює - оператор присвоєння. Тобто рядок Main.Width:=200; можна вимовити як 
Main.Width присвоїти 200;

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

Приклад
Main.Color:=clRed;
Цей код змінить колір нашої форми на червоний встановивши значення властивості Color в clRed.


Звідки я дізнався яке значення потрібно вказувати? З Інспектора об’єктів. 
  1. Виділіть форму
  2. Перейдіть у вікно Інспектора об’єктів
  3. Знайдіть властивість Color
  4. У випадаючому списку правої колонки будуть відображатися значення кольорів які можна використати в коді програми.

А заголовок форми можна змінти?
Так, якщо до нашого обробника події дописати код
Main.Caption:='Моя програма';
Текст, який повинен відображатися в заголовку ми беремо в апострофи. (в англ. розкладці там де українська літера Є)


ЗАВДАННЯ

Об’єкт форма може реагувати на події OnMouseDown та  OnMouseUp.
OnMouseDown - відбувається, коли користувач натиснув і утримує натисненою кнопку миші.
OnMouseUp - відбувається, коли користувач відпускає кнопку миші.
  1. Створіть обробники для цих подій та впишіть у них код такий, щоб при натисканні кнопки миші, форма зменшилася у 2 рази і ставала зеленою, а при її відпусканні повернулась до початкового розміру і ставала червоною.
  2. Зробіть так, щоб при запуску програми форма також ставала червоною. Пригадайте яка подія виконується при запуску програми.
Пам’ятайте, що код, який ви будете писати для обробника події пишеться між словами 

begin та end;



procedure TMain.FormClick(Sender: TObject);
begin
//тут ми будемо писати код, який виконає наше бажання.
end;