AB
|
|
|
F |
|
|
|
D |
|
|
Y |
P |
B |
Y |
|
|
|
|
||
|
|
|
|
w |
Click |
||
|
|||
|
|
w |
|
|
|
|
w. |
|
|
|
A |
Tran |
sf |
|
|
|
|
|
|
|
|
|
|
F Tran |
sf |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
D |
|
|
|
|||||
|
|
|
or |
e |
|
|
|
|
Y |
P |
|
|
|
or |
e |
||||
|
|
|
|
m |
|
|
B |
Y |
|
|
|
|
|
|
|
m |
|||
|
|
buy |
|
r |
|
B |
|
|
|
|
|
buy |
r |
||||||
|
|
|
2 |
|
|
|
|
|
|
|
2 |
||||||||
|
|
|
0 |
|
|
|
|
|
|
|
|
0 |
|||||||
|
to |
|
|
|
|
. |
|
A |
|
|
|
|
|
|
to |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
here |
|
|
|
|
|
|
|
|
|
|
|
|
here |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
m |
Останнє, що треба зробити на етапі створення форми— це додати у формуwдвіClick |
|
|
|
|
m |
||||||||
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
||||
|
|
|
|
o |
командні кнопки: Обчислити і Завершити. Призначення цих кнопок очевидне. |
|
|
|
w. |
|
|
|
|
o |
|||||
|
|
|
c |
|
|
|
|
|
|
|
|
|
c |
|
|||||
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|||
BBYY |
|
|
|
|
|
|
|
|
|
|
|
A B BYY |
|
|
|
||||
Командна кнопка — компонент Button — додається у форму точно так, як і інші компоненти. Значок компоненту Button знаходиться на вкладціStandard (мал. 2.16).
Основні властивості компонентуButton приведені в таблиці. 2.7.
Мал. 2.16. Командна кнопка — компонент Button
Після додавання до форми двох командних кнопок потрібно встановити значення їх властивостей у відповідності таблиці. 2.7.
Таблиця 2.7. Властивості компоненту Button (командна кнопка)
|
|
|
|
|
|
|
Властивість |
|
Опис |
|
|
|
|
|
|
|
|
|
Name |
|
Ім'я компоненту. Використовується в програмі для доступу до |
|
|
|
|
компоненту і його властивостей |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Caption |
|
Текст на кнопці |
|
|
|
|
|
|
|
|
|
|
|
Ознака доступності кнопки. Кнопка доступна, якщо значення |
|
|
|
Enabled |
|
властивості рівне true і недоступна, якщо значення властивості |
|
|
|
|
|
рівне false |
|
|
|
|
|
|
|
|
|
Left |
|
Відстань від лівої межі кнопки до лівої межі форми |
|
|
|
|
|
|
|
|
|
Тор |
|
Відстань від верхньої межі кнопки до верхньої межі форми |
|
|
|
|
|
|
|
|
|
Height |
|
Висота кнопки |
|
|
|
|
|
|
|
|
|
Width |
|
Ширіна кнопки |
|
|
|
|
|
|
|
|
Після додавання до форми двох командних кнопок потрібно встановити значення їх властивостей відповідно до таблиці. 2.8.
Остаточний вид форми застосування, що розробляється, приведений на мал.
2.17.
16
AB
|
|
|
|
|
F Tran |
sf |
|
|||
|
|
|
|
D |
|
|
|
|||
|
|
Y |
P |
|
|
|
|
or |
e |
|
B |
Y |
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
buy |
r |
|||
|
|
|
|
|
|
|
2 |
|||
|
|
|
|
|
|
|
|
0 |
||
|
|
|
|
|
|
|
to |
|
|
. |
|
|
|
|
|
|
here |
|
|
|
|
|
|
|
|
Click |
|
|
|
|
||
w |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
||||
|
|
w |
w. |
|
|
|
|
o |
||
|
|
|
|
|
|
|
. |
|
||
|
|
|
|
|
A BBYY |
c |
|
|||
|
|
|
|
|
|
|
||||
AB
|
|
|
|
|
F Tran |
sf |
|
|||
|
|
|
|
D |
|
|
|
|||
|
|
Y |
P |
|
|
|
|
or |
e |
|
B |
Y |
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
buy |
r |
|||
|
|
|
|
|
|
|
2 |
|||
|
|
|
|
|
|
|
|
0 |
||
|
|
|
|
|
|
|
to |
|
|
. |
|
|
|
|
|
|
here |
|
|
|
|
|
|
|
|
Click |
|
|
|
|
||
w |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
||||
|
|
w |
w. |
|
|
|
|
o |
||
|
|
|
|
|
|
|
. |
|
||
|
|
|
|
|
A B BYY |
c |
|
|||
|
|
|
|
|
|
|
||||
Мал. 2.17. Остаточний вид форми програми "Сила струму"
Завершивши роботу над формою, можна приступити до створення програми. Але
перед цим розглянемо два важливі поняття: подію і функцію обробки події.
|
Таблиця 2.8. Значення властивостей компонентів Button1 |
і Button2 |
|||||
|
|
|
|
|
|
|
|
|
Властивість |
|
Компонент |
|
|
||
|
|
|
|
|
|
|
|
|
|
Button1 |
|
|
Button2 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|||
|
Caption |
|
Обчислити |
|
|
Завершити |
|
|
|
|
|
|
|
|
|
|
Тор |
|
144 |
|
|
144 |
|
|
|
|
|
|
|
|
|
|
Left |
|
16 |
|
|
104 |
|
|
|
|
|
|
|
|
|
|
Height |
|
25 |
|
|
25 |
|
|
|
|
|
|
|
|
|
|
Width |
|
75 |
|
|
75 |
|
|
|
|
|
|
|
|
|
2.2 Подія і функція обробки події
Вид створеної форми підказує, як працює додаток. Очевидно, що користувач
повинен ввести в поля редагування початкові дані |
і |
клацнути |
мишею |
на кноп |
Обчислити. Клацання на зображенні командної кнопки— |
це |
приклад |
того, що |
в |
Windows називається подією. |
|
|
|
|
Подія (Event) — це те, що відбувається під час роботи програми. У C++ Builder
кожній події привласнено ім'я. Наприклад, клацання кнопкою миші — це подія Onclick подвійне клацання мишею — подія OnDblClick.
У таблиці. 2.9 приведені деякі події Windows.
Таблиця 2.9. Події
17
AB
|
|
|
F |
|
|
|
D |
|
|
Y |
P |
B |
Y |
|
|
|
|
||
|
|
|
|
w |
Click |
||
|
|||
|
|
w |
|
|
|
|
w. |
|
|
|
A |
r |
ansf |
|
|
||
T |
|
|
|||
|
|
|
or |
|
|
|
|
|
m |
||
|
|
|
|
|
e |
|
|
|
buy |
|
r |
|
|
|
0 |
||
|
|
|
|
2 |
|
|
|
to |
|
. |
|
here |
|
|
|
||
|
|
|
|
||
|
|
|
o |
m |
|
|
|
|
.c |
|
|
BBYY |
|
|
|||
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F Tran |
sf |
|
|
|||||
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|||
|
|
|
|
|
|
Y |
P |
|
|
|
|
|
|
or |
e |
||
|
|
|
|
B |
Y |
|
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
B |
|
|
|
|
|
|
|
|
buy |
r |
||||
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
||||
|
|
|
A |
|
|
|
|
|
|
|
|
|
to |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
here |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Подія |
|
Відбувається |
|
w |
|
Click |
|
|
|
|
|
|
|
m |
|||
|
|
|
|
|
|
|
|
|
|
c |
|||||||
|
|
|
|
|
|
w |
w. |
|
|
|
|
|
. |
o |
|||
OnClick |
|
|
|
|
|
|
|
|
A B BYY |
|
|
|
|||||
|
При клацанні кнопкою миші |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OnDblClick |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При подвійному клацанні кнопкою миші |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OnMouseDown |
|
При натисненні кнопки миші |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OnMouseUp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При відпуску кнопки миші |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OnMouseMove |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При переміщенні миші |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OnKeyPress |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При натисненні клавіші клавіатури |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При |
натисненні |
клавіші |
клавіатури. Події |
Onkeydown і |
|
OnKeyDown |
|
Onkeypress |
— це події, що |
чергуються, повторюються, які |
|
||
|
відбуваються до тих пір, поки не буде відпущена утримувана |
|
|||||
|
|
|
|||||
|
|
клавіша (у цей момент відбувається подія Onkeyup) |
|
|
|||
OnKeyUp |
|
|
|
|
|||
|
При відпуску натиснутої клавіші клавіатури |
|
|
||||
|
|
|
|
|
|
||
OnCreate |
|
При |
створенні |
об'єкту(форми, елементу |
управління). |
|
|
|
Процедура обробки цієї події зазвичай використовується |
для |
|||||
|
|
ініціалізації змінних, виконання підготовчих дій |
|
|
|||
|
|
|
|||||
|
|
При появі вікна на екрані на початку роботи програми; під |
|
||||
OnPaint |
|
час роботи програми після появи вікна(або його частини), яке |
|
||||
|
|
було закрите іншим вікном або згорнуте |
|
|
|||
OnEnter |
|
|
|
|
|||
|
При отриманні елементом управління фокусу |
|
|
||||
OnExit |
|
|
|
|
|||
|
При втраті елементом управління фокусу |
|
|
||||
Реакцією |
на |
подію |
має бути |
яка-небудь . діяУ C++ Builder |
реакція |
на подію |
реалізується |
як |
функція |
обробки |
події. Таким чином, для того, щоб |
програма |
|
виконувала деяку роботу у відповідь на дії користувача, програміст |
повинен написати |
|||||
функцію обробки відповідної події. Слід звернути увагу на ,тещо значну частину обробки подій бере на себе компонент. Тому програміст повинен розробляти функцію обробки події тільки в тому випад, якщоу реакція на подію відрізняється від
стандартної або не визначена. Наприклад, якщо по умові завдання обмежень на
символи, що вводяться в полеEdit немає, то процедуру обробки подіїonkeypress
писати не треба, оскільки |
під час |
роботи |
програми буде використана стандартна |
(прихована від програміста) процедура обробки цієї події. |
|||
Методику створення |
функцій |
обробки |
подій розглянемо на прикладі функції |
обробки події OnClick для командної кнопки Обчислити.
Щоб приступити до створення функції обробки події, спочатку треба вибрати компонент, для якого створюється функція обробки події. Вибрати компонент можна у вікні Object Inspector або клацанням на зображенні компоненту у формі. Після цього у вікні Object Inspector потрібно вибрати вкладку Events (Події).
У лівій колонці вкладки Events (мал. 2.18) перераховані події, які може сприймати вибраний компонент (ім'я і тип компоненту вказані у верхній частині вікна). Якщо для
події визначена функція обробки, то в правій колонці поряд з ім'ям події буде виведено
ім'я цієї функції.
18
AB
|
|
|
F |
|
|
|
D |
|
|
Y |
P |
B |
Y |
|
|
|
|
||
|
|
|
|
w |
Click |
||
|
|||
|
|
w |
|
|
|
|
w. |
|
|
|
A |
Tran |
sf |
|
|
|
|
|
|
|
|
|
F Tran |
sf |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
D |
|
|
|
|
|||||
|
|
|
or |
e |
|
|
|
Y |
P |
|
|
|
|
or |
e |
||||
|
|
|
|
m |
|
B |
Y |
|
|
|
|
|
|
|
|
m |
|||
|
|
buy |
|
r |
B |
|
|
|
|
|
|
buy |
r |
||||||
|
|
|
2 |
|
|
|
|
|
|
|
2 |
||||||||
|
|
|
0 |
|
|
|
|
|
|
|
|
0 |
|||||||
|
to |
|
|
|
|
. |
A |
|
|
|
|
|
|
|
to |
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
here |
|
|
|
|
|
|
|
|
|
|
|
|
here |
|
|
|
|
||
|
|
|
|
|
Для того, щоб створити функцію |
|
|
|
|
|
Click |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
обробки події, потрібно зробити подвійне |
|
|
|
m |
|||||||||
|
|
|
|
|
m |
|
w |
|
|
|
|
|
|
|
|
||||
|
|
|
|
o |
|
|
|
|
w |
|
|
|
|
|
|
o |
|||
|
|
|
c |
|
клацання мишею у вікніObject Inspector у полі функції обробки відповідної події(мал. |
|
|
|
c |
|
|||||||||
|
|
. |
|
|
|
|
|
|
|
|
w. |
|
|
. |
|
|
|||
BBYY |
|
|
|
|
|
|
|
|
|
|
A B BYY |
|
|
|
|||||
2.19). В результаті цього відкриється вікно редактора коду, в яке буде доданий шаблон функції обробки події, а у вікні Object Inspector поряд з ім'ям події з'явиться ім'я функції обробки події, що згенерувало C++ Builder (мал. 2.19).
Мал. 2.18. На вкладці Events перераховані події, які може сприймати компонент (в даному випадку — командна кнопка)
Мал. 2.19. Шаблон функції обробки події, C++ Builder, що згенерував
C++ Builder привласнює функції обробки події ім'я, яке складається з двох частин. Перша частина імені ідентифікує форму, що містить об'єкт(компонент), для якого
19
AB
|
|
|
F |
|
|
|
D |
|
|
Y |
P |
B |
Y |
|
|
|
|
||
|
|
|
|
w |
Click |
||
|
|||
|
|
w |
|
|
|
|
w. |
|
|
|
A |
Tran |
sf |
|
|
|
|
|
|
|
|
|
F |
||
|
|
|
|
|
|
|
|
|
|
D |
|||
|
|
|
or |
e |
|
|
|
Y |
P |
|
|||
|
|
|
|
m |
|
B |
Y |
|
|
|
|
||
|
|
buy |
|
r |
B |
|
|
|
|
||||
|
|
|
2 |
|
|
|
|
|
|||||
|
|
|
0 |
|
|
|
|
|
|
||||
|
to |
|
|
|
|
. |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
here |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Click |
||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
створена процедура обробки події. Друга частина імені ідентифікує сам об'єкт і подію. У |
|||||||
|
|
|
|
|
m |
|
w |
|
|
|
|||
|
|
. |
o |
|
|
|
|
w |
w. |
|
|||
|
|
|
c |
|
нашому прикладі ім'я форми— Form1 ім'я командної кнопки — Button1 а ім'я події — |
||||||||
BBYY |
|
|
|
|
|
|
|
|
|
|
A |
||
Click.
r |
|
|
|
T ansf |
|
||
|
|
or |
|
|
|
m |
|
|
|
|
e |
|
|
buy |
r |
|
|
0 |
|
|
|
|
2 |
|
to |
|
. |
here |
|
|
|
|
|
|
|
|
|
|
m |
|
|
o |
|
|
|
.c |
|
B BYY |
|
||
У вікні редактора коду між фігурними дужками можна набирати інструкції, що
реалізовують функцію обробки події.
У лістингу 2.1 приведений текст функції обробки подіїonclick для командної кнопки Обчислити. Звернете увагу на те, як представлена програма. Її загальний вигляд відповідає тому, як вона виглядає у вікні редактора коду: ключові слова виділені
напівжирним шрифтом, коментарі — курсивом (виділення виконує редактор коду). Крім того, інструкції програми набрані з відступами відповідно до прийнятих в середовищі програмістів правил хорошого стилю.
Лістинг 2.1. Проста обробка події OnClick на кнопці Обчислити void__fastcall TForml::ButtonlClick(TObject *Sender)
{
float u; // напруга float r; // опір float i; // струм
// отримати дані з полів введення u = StrToFloat(Editl->text);
r = StrToFloat(Edit2->text); // обчислити струм
i = u/r;
// вивести результат в полі влучні
Label4->Caption = "Струм : " +
FloatToStrf(i,ffgeneral,7,2)+ "А";
}
Функція Button1Click виконує розрахунок сили струму і виводить результат
розрахунку в поліLabel4. Початкові дані вводяться з полів редагуванняEdit1 і Edit2 шляхом звернення до властивості Text. Властивість Text містить рядок символів, який
ввів користувач. Щоб програма працювала правильно, користувач повинен ввести в
кожне поле редагування ціле або дробове число в правильному форматі(при введенні
дробового числа для розділення цілої і дробової частин треба використовувати кому). Оскільки поле редагування містить текст(властивість Text строкового типу), необхідно
виконати перетворення рядка в число. Цю задачу вирішує функціяStrToFloat якій як
20