C _Учебник_МОНУ
.pdfСередовище програмування C++ Builder |
49 |
винести на порожню форму з палітри компонентів усі потрібні компоненти для створення діалогового вікна програми;
задати на вкладці Properties (властивості) інспектора об‟єктів усі потрібні властивості для компонентів, розташованих на формі;
створити потрібні відгуки на події для розташованих на формі компонентів. Це можна зробити за допомогою вкладки Events (події) інспектора об‟єктів чи то безпосередньо з форми, клацнувши двічі по компонентові. Не можна самостійно прописувати заголовки відгуків чи вилучати автоматично створені;
у вікні редактора кодів заповнити відгуки на події кодом, а також написати текст усіх потрібних програм. Перехід поміж вікном форми і вікном редактора можна здійснити клавішею <F12>;
зберегти створений проект за допомогою команди головного меню
File/Save Project All (рис. 2.6);
Рис. 2.6. Вікна зберігання файлів проекту
запустити проект на виконання одним зі способів: натиснути клавішу <F9>, виконати команду меню Run / Run, натиснути відповідну кнопку на панелі інструментів;
якщо помилок немає, з‟явиться форма без координатної сітки. Якщо ж помилки є, то рядок з помилкою висвічуватиметься червоним кольором, а повідомлення компілятора, розташоване під вікном редактора коду, повідомить, якої саме помилки було припущено. Характерні помилки компіляції розглянуто
урозд. 15. Згадані помилки слід виправити, зберегти проект і знову запустити проект на виконання;
провести тестові розрахунки, для чого виконати відповідні дії (вводити дані, натискати потрібні кнопки тощо). Якщо при виконанні програми були виявлені алгоритмічні помилки їх, зрозуміло, слід виправити. Для довчасного припинення виконання програми, приміром, за її зависання, слід виконати ко-
манду Run / Program Reset;
доволі часто на практиці при налагодженні програми виникає потреба продивитися проміжкові результати обчислень, приміром за обчислень у циклах сум доданків. Для цього існують спеціальні “гарячі” кнопки покрокового
50 |
Розділ 2 |
виконання програми (див. табл. 2.1), дію яких можна також відтворити відповідними командами меню Run чи то функціональними клавішами клавіатури
<F7> (покрокове трасування програми із заходом до підпрограм ) і <F8>
(те саме, але без заходу до підпрограм, – ). Для переглядання результатів покрокового виконання програми слід відкрити відповідне віконце командою Run / Add Watch. Щоб покрокове виконання програми здійснювати, розпочинаючи з певної команди програми, цю команду слід позначити так званою точкою зупину (Breakpoint) за допомогою команди меню Run / Add Breakpoint чи клавішею <F5>;
після налагодження й тестового виконання програми здійснити потрібні обчислення і вийти з C++ Builder. Сеанс завершено.
Рекомендуємо взяти за правило: перед кожним запуском програми обов‟язково її зберігати.
Приклади створювання програмних проектів
Приклад 2.1 Створити програму, в якій можна буде встановлювати колір форми натисканням кнопки. Слід передбачити можливість установлення чотирьох кольорів: жовтого, синього, зеленого, червоного.
Розв‟язок. На вікно форми слід встановити такі компоненти: один надпис (Label) і чотири кнопки (Button). Окрім того, створимо ще одну кнопку для виходу з програми. Дані компоненти розташовано на палітрі компонентів на вкладці Standard (див. табл. 2.2).
Для розміщення кожного компонента на форму треба:
1)на палітрі компонентів обрати потрібний компонент (клацанням лівої кнопки по його піктограмі);
2)клацнути лівою кнопкою миші у тому місці форми, де компонент має міститися;
3)за потреби відкоригувати більш точно місце розташування та розміри компонентів і самої форми. Це можна здійснити чи то за допомогою миші, чи
задавши точні значення властивостей Top, Left, Width та Height компонентів у інспекторі об‟єктів.
Після того як ці дії повторити для розміщення всіх потрібних компонентів, форма набуде вигляду
Примітка. Зауважимо, що за потреби розміщення на формі декількох компонентів одного типу, є зручна можливість зробити це швидко, скористува-
Середовище програмування C++ Builder |
51 |
вшись таким методом. На панелі компонентів обрати потрібний компонент та утримуючи <Shift> клацнути на нього. Далі при кожному клацанні всередині форми, на ній з‟являтиметься новий компонент.
Надписи, розмір, місце розташування на формі – все це властивості (Properties) компонентів, які можна встановити за допомогою інспектора об‟єктів (Object Inspector). Як вже зазначалось, щоб змінити властивості компонента, його треба виокремити, клацнувши по компонентові лівою кнопкою миші, потім перейти до вікна інспектора об‟єктів, на закладці Properties обрати потрібну властивість і встановити її нове значення. Отже, встановимо властивості компонентів згідно до таблиці, наведеної нижче.
Ім’я |
Властивість |
Значення |
Пояснення |
|
компонента |
властивості |
|||
Button1 |
Caption |
Жовтий |
|
|
Button2 |
Caption |
Синій |
Надписи на кнопках |
|
Button3 |
Caption |
Зелений |
||
|
||||
|
|
|
|
|
Button4 |
Caption |
Червоний |
|
|
|
|
|
|
|
|
Caption |
Вихід |
Надпис на кнопці |
|
Button5 |
Height |
50 |
Висота кнопки |
|
|
Width |
170 |
Ширина кнопки |
|
|
Alignment |
taCenter |
Горизонтальне вирівнювання тексту |
|
|
AutoSize |
false |
Автоматичне змінювання розміру |
|
|
компонента заборонено |
|||
|
|
|
||
|
Caption |
"Змінення |
Текст надпису |
|
|
кольору форми" |
|||
|
|
|
||
|
|
|
|
|
Label1 |
Color |
clBlack |
Колір фону компонента |
|
|
Font->Color |
clWhite |
Колір шрифту надпису |
|
|
Font->Size |
14 |
Розмір шрифту надпису |
|
|
Height |
50 |
Висота компонента |
|
|
Layout |
tlCenter |
Вертикальне вирівнювання тексту |
|
|
Width |
400 |
Ширина компонента |
|
Form1 |
Caption |
Приклад |
Надпис на формі |
|
|
|
програми № 1 |
|
Після створення форми можна перейти до програмування. Колір форми має змінюватись при клацанні (Click) по відповідних кнопках. Для цього треба створити програми відгуків на подію OnClick для відповідних кнопок подвійним клацанням по цих кнопках. Після цього C++ Builder автоматично створить шаблон-заготовку в редакторі коду. Всі команди, які мають виконуватись при клацанні по кнопці, треба записати поміж операторних дужок { }. Програмний відгук на подію OnClick для кнопки Button1 остаточно матиме вигляд:
void __fastcall TForm1::Button1Click(TObject *Sender) { Form1->Color = clYellow;
}
52 |
Розділ 2 |
Програмний код для кнопок Button2, Button3, Button4 відрізнятиметься від вищенаведеного лише кольором. Синій колір задається як clBlue, зелений – clGreen, червоний – clRed.
Для кнопки Button5 (Вихід) програмний код міститиме команду закриття активної форми Close():
void __fastcall TForm1::Button5Click(TObject *Sender) { Close();
}
Перед запуском на виконання програмний проект слід зберегти в окремій теці командою File / SaveAll (чи то через ярлик , чи клавішами <Shift> + <Ctrl> + <S>). Внаслідок таких дій почергово з‟являться два діалогових вікна, в яких треба у власноруч створеній новій теці зберегти і Unit1 і Project1.
Для запуску проекту слід виконати команду меню Run / Run чи то натиснути на клавіатурі кнопку <F9>. Унаслідок цього має з‟явитися наведена нижче форма проекту (це означає, що програму написано без помилок).
Приклад 2.2 Створити програму, в якій зреалізувати кнопку-“втікача”, тобто кнопку, яка “втікатиме” за намагання натиснути її, окрім того, вивести поточну дату і час на форму.
Розв‟язок. Розташуємо на формі один надпис (Label), одну панель (Panel), дві кнопки (Button) і компонент таймер (Timer). Перші три компоненти містяться на палітрі компонентів на вкладці Standard (див. табл. 2.2), а компонент Timer – на вкладці System (див. табл. 2.4). Після розташування всіх компонентів форма матиме вигляд
|
|
Середовище програмування C++ Builder |
53 |
|
||
|
Задамо властивості компонентів, наведені в таблиці. |
|
|
|||
|
|
|
|
|
|
|
|
Ім’я |
Властивість |
Значення |
Пояснення |
|
|
компонента |
властивості |
|
|
|||
|
|
Caption |
Приклад |
Надпис на формі |
|
|
|
|
програми № 2 |
|
|
||
|
Form1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Height |
210 |
Висота форми |
|
|
|
|
|
|
|
|||
|
|
Width |
695 |
Ширина форми |
|
|
|
Panel1 |
Caption |
– |
Надпис на панелі |
|
|
|
Button1 |
Caption |
Натисни! |
Надпис на кнопці |
|
|
|
Button2 |
Caption |
Вихід |
Надпис на кнопці |
|
|
|
Timer1 |
Interval |
1000 |
Інтервал таймера, заданий |
|
|
|
у мілісекундах |
|
|
|||
|
|
|
|
|
|
|
|
|
Alignment |
taCenter |
Горизонтальне вирівнювання тексту |
|
|
|
|
AutoSize |
false |
Автоматичне змінювання розміру |
|
|
|
|
заборонено |
|
|
||
|
|
|
|
|
|
|
|
|
|
Спробуй |
Текст надпису |
|
|
|
|
Caption |
натиснути |
|
|
|
|
|
|
кнопку |
|
|
|
|
Label1 |
Color |
clBlue |
Колір компонента |
|
|
|
|
Font->Color |
clWhite |
Колір шрифту надпису |
|
|
|
|
Font->Size |
14 |
Розмір шрифту надпису |
|
|
|
|
Height |
50 |
Висота компонента |
|
|
|
|
Layout |
tlCenter |
Розміщення тексту по вертикалі |
|
|
|
|
Width |
500 |
Ширина компонента |
|
|
У віконці інспектора об‟єктів на вкладці подій (Events) задамо шаблон для відгуку на подію OnMouseMove (подія виникає за наведення на кнопку покажчика миші) для кнопки Button1. Для цього треба такі кроки:
1)виокремити компонент;
2)перейти до вікна Object Inspector;
3)відкрити вкладку Events;
4)двічі клацнути лівою кнопкою миші напроти назви потрібної події. Після виконання наведених чотирьох кроків C++ Builder автоматично створить шаблон-заготовку в редакторі коду. Після того як впишемо поміж операторних дужок наступний програмний код, програма відгуку набуде вигляду
void __fastcall TForm1::Button1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{ if (Button1->Left <= 0)
Button1->Left = Form1->Width - Button1->Width - 10; else Button1->Left = Button1->Left - 5; }
Отже, кнопка “втікає”, залишилось вивести дату й час на панель. Задамо для компонента Timer шаблон для події OnTimer (подія відбувається із заданим у властивості Interval інтервалом часу), в якому запишемо програмний код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ Panel1->Caption=Now().DateString() + "/" + Now().TimeString();}
54 |
Розділ 2 |
Пояснення. Функція Now() повертає поточні дату й час. Метод DateString() перетворює дату на текст, метод TimeString() – час на текст. Докладніше ці функції розглянуто в розд. 10.
Перед запуском на виконання програмний проект слід зберегти в окремій теці командою File/SaveAll (чи то через “гарячу” кнопку , чи клавішами <Shift>+<Ctrl>+<S>). Внаслідок таких дій почергово з‟являться два діалогових вікна, в яких треба у власноруч створеній новій теці зберегти і Unit1 і Project1. Для запуску проекту на виконання слід здійснити команду меню Run/Run чи
натиснути на клавіатурі кнопку <F9> чи “гарячу” кнопку . Вікно форми під час роботи проекта матиме вигляд
Приклад 2.3 Створити програму, в якій, залежно від вибору користувача, можна встановлювати колір першої чи другої панелі. Здійснити можливість змішувати кольори: задавати складові трьох основних кольорів: червоного, зеленого, синього. Надати можливість вибору дозволу/заборони змінювання певної складової кольорів.
Розв‟язок. Із вкладки Standard на вікно форми слід встановити такі компоненти: три надписи (Label), два компоненти GroupBox, дві панелі (Panel), три смуги прокручування (ScrollBar). На компонент GroupBox1 розмістимо два компоненти RadioButton, а на GroupBox2 – три компоненти CheckBox.
Після розташування всіх компонентів форма матиме вигляд
|
|
Середовище програмування C++ Builder |
55 |
|
||
|
Задамо властивості компонентів згідно таблиці, поданої нижче. |
|
|
|||
|
|
|
|
|
|
|
|
Компонент |
Властивість |
Значення властивості |
Пояснення |
|
|
|
|
|
|
|
|
|
|
Form1 |
Caption |
Приклад програми № 3 |
Надпис на формі |
|
|
|
Label1 |
Caption |
R |
Текст надпису |
|
|
|
Label2 |
Caption |
G |
Текст надпису |
|
|
|
Label3 |
Caption |
B |
Текст надпису |
|
|
|
GroupBox1 |
Caption |
Вибір панелі |
Надпис компонента |
|
|
|
Height |
90 |
Висота компонента |
|
|
|
|
|
|
|
|||
|
|
Caption |
Дозволити |
Надпис компонента |
|
|
|
GroupBox2 |
|
складову кольору |
|
|
|
|
|
Height |
90 |
Висота компонента |
|
|
|
RadioButton1 |
Caption |
Панель № 1 |
Надпис компонента |
|
|
|
Checked |
true |
Стан вибору |
|
|
|
|
RadioButton2 |
Caption |
Панель № 2 |
Надпис компонента |
|
|
|
ScrollBox1, |
Max |
255 |
Верхня межа |
|
|
|
ScrollBox2, |
прокручування |
|
|
||
|
|
|
|
|
||
|
ScrollBox3 |
Width |
550 |
Ширина смуги |
|
|
|
CheckBox1 |
Caption |
Червоний |
Надпис компонента |
|
|
|
Checked |
true |
Стан вибору |
|
|
|
|
|
|
|
|||
|
CheckBox2 |
Caption |
Зелений |
Надпис компонента |
|
|
|
Checked |
true |
Стан вибору |
|
|
|
|
|
|
|
|||
|
CheckBox3 |
Caption |
Синій |
Надпис компонента |
|
|
|
Checked |
true |
Стан вибору |
|
|
|
|
|
|
|
|||
|
Panel1 |
Caption |
Панель № 1 |
Надпис панелі |
|
|
|
Panel2 |
Caption |
Панель № 2 |
Надпис панелі |
|
|
При змінюванні позиції повзунка смуги прокручування виникатиме подія OnChange. У нашому прикладі треба, щоб у відгук на цю подію комп‟ютер змінював колір панелі Panel відповідно до вибору перемикача RadioButton. Новий колір визначається всіма трьома смугами прокручування: позиція повзунка кожної впливає на кількість відповідної складової частини кольору у результуючому кольорі при змішуванні. Для змішування трьох базових кольорів використовується функція RGB (Red-Green-Blue), параметрами якої є позиції повзунків кожного з трьох кольорів.
Задамо шаблон для відгуку на подію OnChange для смуги прокручування ScrollBar1. Коли виконаємо чотири кроки, наведені у прикладі 2.2, матимемо шаблон у редакторі коду. Впишемо поміж операторних дужок такий програмний код:
void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { if(RadioButton1->Checked)
Panel1->Color = RGB(ScrollBar1->Position, ScrollBar2->Position,ScrollBar3->Position);
else Panel2->Color = RGB(ScrollBar1->Position, ScrollBar2->Position,ScrollBar3->Position);
}
56 |
Розділ 2 |
Програми для відгуку на подію OnChange для компонентів ScrollBar1 та ScrollBar2 є аналогічні, але щоб не писати зайвого коду, зазначимо для ScrollBar2 вже наявну програму-відгук ScrollBar1Change. Для цього:
виокремимо компонент ScrollBar2;
у вікні Object Inspector перейдемо до вкладки Events;
оберемо для події OnChange зі списку ScrollBar1Change:
Натискаємо стрілочку
Обираємо потрібний відгук
Аналогічно встановимо для смуги прокручування ScrollBar3 програмувідгук для події OnChange.
Щоб дозволити чи заборонити змінення будь-якої складової кольорів, на формі є три відповідні “прапорці” (CheckBox). Якщо “прапорець” обрано (властивість Checked), то змінювати складову кольору можна, в іншому разі – ні. Стан “прапорця” змінюється за його натискання. Отже, для компонентів CheckBox1, CheckBox2, CheckBox3 створимо програми опрацювання події OnClick, в яких запишемо:
для CheckBox1: ScrollBar1->Enabled = CheckBox1->Checked; для CheckBox2: ScrollBar2->Enabled = CheckBox2->Checked; для CheckBox3: ScrollBar3->Enabled = CheckBox3->Checked;
Після написання коду програми слід зберегти (File/SaveAll ) і запустити (<F9>) проект.
Вигляд форми під час роботи проекту:
Середовище програмування C++ Builder |
57 |
2.1.4 Створення проектів з декількома формами
За замовчуванням проект містить файли для однієї форми та вихідного коду одного модуля. Однак більшість більш-менш серйозних проектів містять декілька форм і модулів. Щоби створити новий модуль чи то форму у проекті, треба скористатись командою File / New… та обрати відповідний ярличок створюваного елемента проекту у вікні New Items (див. далі рис. 2.7).
Крім стандартної форми на закладці Forms цього вікна пропонується декілька різновидів створюваних форм:
Більше того, на закладці Dialogs існують зручні засоби створення формдіалогів з готовим інтерфейсом:
Крім команди File / New… для створення нових форм чи модулів проекту можна скористатись відповідними “гарячими” кнопками або відкрити командою View / Project Manager менеджер проектів, в якому скористатись кнопкою New. Також вікно менеджера проектів надає можливість за потреби видалити елемент проекту (проект, форму, модуль тощо) за допомогою кнопки Remove.
Залучити заголовний файл нової форми чи модуля можна виконавши команду File / Include Unit Hdr чи то самостійно прописавши директиву include.
Коли у подальшій роботі виникає потреба відкрити файл долученого модуля, можна скористатись клавішами <Ctrl> + <Enter>, попередньо встановив-
58 |
Розділ 2 |
ши курсор на ім‟я цього модуля у директиві include. Аналогічну дію можна виконати командою контекстного меню Open File at Cursor.
Нагадаємо, що комбінацією <Сtrl> + <F6> чи то командою контекстного меню редактора Open Source/Header File користуються для перемикання поміж cppта h-файлами, а для переходу поміж відповідною формою та її cppфайлом можна скористатись клавішею <F12>.
При застосуванні клавіш <Shift> + <F12> відкривається вікно зі списком форм проекту для зручного перемикання поміж ними особливо при великій кількості форм у проекті.
Оскільки вікно редактора коду при створенні програмного проекту потребує на екрані значного місця, то воно, зазвичай, перекриває собою більш дрібні вікна IDE, приміром вікно інспектора об‟єктів, вікно treeview, редактор форми чи то інші. Щоби побачити “приховані” вікна, можна скористатись поєднанням клавіш <Alt> + <0> для виведення списку відкритих вікон IDE.
Якщо виконати команду Project / Options, відкриється діалогове вікно різноманітних опцій проекту, в якому можна обрати головну форму проекту, визначити, які форми будуть створюватися динамічно, задавати параметри компіляції модулів і компонування тощо.
Приклад програмного проекту з трьома формами, у тому числі форми AboutBox, наведено у прикладі 9.3.