Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / Лабораторні роботи / Лабораторна робота 11.doc
Скачиваний:
0
Добавлен:
30.05.2020
Размер:
72.7 Кб
Скачать

Компонент-кнопка BitBtn

Компонент BitBtn розташований на сторінці Additonal і є різновидом стандартної кнопки Button. Її відмінність - наявність зображення на поверхні, визначувана властивістю Glyph. Крім того, властивість Kind задає один з 11 стандартних різновидів кнопок, натиснення будь-якої з них, окрім bkCustom і bkHelp, закриває вікно і повертає в програму результат mr*** (наприклад, bkOk - mrOk). Кнопка bkClose закриває головне вікно і завершує роботу програми.

Обробка подій

Про усі події, що відбуваються в системі, такі, як створення форми, натиснення кнопки миші або клавіатури і так далі, ядро Windows інформує вікна шляхом посилки відповідних повідомлень. Середовище Builder дозволяє приймати і обробляти більшість таких повідомлень. Кожна компонента містить обробники повідомлень на сторінці Events інспектора об'єктів.

Для створення обробника події необхідно виділити потрібну компоненту, далі на сторінці Events вибрати обробник і подвійним клацанням кнопкою миші у білому (порожньому) віконці в текст програми буде вставлена відповідна функція. Наприклад, виділивши компоненту Form1 і вибравши обробник OnActivate, буде вставлена функція .FormActivate(.){ }.

Кожна компонента має свій набір обробників подій, проте деякі з них властиві більшості компонент. Розглянемо найбільш часто вживані події:

OnActivate - форма отримує цю подію при активації;

OnCreate - виникає при створенні форми (Form), в обробнику події задаються дії, які повинні відбуватися у момент створення форми;

OnKeyPress - виникає при натисненні клавіші клавіатури, параметр Key типу WORD містить ASCII -код натиснутої клавіші (Enter має код 13, Esc - 27) і зазвичай використовується, коли потрібна реакція на натиснення однієї з клавіш;

OnKeyDown - виникає при натисненні клавіші клавіатури, обробник цієї події отримує інформацію про натиснуту клавішу і стан клавіш Shift, Alt і Ctlr, а також про натиснуту кнопку миші;

OnKeyUp - є парною подією для OnKeyDown і виникає при відпуску раніше натиснутої клавіші;

OnClick - виникає при натисненні кнопки миші в області компоненти, а OnDblClick - при подвійному клацанні кнопкою миші в області компоненти.

7.3. Приклад виконання завдання

Написати програму підрахунку числа слів в рядку, що містить пропуски.

7.3.1. Створення віконного застосування

Для введення рядків і роботи з ними використовувати компоненту ComboBox. Введення рядка закінчувати натисненням клавіші Enter, для виходу використовувати кнопку «Close». Панель діалогу з результатами програми може мати вигляд, представлений на мал. 7.1.

У тексті програми приведемо тільки функції-обробники:

//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)

{

Form1 ->ComboBox1 ->SetFocus(); // Передача фокусу ComboBox1

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift)

{

if (Key == 13) {

ComboBox1 ->Items ->Add(ComboBox1 ->Text);

// Рядок з вікна редагування заноситься в ComboBox1

ComboBox1 ->Text=""; // Очищення вікна

}

}

//------------ Обробка натиснення кнопки миші --------------------

void __fastcall TForm1::ComboBox1Click(TObject *Sender)

{

int n, i, nst;

nst = ComboBox1 ->ItemIndex; // Визначення номера рядка

String st = ComboBox1 ->Items ->Strings[nst]; // Запис вибраного рядка st

if (st[1] != ' ') n = 1; // Тут і нижче ' ' - пропуск

else n = 0;

for(i=1; i<st.Length(); i++) // Перегляд символів рядка st

if(st[i] == ' ' && st[i+1] != ' ') n++;

Edit1 ->Text = IntToStr(n); // Виведення числа слів в Edit1

}

Мал. 7.1