Тема: поняття елемента управління; події, пов’язані з елементами управління, обробники цих подій у середовищі Lazarus.
Мета:
Обладнання: ПК з встановленими ОС і середовищем Lazarus.
Структура уроку:
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
2. Актуалізація опорних знань
Означити (описати) поняття, виділені жирним шрифтом, і порівняти з поданим текстом.
Об'єкт (від латинською objectum — предмет, явище) — це те, на що спрямована певна діяльність (на противагу суб'єкту, який здійснює таку діяльність).
Ми живемо в оточенні величезної кількості різноманітних об'єктів. Будь-яка інформація, яку ми отримуємо, пов'язана з певними об'єктами. Об'єктами є не лише предмети чи явища матеріального світу, але й поняття, які створюють і використовують люди під час спілкування. Наприклад «освіта», «держава» тощо. Кожний об'єкт має свою назву: «м'яч», «годинник», «чашка», «книга». Крім назви кожний об'єкт має низку властивостей (параметрів), значення яких повністю описує об'єкт. Наприклад, об'єкт «учень» має такі властивості (подано невичерпний перелік): вік, зріст, маса тіла, успішність з певного предмету тощо.
Подія — зміна властивостей об'єкта, взаємодія між об'єктами, утворення нового об'єкта або знищення наявного об'єкта.
Середовище об'єкта — середовище, у якому перебуває об'єкт, незалежно від того, які дії ним чи над ним (зрім знищення об'єкта) виконано.
Розглянемо об'єктно-орієнтований підхід до процесу створення й використання програмного забезпечення. Якщо створення програм — далеке й необов'язкове майбутнє учня, то їхнє використання — це сьогодення, якого не уникнути. Спочатку потрібно ознайомитися з деякими базовими поняттями.
Застосунок (застосовна програма, прикладна програма, англійською application, application software) — комп'ютерна програма, що дає змогу вирішувати конкретні прикладні задачі користувача. Це поняття використовують, щоб підкреслити відмінність від операційної системи, драйверів, бібліотек, системних утиліт тощо (які забезпечують функціонування власне комп'ютерної системи та підтримують її працездатність) та засобів і середовищ розробки (про всі ці поняття йтиметься далі).
Об'єктно-орієнтоване програмування — це метод програмування, який розглядає програму як множину «об'єктів», що взаємодіють між собою. Інакше кажучи, у такому підході:
все, що розглядають, є об'єктами;
всі дії та розрахунки виконують шляхом взаємодії (обміну даними) між об'єктами, при якій один об'єкт потребує, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, надсилаючи і отримуючи повідомлення — запити на виконання дії, доповнений набором аргументів (даних), які можуть знадобитися при виконанні дії;
кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів;
кожен об'єкт є представником (екземпляром) класу, який виражає загальні властивості об'єктів;
клас задає поведінку об'єкта. Інакше кажучи, усі об'єкти, які є представниками одного класу, можуть виконувати одні й ті самі дії;
класи утворюють ієрархією успадкування: пам'ять та поведінка, пов'язані з представниками деякого класу, автоматично доступні будь-якому нащадку — класу, розташованому нижче в ієрархічному дереві.
Фундаментальні поняття об'єктно-орієнтованого програмування:
клас визначає властивості деякої сутності та методи (дії, які вона здатна виконувати). Наприклад, клас вид cобака характеризують рисами, притаманними всім собакам. До методів цього класу відносять, наприклад, здатність гавкати;
об'єкт — окремий представник класу. Наприклад, об'єкт Бровко є представником виду собак — окремим варіантом значення властивостей;
метод — дія, яку об'єкт може виконувати. Наприклад, гавкати і скавучати — методи собаки. Тому Бровко спроможний гавкати;
поведінка — сукупність методів (дій, які об'єкт може виконувати);
обмін повідомленнями — передавання даних від одного процесу іншому або надсилання викликів методів;
абстрагування — спрощення складної дійсності моделюванням класів, що відповідають проблемі, й використання найприйнятнішого рівня деталізації окремих аспектів проблеми. Наприклад, більшу частину часу Бровка можна розглядати лише як собаку. А от як він когось зненацька вкусить, потрібно отримати доступ до інформації, специфічної саме для нього: хто господар, чи був щеплений проти сказу тощо;
успадкування. Клас може мати «підкласи» — спеціалізовані версії «надкласу». Наприклад, вид собака може мати породи коллі, пекінес, вівчарка тощо. Бровко може бути представником класу Вівчарка. Підкласи успадковують властивості й поведінку (методи) своїх батьківських класів, і можуть мати свої власні додатково. Успадкування може бути одиничне (один безпосередній батьківський клас) та множинне (кілька батьківських класів). Наприклад, при розгляді громадянства й етнічного походження окремої людини;
інкапсуляція — приховування деталей інформації про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Наприклад, для господаря собаки непотрібно знати, як власне гавкає Бровко. Аби Бровко гавкав на непрошеного гостя;
поліморфізм — залежність поведінки від класу, в якому цю поведінку викликають. Інакше кажучи, різні класи можуть реагувати по різному на однакові повідомлення. Наприклад, пес-охоронець, почувши: «сидіти», має сісти. А курка — відскочити убік або ніяк не реагувати.
3. Вивчення нового матеріалу
Елементи управління — це графічні об'єкти, які розташовані на формі для показу або введення даних, викання дій або полегшення читання форми.
До елементів управління належать текстові поля, списки, перемикачі, кнопки тощо. Вони дають користувачеві змогу запускати макроси або веб-сценарії. Елементи управління можуть бути зв'язані, вільні або обчислювані.
Зв'язаний елемент управління запозичує і відображає змінювані дані з поля таблиці (бази даних) або запиту: текст, дату, число, значення «Так / Ні», зображення або діаграми.
Вільний елемент управління не має змінюваного джерела даних. Наприклад, надпис з назвою форми — це вільний елемент управління.
Обчислюваний елемент управління має за джерело даних вираз, а не поле. Значення, яке потрібно використовувати як джерело даних для цього елемента управління, вказують у визначенні виразу. Запис виразу може містити оператори, назви елементів управління, назви полів, функцій і сталих.
Обробник подій — це частина програми, що виконує певні дії у відповідь на дії користувача.
Середовище програмування Lazarus при розробці графічного інтерфейсу програми надає можливість використовувати велику бібліотеку візуальних компонентів: кнопок, полів, написів, прапорців, перемикачів, лічильників, списків, смуг прокручування тощо. Кнопки для їхнього встановлення на формі розташовано на окремих вкладеннях. Під час розташування цих компонентів на формі автоматично створюється відповідний фрагмент програми мовою Object Pascal, що істотно спрощує і пришвидшує роботу щодо створення програм. Такий спосіб розробки програм називають наочним (візуальним) програмуванням.
Вигляд вкладень
Standard (Стандартне)
Additional (Додаткове)
Common Controls (Загальний контроль)
Dialogs (Діалоги)
Cередовище програмування Lazarus містить велику кількість вбудованих процедур і функцій. Деякі з них є методами об’єктів, за допомогою яких можна виконувати дії з об’єктами. Для різних об’єктів передбачені різні методи, їх кількість і призначення залежать від конкретного об’єкта.
Метод — це фрагмент програмного коду, вбудованого в об’єкт. Метод має назву й містить набір вказівок, які буде виконано, якщо викликати метод для об’єкта. Запис вказівки для виклику методу складається з назв об’єкта та методу, розділених крапкою:
Назва об’єкта.Назва методу;
Назву методу, як і назву властивості, можна ввести з клавіатури або обрати зі списку, який відкривається, якщо в коді програми записати назву об’єкта і поставити крапку. У такому списку буде відображено всі ті методи, які можна викликати для обраного об’єкта.
Для форми найчастіше використовують такі методи:
Деякі методи можна викликати для різних об’єктів, а інші — лише для об’єктів певного типу. Наприклад, методи Show і Hide можна викликати для форми, напису, кнопки та інших об’єктів, а метод Close — лише для форми.
Кнопка Button на вкладенні Standard — важливий елемент інтерфейсу з широкими функціональними можливостями.
Enabled — доступність кнопки. Як усталено має значення True — кнопка доступна та виконує прописані команди;
ShowHint — виведення контекстної підказки. Після надання значення True можна задати текст підказки;
Visible — видимість кнопки. При значенні False кнопку не буде відображено на формі.
TabOrder — порядковий номер виділення компонентів. Визначає, в якому порядку компоненти отримають фокус введення даних при натисканні клавіші Tab. Нумерація починається з 0.
Кнопку найчастіше використовують для того, щоб під час виконання програми після натискання на неї виконати деяку послідовність вказівок. Тому з кнопкою найчастіше пов’язують подію OnClick (Клацання) і створють обробник саме цієї події.
Кнопка із зображенням BitBtn на вкладенні Additional — аналог Button. Цей компонент має свої особливі властивості:
Kind — тип кнопки. Є кілька визначених типів кнопки з готовою піктограмою і текстом, а також вже сформованою процедурою, зокрема:
Layout — місце розташування зображення на кнопці. Може мати такі значення:
Glyph — власне зображення на випадок, якщо не влаштовують запропоновані. При редагуванні після натискання кнопки з трикрапкою буде відкрито вікно діалогу, в якому потрібно вказати шлях до зображення (див. малюнок нижче).
Текстове поле введення чи виведення даних Edit зі вкладення Standard має такі основні властивості:
Text — текст, який буде відображено у полі на початку виконання програми;
CharCase — регістр виведених символів, який може мати такі значення:
ReadOnly — дозвіл чи заборона введення інформації у поле;
MaxLength — максимальна довжина тексту (вимірюють у кількості символів);
HideSelection — чи буде зніматися виділення з тексту при втраті компонентом фокуса;
PasswordChar — символ, який буде відображено у полі замість введених символів — використовують, наприклад, для приховування пароля.
Основні події Edit:
onChange — будь-яка зміна відображуваного тексту.
onClick — натиснення на компонент.
Всі інші властивості та події аналогічні властивостям форми. При опрацюванні даних, введених у поле Edit, потрібно враховувати, що вони мають рядковий тип String.
Поле Label з вкладення Standard призначено для розміщення на формі текстового напису рядкового типу String.
Всі події аналогічні компоненту Edit.
Підписане поле введення LabeledEdit з вкладення Additional має такі самі властивості, що й поле Edit.
Компонент Memo з вкладення Standard призначено для введення багаторядкового тексту.
Деякі його властивості подібні до властивостей поля Edit. Але є і відмінні:
Lines — масив рядків. Дозволяє звертатися як до всього тексту, так і до його окремих рядках. Це складена властивість, яка має свої властивості, методи і події.
ScrollBars — смуги прокручування. Може набувати таких значень:
Крім перелічених вище властивостей, Memo має свої методи:
CopyToClipboard — копіювання тексту у буфер обміну;
CutToClipboard — вирізання виділеного тексту й поміщення його в буфер обміну;
PasteFromClipboard — вставляння в компонент тексту з буфера обміну у позицію, де розташовано курсор;
SelectAll — виділення всього тексту;
Undo — відміна останньої зміни у тексті.
Списки вибору ListBox і ComboBox з вкладення Standard використовують для вибору користувачем одного або декількох рядків.
ListBox — це список, схожий на Memo,
а ComboBox — список, що розгортається.
Специфічні властивості ListBox:
Columns — кількість стовпчиків у списку;
MultiSelect — дозвіл виділяти більше одного елемента списка;
ExtendedSelect — розширене виділення — дозвіл чи заборона виділяти діапазон з утриманням клавіші Shift. У будь-якому випадку, користувач може виділяти вибіркові рядки, клацаючи по ним по черзі і утримуючи при цьому Ctrl. Працює за умови MultiSelect = True;
Sorted — упорядкування списку. Якщо значення властивості True, список упорядковують за алфавітом.
Специфічні властивості ComboBox:
ArrowKeysTraverseList — при значенні True дозволяє переміщатися за списком кнопками зі стрілками.
AutoComplete — при значенні True дозволяє вибирати елементи зі списку, фільтруючи їх за введеними з клавіатури початковими символами.
AutoCompleteText — перемикачі автозавершення введення, які перелічують через кому у квадратних дужках:
cbactEnabled — включення опції AutoComplete;
cbactEndOfLineComplete — виконує AutoComplete лише за умови перебування вказівника в кінці рядка;
cbactRetainPrefixCase — зберігає ті самі символи, які ввів користувач;
cbactSearchAscending — при значенні True пошук відповідних рядків буде проведено у порядку зростання, при значенні False — у порядку спадання.
Мітка CheckBox (Прапорець) з вкладення Standard призначена для того, щоб користувач міг вказати своє рішення типу так/ні або так/ні/не впевнений.
Це рішення впливає на значення властивості State. Платформа може містити кілька таких компонентів. Стан кожного з них ніяк не залежить від стану інших.
Деякі прапорці можуть перебувати у частково встановленому стані. Така можливість потрібна, коли потрібно повідомити користувачеві про неповну відповідність. Для активування такої можливості використовують властивість AllowGrayed. Якщо для властивості AllowGrayed встановлено значення True, то прапорець при послідовних клацання на ньому буде по черзі перебувати у таких станах:
скинутий;
встановлений частково;
встановлений.
Стан компонента визначається відповідним значенням властивості State:
cbUnchecked;
cbGrayed;
cbChecked.
Значення властивості State можна змінювати як під час проектування за допомогою інспектора об’єктів, так і в програмі. Щоб реагувати на зміну стану прапорця, треба створити обробник події OnClick.
Група перемикачів RadioGroup з вкладення Standard — це панель з радіокнопками, з яких може бути включена тільки одна. Інакше кажучи, при включенні якоїсь кнопки всі інші вимикаються.
Основні властивості група перемикачів RadioGroup:
Caption — напис у лівому верхньому кутку панелі;
Items — написи кнопок і їхня кількість (перший елемент має порядковий номер 0);
Columns — кількість стовпчиків;
ItemIndex — номер кнопки, виділеної спочатку. Як усталено –1 — жодну кнопку не виділено.
Зображення Image з вкладення Additional відображає на формі зображення і забезпечує роботу з ним.
Події
Кожний об'єкт (форма, кнопка, поле, напис та інші), крім набору властивостей, має ще набір подій, які можуть відбутися з об'єктом під час виконання проекту. Такими подіями, наприклад, є (перелік неповний):ОnСlіск (англійською — на клацання) — вибір будь-якої точки об'єкта;
OnDblСlіck — подвійне клацання кнопкою миші;
OnMouseDown — натиснення кнопки миші;
OnmouseUp — відпускання кнопки миші;
ОnМоuseMove (англійською — на переміщення миші) — переміщення вказівника по об'єкту;
ОnKeyPress (англійською — на натискання клавіші) — натиснення будь-якої клавіші на клавіатурі;
OnКеуDown — натиснена клавіша клавіатури. Події ОnКеуDown і OnКеуDowРress — це події, що чергуються, відбуваючись до тих пір, поки не буде відпущена утримувана клавіша. У цей момент відбудеться подія ОnКеуUp;
ОпКеуUp — відпускання натиснутої клавіші клавіатури;
ОпСгеаtе — створення об'єкту. Опрацювання цієї події зазвичай використовують для ініціалізації змінних, виконання підготовчих дій;
ОnPaint — поява вікна на екрані на початку роботи програми, появи частини вікна, яка до цього була закрита іншим вікном;
ОnEnter — отримання елементом управління фокусу;
ОпЕхіt — втрата елементом управління фокусу.
Список всіх подій з об'єктом можна побачити, якщо виділити об'єкт і відкрити вкладення Події вікна Іспектор об'єктів — див. перелік подій для кнопки.
Примітка. У поданому вище прикладі подія ОnСlіск з кнопкою Button1 має назву Button1Сlіск. Аналогічно інтегроване середовище програмування формує назви всіх подій з усіма об'єктами за таким правилом: назва_об'єкта.назва_події.
Процедура — структурно виділена частина програми, яка має свою назву та яку можна за цією назвою викликати на виконання будь-якого місця програми.
Рекурсивна процедура — процедура, яка містить виклик самої себе.
Структура коду процедура
procedure назва_процедури (список аргументів); var (опис локальних змінних процедури>); begin вказівки end;
Для зміни значень властивостей аргумента, процедура повинна містити крім вказівки надання значення:
назва_об'єкта.назва_властивості := значення_або_вираз ;
ще й службове слово var перед (локальною) назвою аргумента у списку аргументів.
Обробник подій — процедура, пов'язана з певною подією, яку програма виконуватиме одразу після настання цієї події.
Наприклад, якщо потрібно пов'язати деяку процедуру з подією OnClick для кнопки з назвою Вutton1, то необхідно зробити таке:
У результаті виконання таких дій в полі ОnСlіск на вкладенні Еvents з'явиться текст Вutton1СІіск — назва створеної події,
а у вікні Редактор тексту вкладенні Unit1 з'явиться заготовка процедури Вutton1СІіск, вказівки якої й буде виконано при настанні події Вutton1СІіск — події ОnClick з кнопкою Вutton1.
Продемонструємо дію обробників подій натискання кнопок, які змінюють властивості форми й кнопок. Наступні зображення демонструють початковий вигляд форми
і такі результи натискання кнопок у початковому стані.
Зображення подано для такого порядку натискання кнопок.
1 2 3 4 5 6 7
Цей проект містить такі файли:
4. Інструктаж з ТБ
5. Вироблення практичних навичок
Завдання. Створити проект з трьома кнопками на формі. Встановити такі значення їхніх властивостей, щоб на початку виконання проекту:
Для кожної кнопки створіть обробник події:
вибір першої кнопки робить її невидимою і недоступною, другу кнопку — видимою і доступною, третю кнопку — видимою і недоступною;
вибір другої кнопки робить її невидимою і недоступною, третю кнопку — видимою і доступною, першу кнопку — видимою і недоступною;
вибір третьої кнопки робить її невидимою і недоступною, першу кнопку — видимою і доступною, другу кнопку — видимою і недоступною.
Вказівки до виконання
Завантажити середовище Lazarus.
Виділити форму і надати значення «Видимий — невидимий, доступний — недоступний» її властивості Caption.
Розташувати на формі кнопку, виділити її і надати такі значення її властивостям:
Розташувати на формі другу кнопку, виділити її і надати такі значення її властивостям:
Розташувати на формі третю кнопку, виділити її і надати такі значення її властивостям:
Виділити першу кнопку, відкрити вкладення Події вікна Інспектор Об'єктів і створити заготовку процедури для події OnClick для цієї кнопки.
У тіло створеної процедури ввести такий текст:
Button1.Visible := False; Button1.Enabled := False; Button2.Visible := True; Button2.Enabled := True; Button3.Visible := True; Button3.Enabled := False;
У тіло створеної процедури ввести такий текст:
Button2.Visible := False; Button2.Enabled := False; Button3.Visible := True; Button3.Enabled := True; Button1.Visible := True; Button1.Enabled := False;
У тіло створеної процедури ввести такий текст:
Button3.Visible := False; Button3.Enabled := False; Button1.Visible := True; Button1.Enabled := True; Button2.Visible := True; Button2.Enabled := False;
Виконати проект:
У вікні, що відкрилося, перша кнопка має бути видимою і доступною, друга — видимою і недоступною, а третя кнопка — невидимою і недоступною.
Перевірити коректність роботи обробників подій згідно з умовою завдання, натискаючи по черзі першу, другу й третю кнопки кілька разів.
Повідомити вчителя про виконання завдання.
Зберегти проект, закрити вікно виконання проекту і вікно програми Lazarus.
6. Підбиття підсумків уроку
Виставлення оцінок.
7. Домашнє завдання
Повторити матеріал уроку. Доповнити проект, виконаний у класі, обліком кількості натискань кожної клавіші, виведенням цих значень у написах на клавішах, зміною кольору клавіш: видима доступна має бути зеленою, видима недоступна — жовтою.
Текст упорядкувала Поданчук Наталія Георгіївна, вчитель інформатики НВК «Домінанта» Дніпровського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації.
Використано матеріали випускної роботи Кисловської Тетяни Миколаївни.