Материал: методичка

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

 

перетворення рядків, введених в поля редагування, в числа і при обчисленні величини

 

 

c

 

 

 

.

 

 

 

 

 

 

 

 

w.

 

 

.

 

 

BBYY

 

 

 

 

 

 

 

 

 

 

A B BYY

 

 

 

струму. Виключення EConvertCrror виникне, якщо користувач неправильно введе числа в поля редагування: наприклад, розділив цілу і дробову частини крапкою. Виключення EZeroDivide виникне, якщо користувач задасть величину опору рівну нулю. У лістингу 2.3 приведена функція обробки події OnСlick на командній кнопці Обчислити. У функцію

включені інструкції обробки виключень.

Лістинг 2.3. Обробка виключень

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 

float u;

// напруга

float r;

// опір

float i;

// струм

//отримати дані з полів введення

//можливе виключення — помилка перетворення рядка в число

try

{

u = StrToFloat(Editl->Text);

r = StrToFloat(Edit2->Text);

}

catch (EConvertError &e)

(

ShowMessage("При введенні дробових чисел використову кому.");

return;

}

//обчислити струм

//можливе виключення — ділення на нуль

try

36

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

 

 

 

 

 

 

 

 

{

i = u/r;

}

catch (EZeroDivide &e)

{

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

 

 

 

 

 

 

 

 

ShowMessage("Величина опору не має дорівнювати нулю"); Edit2->SetFocus(); // курсор а поле Опір

return; }

// вивести результат в полі мітки

Label4->Caption = "Струм : " +

FloatToStrf(i,ffgeneral,7,3);

У приведеній функції для виведення повідомлень у разі виникнення виключень

використана функція ShowMessage, яка виводить на екран вікно з текстом і командною

кнопкою .ОК Інструкція виклику функціїShowMessage виглядає так: ShowMessage(Повідомлення);

Де повідомлення — строкова константа (текст, який треба вивести). На мал. 2.36 приведений вид вікна повідомлення, отриманого в результаті виконання інструкції:

ShowMessage("Величина опору не має дорівнювати нулю.");

Мал. 2.36. Повідомлення, виведене функцією ShowMessage

Слід звернути увагу на те, що в заголовку вікна повідомлення, що виводиться функцією ShowMessage указується назва додатку. Назва додатку задається на вкладці Application вікна Project Options. Якщо назва додатку не задана, то в заголовку буде ім'я виконуваного файлу.

Для виведення повідомлень можна використовувати функціюMessagedig.

Функція Messagedig дозволяє помістити у вікно з повідомленням один із стандартних

значків, наприклад "Увага", задати кількість і тип командних кнопок і визначити, яку з

37

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