ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.09.2024
Просмотров: 47
Скачиваний: 0
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 |
|
|
|
|
||
|
|
|
|
|
кнопок натиснув користувач. На мал. 2.37 приведено вікно, виведене в |
|
|
|
|
|
Click |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
результаті |
|
|
|
|
m |
||||||||
|
|
|
|
|
m |
|
w |
|
|
|
|
|
|
|
|
||||
|
|
|
|
o |
виконання інструкції |
|
|
|
w |
w. |
|
|
|
|
|
o |
|||
|
|
|
c |
|
|
|
|
|
|
|
|
|
|
c |
|
||||
|
|
. |
|
|
|
|
|
|
|
|
|
|
. |
|
|
||||
BBYY |
|
|
|
|
|
|
|
|
|
|
A B BYY |
|
|
|
Messagedig("Файл c:\xtemp\\test.txt буде видалений.",
mtwarning, Tmsgdlgbuttons() « mbok « mbcancel, 0);
Мал. 2.37. Приклад вікна повідомлення
Значення функції Messagedig — число, перевіривши значення якого можна визначити, вибором якої командної кнопки був завершений діалог. У загальному вигляді
звернення до функції Messagedig виглядає так:
Вибор:= Messagedig(Повідомлення, Тип, Кнопки, Контекст справки)
де:
§повідомлення — текст повідомлення;
§Тип — тип повідомлення. Повідомлення може бути інформаційним, застережливим або повідомленням про критичну помилку. Кожному типу повідомлення
відповідає певний значок. Тип повідомлення задається іменованою константою
(таблиця. 2.13);
§кнопки — кнопки, що відображаються у вікні повідомлення. Задаються операцією включення в множину елементів — констант (таблиця. 2.14).
§контекст справки — параметр, який визначає розділ довідкової інформації, який з'явиться на екрані, якщо користувач натисне клавішу<F1>. Якщо виведення
довідкової інформації не передбачене, то значення параметра має дорівнювати нулю.
Таблиця 2.13. Константи, що визначають тип повідомлення
|
|
|
|
|
|
|
|
Константа |
|
Тип повідомлення |
|
Значок |
|
|
|
|
|
|
|
|
|
MtWarning |
|
Увага |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MtError |
|
Помилка |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mtlnformation |
|
Інформація |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MtConfirmation |
|
Підтвердження |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MtCustom |
|
Звичайне |
|
Без значка |
|
|
|
|
|
|
|
|
38
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 |
|
|||
|
|
|
|
|
|
|
Таблиця 2.14. Константи, що визначають кнопки у вікні повідомлення
Константа |
|
Кнопка |
|
Константа |
|
Кнопка |
mbYes |
|
|
|
|
|
Abort |
|
Yes |
|
mbAbort |
|
||
mbNo |
|
|
|
|
|
Retry |
|
No |
|
mbRetry |
|
||
mbOk |
|
|
|
|
|
Ignore |
|
OK |
|
mblgnore |
|
||
mbCancel |
|
|
|
|
|
All |
|
Cancel |
|
mbAll |
|
||
mbHelp |
|
|
|
|
|
|
|
Help |
|
|
|
|
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 |
|
|||
|
|
|
|
|
|
|
Окрім приведених констант можна використовувати константиmbokcancel, |
|
|||
mbyesnocancel іmbabortretryignore. Ці |
константи |
визначають |
найбільш |
часто |
використовувані в діалогових вікнах комбінації командних кнопок. |
|
|
Значення, повертане функцією Messagedig (таблиця. 2.15)дозволяє визначити, яка з командних кнопок була натиснута користувачем.
Таблиця 2.15. Значення функції Messagedlg
|
|
|
|
|
|
Значення функції Messagedlg |
|
Діалог завершений натисненням кнопки |
|
|
|
|
|
|
|
mrAbort |
|
Abort |
|
|
|
|
|
|
|
mrYes |
|
Yes |
|
|
|
|
|
|
|
mrOk |
|
Ok |
|
|
|
|
|
|
|
mrRetry |
|
Retry |
|
|
|
|
|
|
|
mrNo |
|
No |
|
|
|
|
|
|
|
mrCancel |
|
Cancel |
|
|
|
|
|
|
|
mrlgnore |
|
Ignore |
|
|
|
|
|
|
|
mrAll |
|
All |
|
|
|
|
|
|
2.15 Внесення змін
Після декількох запусків програми "Сила струму" виникає бажання удосконалити
програму, внести до неї зміни. Наприклад, такі, щоб після введення напруги в результаті натиснення клавіші <Enter> курсор переходив в полі Опір, а після введення
опору в результаті натиснення цієї ж клавіші виконувався розрахунок. Крім того, було б непогано, щоб користувач міг вводити в поля редагування тільки числа. Щоб внести
зміни до програми, потрібно запустити C++ Builder і відкрити відповідний проект. Зробити це можна звичайним способом, вибравши в меню File команду Open Project.
Можна також скористатися командою Reopen з меню File. При виборі команди Reopen відкривається список проектів, над якими працював програміст останнім часом. У
лістингу 2.4 приведена програма "Сила струму", до якої внесені зміни: додані функції
39
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 |
|
|
|
|
||
|
|
|
|
|
обробки |
подій OnKeyPress для |
компонентів Edit1 і |
Edit2. Щоб додати |
|
|
|
|
|
Click |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
в програму |
|
|
|
m |
||||||||||||
|
|
|
|
|
m |
|
|
|
|
w |
|
|
|
|
|
|
|
|
||||
|
|
|
|
o |
функцію |
обробки події, треба у |
вікніObject Inspector |
вибрати компонент, |
|
|
|
w |
|
|
|
|
|
|
o |
|||
|
|
|
c |
|
для якого |
|
|
c |
|
|||||||||||||
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
w. |
|
|
. |
|
|
|||
BBYY |
|
|
|
|
|
|
|
|
|
|
|
|
|
A B BYY |
|
|
|
потрібно створити функцію обробки події, на вкладці Events вибрати подію і зробити подвійне клацання в полі поряд з ім'ям події. C++ Builder сформує шаблон функції обробки події. Після цього можна вводити інструкції, що реалізовують функцію.
Лістинг 2.4. Функції обробки подій на компонентах форми програми "Сила струму"
// клацання на кнопці Обчислити
void__fastcall TForm1::Button1Click(TObject *Sender)
{
float u; // напруга float r; // опір float i; // струм
// перевіримо, чи введені дані в поля Напруга і Опір
if ( ((Edit1->Text).Length() == 0) || ((Edit2->Text).Length() ==0))
{
Messagedlg("Haдo ввести напругу і опір" mtlnformation, Tmsgdlgbuttons() << mbok, 0); if ((Editl->Text).Length() == 0) Edit1->SetFocus(); // курсор в полі Напруга else
Edit2->SetFocus(); // курсор в полі Опір return; }; // отримати дані з полів введення
u = StrToFloat(Editl->Text);
r = StrToFloat(Edit2->Text); // обчислити силу струму try
{
i = u/r;
}
catch (Ezerodivide &e)
40
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 |
|
|||
|
|
|
|
|
|
|
{
Showmessage("Величина опору не має дорівнювати нулю"); Edit2->setfocus(); // курсор в полі Опір
return;
}
// вивести результат в полі Label4 Label4->caption = "Струм : " + Floattostrf(i,ffgeneral,7,2)+ " А";
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 |
|
|||
|
|
|
|
|
|
|
}
// натиснення клавіші в полі Напруга
void __fastcall Tforml::editlkeypress(Tobject *Sender, char Skey)
{
//коду заборонених клавіш замінимо нулем, в результаті
//символи цих клавіш в полі редагування не з'являться
//Кеу — код натиснутої клавіші
//перевіримо, чи є символ допустимим
if ( ( Кеу >= '0') && ( Кеу <= '9'})
//цифра return;
//Глобальна змінна Decimalseparator
//містить символ, використовуваний як роздільник
//при записі дробових чисел
if ( Кеу == Decimalseparator)
{
if ( (Editl-xtext).Pos(Decimalseparator) != 0)
Кеу =0; // роздільник вже введений return;
}
41