Подія і процедура обробки події 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Подія і процедура обробки події



Вид створеної форми підказує, як працює додаток. Очевидно, що користувач повинний ввести в поля редагування вихідні дані і клацнути мишею на кнопці Обчислити. Щиглик на зображенні командної кнопки — це приклад того, що в Windows називається подією. Подія (Event) — це те, що відбувається під час роботи програми. У Delphi кожній події привласнене ім'я. Наприклад, щиглик кнопкою миші - це подія OnClick, подвійний щиглик мишею подія OnDblClick. У табл. 3 приведені деякі події Windows.

Таблиця 3. Події

Подія Відбувається
OnClick При щиглику кнопкою миші
OnDblClick При подвійному щиглику кнопкою миші
OnMouseDown При натисканні кнопки миші
OnMouseUp При відпусканні кнопки миші
OnMouseMove При переміщенні миші
OnKeyPress При натисканні клавіші клавіатури
OnKeyDown При натисканні клавіші клавіатури. Події OnKeyDown і OnKeyPress — це чергуються, повторювані події, що відбуваються доти, поки не буде відпущена утримувана клавіша (у цей момент відбувається подія OnKeyUp)
OnKeyUp При відпусканні натиснутої клавіші клавіатури
OnCreate При створенні об'єкта (форми, елемента керування). Процедура обробки цієї події звичайно використовується для ініціалізації перемінних, виконання підготовчих дій
OnPaint З появою вікна на екрані на початку роботи програми, після появи частини вікна, що, наприклад, була закрита іншим вікном, і в інших випадках
OnEnter При одержанні елементом керування фокуса
OnExit При втраті елементом керування фокуса

Реакцією на подію повинне бути яка-небудь дія. У Delphi реакція на подію реалізується як процедура обробки події. Таким чином, для того щоб програма виконувала деяку роботу у відповідь на дії користувача, програміст повинний написати процедуру обробки відповідної події. Варто звернути увагу на те, що значну частину обробки подій бере на себе компонент. Тому програміст повинний розробляти процедуру обробки події тільки в тому випадку, якщо реакція на подію відрізняється від стандартної або не визначена. Наприклад, якщо за умовою задачі обмежень на символи, що вводяться в поле Edit, нема, то процедуру обробки події OnKeyPress писати не треба, тому що під час роботи програми буде використана стандартна (схована від програміста) процедура обробки цієї події.

Методику створення процедур обробки подій розглянемо на прикладі процедури обробки події OnClick для командної кнопки Обчислити. Щоб приступити до створення процедури обробки події, треба спочатку у вікні Object Inspector вибрати компонент, для якого створюється процедура обробки події. Потім у цьому ж вікні потрібно вибрати вкладку Events (Події).

У лівому стовпчику вкладки Events (рис. 9) перераховані імена подій, що може сприймати обраний компонент (об'єкт). Якщо для події визначена (написана) процедура обробки події, то в правому стовпчику поруч з ім'ям події виводиться ім'я цієї процедури. Для того щоб створити функцію обробки події, потрібно зробити подвійного щиглика мишею в поле імені процедури обробки відповідної події. У результаті цього відкриється вікно редактора коду, у которое буде доданий шаблон процедури обробки події, а у вікні Object Inspector поруч з ім'ям події з'явиться ім'я функції його обробки (рис. 10). Delphi привласнює функції обробки події ім'я, що складається з двох частин. Перша частина імені ідентифікує форму, що містить об'єкт (компонент), для якого створена процедура обробки події. Друга частина імені ідентифікує сам об'єкт і подію. У нашому прикладі ім'я форми — Form1, ім'я командної кнопки — Buttoni, а ім'я події -Click.

У вікні редактора коду між словами begin і end можна друкувати інструкції, що реалізують функцію обробки події.

Рис. 9. На вкладці Events перераховані події, що може сприймати компонент (у даному випадку — командна кнопка)

Редактор коду

Редактор коду виділяє ключові слова мови програмування (procedure, var, begin, end, if і ін.) напівжирним шрифтом, що робить текст програми більш виразним і полегшує сприйняття структури програми. Крім ключових слів редактор коду виділяє курсивом коментарі.

Рис. 10. Шаблон процедури обробки події, які згенеровані Delphi

У процесі розробки програми часто виникає необхідність переключення між вікном редактора коду і вікном форми. Зробити це можна за допомогою командної кнопки Toglle Form/Unit, що знаходиться на панелі інструментів View (рис. 11), або натиснувши клавішу <F12>. На цій же панелі інструментів знаходяться командні кнопки View Unit і View Form, використовуючи які можна вибрати потрібний модуль або форму у випадку, якщо проект складається з декількох модулів або форм.

Рис. 11. Панель інструментів View

Система підказок

У процесі набору тексту програми редактор коду виводить довідкову інформацію про параметри процедур і функцій, про властивості і методи об'єктів. Наприклад, якщо у вікні редактора коду набрати MessageDig (ім'я функції, що виводить на екран вікно повідомлення) і відкриваючу дужку, то на екрані з'явиться вікно підказки, у якому будуть перераховані параметри функції MessageDig із указівкою їхнього типу (рис. 12). Один з параметрів виділений напівжирним. Так редактор підказує програмістові, який параметр він повинний уводити. Після набору параметра і коми у вікні підказки буде виділений наступний параметр. І так доти, поки не будуть зазначені всі параметри.

Для об'єктів редактор коду виводить список властивостей і методів. Як тільки програміст набере ім'я об'єкта (компонента) і крапку, так відразу на екрані з'являється вікно підказки — список властивостей і методів цього об'єкта (рис. 13). Перейти до потрібного елемента списку можна за допомогою клавіш переміщення курсору або набравши на клавіатурі трохи перших букв імені потрібної властивості або методу. Після того як буде обраний потрібний елемент списку і натиснута клавіша <Enter>, обране властивість або метод будуть вставлені в текст програми.

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

Навігатор коду

Вікно редактора коду розділено на двох частин (рис. 14). У правій частині знаходиться текст програми. Ліва частина, що називається навігатор коду (Code Explorer), полегшує навігацію по тексту (кодові) програми. В ієрархічному списку, структура якого залежить від проекту, над яким йде робота, перераховані форми проекту, їхні компоненти, процедури обробки подій, функції, процедури, глобальні перемінні і константи. Вибравши відповідний елемент списку, можна швидко перейти до потрібного фрагмента коду.

Вікно навігатора коду можна закрити звичайним образом. Якщо вікно навігатора коду не доступно, то для того, щоб воно з'явилося на екрані, потрібно з меню View вибрати команду Code Explorer.

Рис. 12. Приклад підказки

Рис. 13. Редактор коду автоматично виводить список властивостей і методів об'єкта (компонента)

Рис. 14. Вікно Code Explorer полегшує навігацію по тексту програми

Шаблони коду

У процесі набору тексту зручно використовувати шаблони коду (Code Templates). Шаблон коду — це інструкція програми, записана в загальному виді. Наприклад, шаблон для інструкції case виглядає так:

case of:;

:;

else;

end;

Редактор коду надає програмістові великий набір шаблонів: оголошення масивів, класів, функцій, процедур; інструкцій вибору (if, case), циклів (for, while). Для деяких інструкцій, наприклад if і while, є кілька варіантів шаблонів.

Для того щоб у процесі набору тексту програми скористатися шаблоном коду і вставити його в текст програми, потрібно натиснути комбінацію клавіш <Ctrl>+<J> і зі списку, що з'явився, вибрати потрібний шаблон (рис. 15). Вибрати шаблон можна звичайним образом, прокруючи список, або введенням перших букв імені шаблона (імена шаблонів у списку виділені напівжирним). Вибравши в списку шаблон, потрібно натиснути <Enter>, і шаблон буде вставлений у текст програми.

Програміст може створити свій власний шаблон коду і використовувати його точно так само, як і стандартний. Для того щоб створити шаблон коду, потрібно з меню Tools вибрати команду Editor Options, у вкладці Source Options клацнути на кнопці Edit Code Templates, у діалоговому вікні, що з'явилося, Code Templates клацнути на кнопці Add і у вікні, що з'явилося, Add Code Template (рис. 16) задати ім'я шаблона (Shortcut Name) і його короткий опис (Description). Потім, після щиглика на кнопці ОК, у поле Code діалогового вікна Code Templates увести шаблон (рис. 17).

Структура проекту

Проект Delphi являє собою набір програмних одиниць — модулів. Один з модулів — головний, містить інструкції, з яких починається виконання програми. Головний модуль додатка цілком формується Delphi.

Головний модуль являє собою файл із розширенням dpr. Для того щоб побачити текст головного модуля додатка, потрібно з меню Project вибрати команду View Source.

У лістінгу 1 приведений текст головного модуля програми обчислення швидкості бігу.

Рис. 15. Список шаблонів коду відображається в результаті натискання клавіш <Ctrl>+<J>

Рис. 16. У поля діалогового вікна треба ввести ім'я шаблона і його короткий опис

Рис. 17. Приклад шаблона коду програміста

Рис. 18. Вікно програми обчислення швидкості бігу

Лістінг 1. Головний модуль додатка Швидкість бігу

program vrun;

Uses

Forms,vrun1 in 'vrunl.pas' {Form1};

{$R *.res}

Begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

End.

Починається головний модуль словом program, за яким випливає ім'я програми, що збігає з ім'ям проекту. Ім'я проекту задається в момент збереження проекту, і воно визначає ім'я створюваного компілятором файлу програми, що виконується. Далі за словом uses випливають імена використовуваних модулів: бібліотечного модуля Forms і модуля форми vrunl.pas.

Рядок {$R *.RES}, що схожа на коментар, — це директива компіляторові підключити файл ресурсів. Файл ресурсів містить ресурси додатка: піктограми, курсори, бітові образи й ін. Зірочка показує, що ім'я файлу ресурсів таке ж, як і у файлу проекту, але з розширенням res. Файл ресурсів не є текстовим файлом, тому переглянути його за допомогою редактора тексту не можна. Для роботи з файлами ресурсів використовують спеціальні програми, наприклад, Resource Workshop. Можна також застосовувати вхідну до складу Delphi утиліту Image Editor, доступ до якої можна одержати вибором з меню Tools команди Image Editor.

Частина головного модуля, що виконується, знаходиться між інструкціями begin і end. Інструкції частини, що виконується, забезпечують ініціалізацію додатка і висновок на екран стартового вікна.

Крім головного модуля, кожна програма містить у собі ще як мінімум один модуль форми, що містить опис стартової форми додатка і підтримуючу її роботу процедур. У Delphi кожній формі відповідає свій модуль.

У лістінгу 2 приведений текст модуля програми обчислення швидкості бігу.

Лістінг 2. Модуль програми Швидкість бігу

unit vrun1;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

Type

TForm1 = class(TForm) Edit1: TEdit;

Edit2: TEdit; Label1: TLabel;

Label2: TLabel; Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

procedure ButtonlClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end;

Var

Form1: TForm1;

Implementation

{$R *.dfm}

// натискання кнопки Обчислити

procedure TForm1.ButtonlClick'(Sender: TObject);

Var

dist: integer; // дистанція, метрів

t: real; // час як дробове число

min: integer; // час, хвилини

sek: integer; // час, секунди

v: real;

// швидкість

Begin

// одержати вихідні дані з полів уведення

dist:= StrToInt(Edit1.Text); t:= StrToFloat(Edit2.Text);

// попередні перетворення

min:= Trunc(t); // у хвилин — це ціла частина числа t

sek:= Trunc(t*100) mod 100; // у секунд — це дробова частина

// числа t

// обчислення

v:= (dist/1000) / ((min*60 + sek)/3600);

// висновок результату

label4.Caption:= 'Дистанція: '+ Edit1.Text + ' м' + #13

+ 'Час: ' + IntToStr(min) + ' хв '

+ IntToStr(sek) + ' сек ' + #13 +

'Швидкість: ' + FloatToStr(v,ffFixed,4,2) + км/година';

end;

// натискання кнопки Завершити

procedure TForm1.Button2Click(Sender: TObject)

Begin

Form1.Close;

end;

End.

Починається модуль словом unit, за яким випливає ім'я модуля. Саме це ім'я згадується в списку використовуваних модулів в інструкції uses головного модуля додатка, текст якого приведений у лістінгу 1.

Модуль складається з наступних розділів:

· інтерфейсу;

· реалізації;

· ініціалізації.

Розділ інтерфейсу (починається словом interface) повідомляє компіляторові, яка частина модуля є доступною для інших модулів програми. У цьому розділі перераховані (після слова uses) бібліотечні модулі, використовувані даним модулем. Також тут знаходиться сформоване Delphi опис форми, яке випливає за словом type.

Розділ реалізації відкривається словом implementation і містить оголошення локальних перемінних, процедур і функцій, що підтримують роботу форми.
Починається розділ реалізації директивою {$R *.DFM}, що вказує компіляторові, що в процесі генерації виконуваного файлу треба використовувати опис форми. Опис форми знаходиться у файлі з розширенням dfm, ім'я якого збігається з ім'ям модуля. Файл опису форми генерується середовищем Delphi на основі зовнішнього вигляду форми.
За директивою ($R *.DFM} випливають процедури обробки подій для форми і її компонентів. Сюди ж програміст може помістити інші процедури і функції.
Роздягнув ініціалізації дозволяє виконати ініціалізацію перемінних модуля. Інструкції роздягнули ініціалізації розташовуються після розділу реалізації (опису всіх процедур і функцій) між begin і end. Якщо роздягнув ініціалізації не містить інструкцій (як у приведеному прикладі), то слово begin не вказується. Слід зазначити, що значна кількість інструкцій модуля формує Delphi. Наприклад, Delphi, аналізуючи дії програміста по створенню форми, генерує опис класу форми (після слова type). У приведеному прикладі інструкції, набрані програмістом, виділені тлом. Очевидно, що Delphi виконала значну частину роботи зі складання тексту програми.

Збереження проекту

Проект — це набір файлів, використовуючи які компілятор створює файл програми, що виконується, (Ехе-файл). У найпростішому випадку проект складається з файлу опису проекту (DOF-файл), файлу головного модуля (DPR-файл), файлу ресурсів (RES-файл), файлу опису форми (DFM-файл), файлу модуля форми, у якому знаходяться основний код додатка, у тому числі функції обробки подій на компонентах форми (PAS-файл), файл конфігурації (CFG-файл).

Щоб зберегти проект, потрібно з меню File вибрати команду Save Project As. Якщо проект ще жодного разу не був збережений, то Delphi спочатку запропонує зберегти модуль (уміст вікна редактори коду), тому на екрані з'явиться вікно Save Unitl As. У цьому вікні (рис. 19) треба вибрати папку, призначену для файлів проекту, і ввести ім'я модуля. Після натискання кнопки Зберегти, з'являється наступне вікно (рис. 20), у якому необхідно ввести ім'я файлу проекту.

Рис. 19. Збереження модуля форми

Рис. 20. Збереження проекту

Зверніть увагу на те, імена файлів модуля (pas-файл) і проекту (dpr-файл) повинні бути різними. Ім'я генеруємого компілятором файлу, що виконується, збігається з ім'ям проекту. Тому файлові проекту варто привласнити таке ім'я, що, на вашу думку, повинний мати файл програми, що виконується, а файлові модуля - яке-небудь інше ім'я, наприклад, отримане шляхом додавання до імені файлу проекту порядкового номера модуля.

У зв¢язку з тим, що проект являє собою набір файлів, то рекомендується для кожного проекту створювати окрему папку.

Компіляція

Компіляція — це процес перетворення вихідної програми в таку, що виконується. Процес компіляції складається з двох етапів. На першому етапі виконується перевірка тексту програми на відсутність помилок, на другому — генерується програма, що виконується, (ехе-файл).

Після введення тексту функції обробки події і збереження проекту можна з меню Project вибрати команду Compile і виконати компіляцію. Процес і результат компіляції відбивають у діалоговому вікні Compiling (РИС. 21). У це вікно компілятор виводить помилки (Errors), попереджень (warnings) і підказок (Hints). Самі повідомлення про помилки, попередження і підказки відображаються в нижній частині вікна редактори коду (рис. 22).

Рис. 21. Результат компіляції

Якщо під час компіляції вікна Compiling на екрані нема, то виберіть з меню Tools команду Environment options і на вкладці Preferences встановіть у включений стан перемикач Show compiler progr ess.

Рис. 22. Повідомлення компілятора про виявлені помилки

Помилки

Компілятор генерує програму, що виконується, лише в тому випадку, якщо вихідний текст не містить синтаксичних помилок. У більшості випадків у тільки що набраній програмі є помилки. Програміст повинний їх усунути. Щоб перейти до фрагмента коду, що містить помилку, треба установити курсор у рядок з повідомленням про помилку і з контекстного меню (рис. 23) вибрати команду Edit source.

Процес усунення помилок носить ітераційний характер. Звичайно спочатку усуваються найбільш очевидні помилки, наприклад, декларуються неоголошені перемінні. Після чергового внесення змін у текст програми виконується повторна компіляція. Варто враховувати той факт, що компілятор не завжди може точно локалізувати помилку. Тому, аналізуючи фрагмент програми, що, на думку компілятора, містить помилку, потрібно звертати увагу не тільки на той фрагмент коду, на який компілятор установив курсор, але і на той, котрий знаходиться в попередньому рядку.

У табл. 3 перераховані найбільш типові помилки і відповідні їм повідомлення компілятора.

Таблиця 3. Повідомлення компілятора про помилки

   
Повідомлення Ймовірна причина
Missing operator or semicolon (Відсутній оператор або крапка з коми) Після інструкції не поставлена крапка з коми

 

Рис. 23. Перехід до фрагмента програми, що містить помилку

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

Якщо в програмі немає синтаксичних помилок, компілятор створює файл програми, що виконується. Ім'я файлу, що виконується, таке ж, як і у файлу проекту, а розширення - exe. Delphi поміщає файл, що виконується, у той же каталог, де знаходиться файл проекту.

Запуск програми

Пробний запуск програми можна виконати безпосередньо з Delphi, не завершуючи роботу із середовищем розробки. Для цього потрібно з меню Run вибрати команду Run або клацнути на відповідній кнопці панелі інструментів Debug (рис. 24).

Рис. 24. Запуск програми із середовища розробки

Внесення змін

Щоб внести зміни в програму, потрібно запустити Delphi і відкрити відповідний проект. Зробити це можна звичайним способом, вибравши з меню File команду Open Project. Можна також скористатися командою Reopen з меню File. При виборі команди Reopen відкривається список проектів, над якими програміст працював останнім часом.

Варто звернути увагу на те, що для додавання в програму процедури обробки події потрібно у вікні Object Inspector вибрати компонент, для якого створюється процедура, потім на вкладці Events вибрати подію і зробити подвійного щиглика в поле імені процедури. Delphi сформує шаблон процедури обробки події. Після цього можна вводити інструкції, що реалізують процедуру обробки.

Після внесення змін проект варто зберегти. Для цього потрібно з меню File вибрати команду Save all.



Поделиться:


Последнее изменение этой страницы: 2016-04-18; просмотров: 1132; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.208.183 (0.09 с.)