Створення проЄкту З ДЕКІЛЬКОМА ФОРМАМИ в середовищі DELPHI
Мета: Навчитися створювати та налаштовувати додатки, що складаються з кількох форм.
ТЕОРЕТИЧНІ ВІДОМОСТІ
1. Розробка додатка
Розробка додатка в Delphi включає два взаємозалежні етапи:
Інтерфейс додатка для користувача визначає спосіб взаємодії користувача й додатка, тобто зовнішній вигляд вікна (форми) додатка й те, яким чином користувач керує додатком. Інтерфейс конструюється шляхом розміщення на формі компонентів, що називаються компонентами інтерфейсу або елементами керування.
Функціональність додатка визначається процедурами, які виконуються при виникненні певних подій, наприклад, що відбуваються при маніпуляціях користувача з елементами керування форми. У процесі розробки додатка на форму розміщуються компоненти, для них установлюються необхідні властивості й створюються оброблювачі подій.
Для написання коду процедур використовується вікно коду, для конструювання інтерфейсу програми – інші вікна Delphi і насамперед – вікно Форми, що на етапі проєктування додатка являє собою модель Форми часу виконання.
Між наповненням вікон форми й коду існує нерозривний зв'язок: розміщення на формі компонента приводить до автоматичної зміни коду програми. Тому програмісти спочатку конструюють форму, розмістивши на ній черговий компонент, а потім переходять до написання фрагмента коду, що забезпечує необхідне поводження компонента в працюючій програмі.
2. Форма й модифікація її властивостей
Форма є об'єктом класу TForm. Стартова форма створюється шляхом зміни значень властивостей форми Form1 і додавання до форми необхідних компонентів.
Властивості форми визначають її зовнішній вигляд: розмір, положення на екрані, текст заголовку, вид рамки. Для перегляду й зміни значень властивостей форми і її компонентів використовується вікно Object Inspector. У верхній частині вікна Object Inspector відображене ім'я об'єкта, значення властивостей якого відображається в цей момент. У лівій колонці вкладки Properties (Властивості) перераховані властивості об'єкта, а в правій – зазначені їхні значення. При створенні стартової форми, в першу чергу, варто змінити значення властивості Caption (Заголовок).
Активним об'єктом називають компонент, який при роботі додатка вибирається клацанням миші або натисненням клавіші Tab. Говорять, що такий елемент має фокус вводу. Кожний елемент може стати активним при виклику методу SetFocus.
3. Основи роботи з візуальними компонентами
Коли відкривається будь-яка програма Windows, з'являється вікно з безліччю кнопок, розділів меню, вікон редагування, списків і т.д. Все це об'єкти. Коли натискається клавіша на клавіатурі або кнопка миші, переміщається курсор і т.д., відбувається подія, на яку додаток може якось відредагувати. У момент настання події операційна система посилає додатку, до якого ця подія відноситься, повідомлення. Коли об'єкт, якому призначалося це повідомлення, одержує його, він може як-небудь відредагувати: виконати деякі обчислення, розгорнути список, занести символ у вікно редагування й т.д. Програміст може сам визначити реакцію на подію або використовувати стандартну реакцію. Причому важливо розуміти, що не тільки користувач є джерелом подій. Події можуть ініціюватися й системою.
В Delphi компоненти – це і є ті самі об'єкти, що реагують на події. Компонент, розміщений на формі, як і будь-який інший об'єкт, відносяться до певного класу. До якого саме, можна довідатися, скориставшись довідковою службою. Для цього необхідно навести покажчик миші на потрібний компонент і натиснути F1. Компонент має поля (дані). Але прямо до них звернутися не можна. Для роботи з полями існують процедури й функції, що називаються методами. Сукупність даних (полів) і методів їхнього читання й запису називається властивістю. Коли виділити компонент на формі (простим клацанням миші на ньому), у вікні Інспектора об'єктів (Object Inspector) на вкладці Властивості (Properties) можна побачити властивості цього компонента. Ліворуч знаходиться ім'я властивості, праворуч – її поточне значення. Властивості можна змінювати в Інспекторі об'єктів і в тексті програми. Значення більшості властивостей установлюються Delphi автоматично при розміщенні компонента на формі, але їх можна змінювати й динамічно в процесі виконня програми.
Отже, одержавши повідомлення (подію), об'єкт повинен на нього відреагувати – обробити його. Це виконується в оброблювачах подій. Подивитися, які події може обробити компонент, можна в Інспекторі об'єктів на вкладці Events (Події). У лівій частині відображений список подій, а в правій – назви процедур обробки подій. Щоб додати процедуру обробки тієї чи іншої події, необхідно клацнути на порожньому полі навпроти цієї події. Delphi автоматично вставить у текст програми заготовку процедури з відповідними параметрами. Залишається тільки дописати інший код.
Компоненти можна розміщувати на формі під час проектування додатка. Це зручно, оскільки видно, яким буде вікно додатка при його запуску. До того ж, додаток буде швидше завантажуватися й працювати. Але є й свої недоліки. Наприклад, не завжди є необхідність у тих або інших об'єктах протягом усього часу роботи додатка. До того ж такий спосіб значно збільшує розмір файла додатка. Об'єкти можна створювати й динамічно, коли вони потрібні, і знищувати, коли необхідність в них відпала. При цьому заощаджуються ресурси комп'ютера: йому не потрібно буде зберігати в оперативній пам'яті інформацію, що може навіть не знадобитися. З метою організації динамічного розподілу пам'яті в усі об'єкти закладені методи їхнього створення (конструктори) й знищення (деструктори). Для об'єктів, які розміщені на формі в процесі проектування, конструктори спрацьовують при запуску програми, а деструктори – при завершенні її роботи. Для об'єктів, створюваних під час роботи програми, програміст вручну пише код, відповідальний за створення, ініціалізацію, використання й знищення об'єкта.
4. Компіляція й виконання програми
Після введення тексту програми її необхідно відкомпілювати й виконати.
Для компіляції проекту в меню Project виберіть команду Compile Project або натисніть комбінацію клавіш Ctrl+F9.
Для виконання програми в меню Run виберіть команду Run, або натисніть кнопку на панелі інструментів Налагодження, або натисніть клавішу F9.
Якщо проєкт раніше не зберігався, то перед виконанням програми Delphi зажадає зберегти його на диску. Спочатку на екран буде виведене діалогове вікно Save Unit As... Delphi запропонує зберегти модуль форми під ім'ям Unitl у системній папці Program Files\Borland\Delphi7\Projects. Погоджуватися із цим не треба з кількох причин. По-перше, ім'я модуля форми повинне вказувати на призначення цієї форми або виконувану нею функцію. По-друге, для кожного нового проєкту необхідно створювати окрему папку, оскільки кожний проєкт складається з декількох файлів. По-третє, ця папка повинна перебувати в робочому каталозі користувача, призначеному для збереження проєктів додатків. Папку можна створити як перед розробкою програми за допомогою Провідника, так і в процесі збереження проєкту в середовищі Delphi.
Задання імені модуля. У поле Ім'я файла необхідно ввести ім'я модуля і натиснути кнопку Зберегти. Вікно Коду програми й заголовок модуля змінять свою назву на ту, під якою був збережений модуль.
Задання імені проєкту. Потім на екран буде виведене діалогове вікно Save Project As... – Delphi запропонує зберегти проєкт під ім'ям Projectl у робочій папці проєкту, якщо вона була обрана раніше при збереженні модуля. Необхідно задати ім'я проєкту, що відповідає його функціональному призначенню та натиснути кнопку Зберегти. Головне вікно змінить свою назву на ту, під якою був збережений проєкт.
Збереження проєкту під новим ім'ям
Проєкт можна зберегти під іншим ім'ям або в іншому місці. Для такого збереження використовується команда File|Save Project As... (Зберегти проєкт як...). При виконанні цієї команди з'являється описане вище вікно збереження проєкту, у якому можна задати нове місце зберігання (поле Папка) або нове ім'я файла (поле Ім'я файла).
Модулі проєкту можна зберегти під іншим ім'ям або в іншому місці командою File|Save As... (Зберегти як...).
Відразу ж після відкриття нового проєкту необхідно зберегти його під потрібним ім'ям у призначеній для цього проєкту папці. Для цього в меню File потрібно вибрати команду Save Project As... (Зберегти проєкт як...), або Save (Зберегти), або натиснути кнопку Save на панелі інструментів Стандартна. На екрані з'явиться вікно діалогу збереження проєкту.
Після введення імені проєкту й вибору папки для його збереження необхідно натиснути кнопку Зберегти. Вікно проєкту й заголовок програми змінять свою назву на ту, під якою був збережений проєкт.
Збереження проєкту під колишнім ім'ям
Після роботи з проєктом, якому вже було привласнене ім'я, у меню File потрібно вибрати команду Save (Зберегти) або натиснути кнопку на панелі інструментів Стандартна і проєкт буде збережений у тій же папці під колишнім ім'ям. Для збереження всіх файлів проєкту необхідно використати команду Save All (Зберегти все) або натиснути кнопку на панелі інструментів Стандартна.
6. Відкриття існуючого проєкту
Для відкриття проєкту Delphi можна скористатися командами File|Open... або кнопкою на панелі інструментів Standard (Стандартна). У діалоговому вікні Open у полі Папка потрібно вибрати папку з файлами проєкту, виділити мишею або клавішами Shift+стрілки потрібні файли проєкту й натиснути кнопку Відкрити. Можна відкривати файли проєкту по одному, виділяючи їх мишею й натискаючи кнопку Відкрити. Якщо потрібно відкрити тільки файл проєкту, можна скористатися командою File|Open Project... У цьому випадку у вікні Open Project, що з'явиться на екрані, будуть показані тільки наявні в поточній папці файли проєктів (з розширенням dpr або bpj).
7. Додавання в проєкт нової форми
Додаток може містити кілька форм. Нова форма додається до поточного проєкту одним клацанням миші на командній кнопці New Form (Створити форму) або командою File|New ► Form (Файл|Нова форма). При цьому з'являться нова порожня форма й пов'язаний з нею модуль. Ім'я форми, дане їй Delphi за замовчуванням, бажано відразу змінити на ім'я, що більше підходить за змістом.
Перемикатися між наявними в проєкті формами можна за допомогою командної кнопки View Form (Відобразити форму) або комбінації клавіш Shift+F12.
У програми може бути тільки одна головна форма – це форма, що відображається при запуску програми, і необмежена кількість підлеглих форм, допоміжних вікон, які на екрані не з'являються, а викликаються командою із програми за допомогою спеціальних методів. При закритті головного вікна (форми) додатка припиняється робота всього додатка, при цьому також закриваються всі інші вікна додатка. На початку роботи Delphi за замовчуванням робить головною першу форму (з первісною назвою Forml).
Для того щоб показати на екрані раніше створену підлеглу форму, можна застосувати метод Show. Наприклад, Form2.Show;.
Форму можна викликати як модальну методом ShowModal. Модальна форма повністю бере на себе подальше керування програмою, тому оператор, що слідує за викликом ShowModal, одержить керування тільки після її закриття.
Наприклад,
Form2.ShowModal; // показує модальну форму
Для видалення форми з екрану використовуються методи Hide (Сховати) і Close (Закрити).
Якщо одна форма виконує які-небудь дії з іншою формою, то в списку uses розділу implementation модуля першої форми повинне бути посилання на модуль другої форми.
Посилання на модуль іншої форми можна встановлювати програмно, але Delphi дозволяє виконати цю операцію автоматично. Для цього потрібно вибрати команду File|Use Unit (Файл | Використати модуль), що приведе до появи діалогового вікна Use Unit.
Після вибору потрібного модуля й натискання кнопки ОК посилання на нього додається автоматично.
Якщо посилання на необхідний модуль відсутнє, то при компіляції програми з'явиться діалогове вікно Information, яке повідомляє, що одна форма використовує іншу, але модуль другої форми відсутній у списку uses модуля першої форми. Для автоматичного додавання посилання на модуль досить натиснути кнопку Yes.
Форма може виконувати різні операції не тільки з іншою формою, але й з її окремими компонентами. У цьому випадку також потрібне посилання на модуль іншої форми.
Форма може бути модальною й немодальною. Немодальна форма дозволяє без її закриття перемкнутися на іншу форму додатка. Модальна форма вимагає обов'язкового закриття перед звертанням до будь-якої іншої форми. Вона припиняє виконання процедури, що її викликала, доти, поки користувач не закриє цю форму. Форма стає модальною, якщо вона робиться видимою методом ShowModal. Якщо форма робиться видимою методом Show, то вона буде немодальною.
Для модальної форми визначена властивість ModalResult, що доступна тільки під час виконання додатка. При відкритті форми методом ShowModal спочатку властивість ModalResult дорівнює нулю (константа mrNone). Як тільки при обробці якихось подій на формі властивості ModalResult буде привласнене позитивне значення, модальна форма закриється. А значення її властивості ModalResult можна буде прочитати як результат, що повертається методом ShowModal.
Значення властивості ModalResult визначаються тим, яка кнопка була натиснута при закритті модальної форми й задаються такими константами: mrNone; mrOk; mrCancel; mrAbort; mrRerty; mrlgnore; mrYes; mrNo; mrAII; mrNoToAII; mrYesToAII (за префіксом mr йде назва кнопки).
ЗАВДАННЯ НА ПРАКТИЧНУ РОБОТУ
Зауваження: в додатку всі форми мають імена, що не повторюються (якщо ви маєте дві форми з однаковим ім'ям – перейменуйте одну з них, змінюючи для форми її властивість name, форми збережіть у спільному для них каталозі).
ВИМОГИ ДО ЗВІТУ
У звіті з практичної роботи (надрукованому на принтері) повинні бути відображені:
ПРАКТИЧНА ЧАСТИНА
Необхідно створити новий додаток, що складається з головної форми та форм, що призначені для наступних практичних робіт: лінійні обчислювальні процеси, обчислювальні процеси з розгалуженнями, циклічні обчислювальні процеси.
Для цього необхідно виконати такі дії.
Рис. 1. Форма з компонентами
Компоненти:
Label1(властивості Caption присвоїмо значення „КУРС "ОСНОВИ АЛГОРИТМІЗАЦІЇ ТА ПРОГРАМУВАННЯ". Практичні роботи студента __ курсу __ групи ПІБ", властивості WordWrap – True).
Button1 (властивості Caption присвоїмо значення «Лінійні процеси»),
Button2 (властивості Caption присвоїмо значення «Процеси з розгалуженням»),
Button3 (властивості Caption присвоїмо значення «Циклічні процеси»),
Button4 (властивості Caption присвоїмо значення «Вихід»).
Рис. 2. Інформаційне вікно
7. Потрібно зберегти проєкт програми командою File\ Save Project As... З цією метою виконати такі дії:
Увага! При першому збереженні проєкту запис файлів у папку відбувається в два етапи: спочатку зберігається модуль форми проєкту з розширенням .pas, потім зберігається файл проєкту з розширенням .dpr.
При збереженні в папці проєкту автоматично створюється група допоміжних файлів, які не треба знищувати або редагувати.
Текст модуля
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.show
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form3.show
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form4.show
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Form1.close
end;
end.
Результат роботи
Висновки
КОНТРОЛЬНІ ЗАПИТАННЯ
1