C _Учебник_МОНУ
.pdfСередовище програмування C++ Builder |
39 |
у застосуванні компоненти з різних сторінок палітри компонентів, на більшість з яких є посилання у наступних розділах підручника.
Таблиця 2.4
Деякі додаткові компоненти
Кнопка |
Назва |
Призначення |
Сторінка |
|
|
|
|
|
TabControl |
Сторінки із закладками, котрі може обирати |
Win32 |
|
(Сторінка |
користувач. Кількість закладок і надписи |
|
|
із закладкою) |
на них задаються властивістю Tabs. |
|
|
|
Автоматичне оновлення вмісту сторінок |
|
|
|
при перемиканні не відбувається, тому |
|
|
|
програміст має робити це самостійно |
|
|
PageControl |
Сторінки із закладками для економії місця, |
Win32 |
|
(Багато- |
якими можна керувати. Створення нових |
|
|
сторінкове |
сторінок, редагування та вилучення |
|
|
вікно) |
виконується через контекстне меню |
|
|
|
клацанням правої кнопки миші та обранням |
|
|
|
відповідної команди. Властивість Caption |
|
|
|
кожної сторінки задає надпис на закладці |
|
|
ImageList |
Список зображень однакового розміру |
Win32 |
|
(Список |
форматів BMP та ICO. Долучення нових зо- |
|
|
зображень) |
бражень і редагування списку зображень |
|
|
|
здійснюється через |
|
|
|
відповідне вікно, відкриване подвійним |
|
|
|
клацанням по компонентові |
|
|
RichEdit |
Багаторядкове вікно для форматування |
Win32 |
|
(Вікно |
тексту в форматі RTF, яке дозволяє |
|
|
редактора |
задавати різне форматування різних |
|
|
у форматі RTF) |
фрагментів тексту |
|
|
DateTimePicker |
Календар, який розкривається і дозволяє |
Win32 |
|
(Введення |
обирати дату чи час. Властивості Dateй Time |
|
|
дати і часу) |
містять значення дати й часу відповідно. |
|
|
|
Властивість Kind дозволяє обрати режим |
|
|
|
роботи чи то з датою, чи з часом |
|
|
MonthCalendar |
Дозволяє обирати дату з календаря. |
Win32 |
|
(Введення дати) |
Властивість Date містить обрану дату |
|
|
|
|
|
|
ProgressBar |
Прямокутний індикатор, який зафарбовується |
Win32 |
|
(Індикатор) |
зліва направо заданим кольором у міру |
|
|
|
виконування певного процесу в програмі. |
|
|
|
Властивості Min та Мах задають інтервал |
|
|
|
значень індикатора. Властивість Step задає |
|
|
|
крок змінювання значень позиції індикатора |
|
|
|
(властивість Position) |
|
|
40 |
|
Розділ 2 |
|
|
|
|
|
Продовження табл. 2.4 |
||
|
|
|
|
||
Кнопка |
Назва |
Призначення |
Сторінка |
||
|
|
|
|
|
|
|
|
TrackBar |
Шкала з позначками й регулятором поточної |
Win32 |
|
|
|
(Полоса з |
позиції (варіант лінійки прокручування). |
|
|
|
|
регулятором) |
Властивості Minта Махзадають інтервал значень |
|
|
|
|
|
шкали, причому властивість Position показує |
|
|
|
|
|
поточну позицію регулятора всередині заданого |
|
|
|
|
|
інтервалу. Кількість зображених позначок |
|
|
|
|
|
специфікує властивість Frequency. |
|
|
|
|
|
Те, на скільки позначок має пересунутись |
|
|
|
|
|
регулятор, коли користувач клацне мишею на |
|
|
|
|
|
самій шкалі (по обидва боки від регулятора) чи |
|
|
|
|
|
натисне клавіші PageUp та PageDown, задає |
|
|
|
|
|
значення властивості PageSize. Вигляд шкали |
|
|
|
|
|
можна змінювати за допомогою властивостей |
|
|
|
|
|
TickStyle та TickMarks |
|
|
|
|
StatusBar |
Набір панелей у вигляді смуги стану у стилі |
Win32 |
|
|
|
|
Windows. Зазвичай ця смуга розміщується внизу |
|
|
|
|
|
форми. Властивість SimplePanelвизначає |
|
|
|
|
|
наявність декількох панелей. Значення true цієї |
|
|
|
|
|
властивості означає, що уся смуга є єдиною |
|
|
|
|
|
панеллю, текст якої задається властивістю |
|
|
|
|
|
SimpleText. Значення false зазначає набір |
|
|
|
|
|
панелей, які задаються властивістю Panels. |
|
|
|
|
|
Текст таких панелей задається командою: |
|
|
|
|
|
StatusBar1->Panels->Items[0]->Text="текст"; |
|
|
|
|
|
де 0 – номер самої першої панелі |
|
|
|
|
ToolBar |
Контейнер для створення інструментальних |
Win32 |
|
|
|
|
панелей. Для розміщення на панелі інструментів |
|
|
|
|
|
кнопок ToolButton треба з контекстного меню |
|
|
|
|
|
обрати команду New Button (Нова кнопка) чи |
|
|
|
|
|
NewSeparator (Новий роздільник). Піктограми |
|
|
|
|
|
на кнопках можна задавати зі списку зображень |
|
|
|
|
|
компонента ImageList |
|
|
|
|
Timer |
Використовується для програмування дій, які |
System |
|
|
|
(Таймер) |
мають виконуватись з певною періодичністю чи |
|
|
|
|
|
то за заданого відтинку часу. Властивість |
|
|
|
|
|
Interval задає частоту, з якою має відбуватися |
|
|
|
|
|
подія Timer, значення 1000 цієї властивості |
|
|
|
|
|
відповідає одній секунді |
|
|
|
|
OleContainer |
OLE-контейнер для вбудовування і розміщення |
System |
|
|
|
(контейнер |
на формі OLE-об‟єктів, створених в інших |
|
|
|
|
OLE) |
програмних додатках |
|
|
|
|
Середовище програмування C++ Builder |
41 |
|
|
|
|
|
Закінчення табл. 2.4 |
||
|
|
|
|
||
Кнопка |
Назва |
Призначення |
Сторінка |
||
|
|
|
|
|
|
|
|
OpenDialog |
Виклик діалогового вікна Windows |
Dialogs |
|
|
|
(Відкрити файл) |
“Відкрити файл”. Властивість FileName |
|
|
|
|
|
зберігає ім‟я файла, а властивість |
|
|
|
|
|
InitialDir – обраний шлях до теки |
|
|
|
|
|
з файлом |
|
|
|
|
SaveDialog |
Виклик діалогового вікна “Зберегти |
Dialogs |
|
|
|
(Зберегти файл) |
файл”. Властивості є подібні |
|
|
|
|
|
до компонента OpenDialog |
|
|
|
|
OpenPictureDialog |
Реалізує спеціальне вікно вибору |
Dialogs |
|
|
|
(Відкрити рисунок) |
графічних файлів. Властивості є подібні |
|
|
|
|
|
до компонента OpenDialog |
|
|
|
|
SavePictureDialog |
Реалізує спеціальне вікно зберігання |
Dialogs |
|
|
|
(Зберегти рисунок) |
графічних файлів. Властивості є подібні |
|
|
|
|
|
до компонента OpenDialog |
|
|
Усі компоненти можна поділити на дві групи: видимі (візуальні) і невидимі (невізуальні). Під час виконання програми візуальні компоненти (наприклад, кнопки Button, надписи Label тощо) видно на формі точно так само, як і при проектуванні форми. Невізуальні компоненти (наприклад, діалоги роботи із файлами OpenDialog та SaveDialog, системний таймер Timer, компоненти для роботи з базами даних: Table, DataSource, Query, ADOConnection та багато ін-
ших) є видимі як піктограми на формі під час проектування, але їх не видно під час виконання. Ці компоненти мають певну функціональність (наприклад, забезпечують доступ до даних, викликають стандартні діалоги Windows та ін.).
Якщо обрати будь-який компонент з палітри та розмістити на формі, його властивості та події автоматично покаже інспектор об‟єктів.
Вікно інспектора об’єктів (Object Inspector) розташоване ліворуч вікна форми. Інспектор об‟єктів забезпечує простий і зручний інтерфейс для змінювання значень властивостей компонентів і керування подіями, на які реагують об‟єкти. Інспектор об‟єктів має дві сторінки: Properties (властивості) і Events (події). Властивості компонентів (назва, колір, розмір тощо) задаються на сторінці Properties, а події (натискання клавіш миші чи її рух, натискання клавіш клавіатури, вибір пункту меню тощо) на сторінці Events у вікні Object Inspector (рис. 2.5). Для того щоб у вікні інспектора об‟єктів було відображено атрибути певного об‟єкта, слід виокремити цей об‟єкт, клацнувши на ньому лівою кнопкою миші, або обрати потрібний об‟єкт із наявних на формі зі списку у верхній частині інспектора об‟єктів.
Сторінка властивостей Properties
На цій сторінці (рис. 2.5, а) відображаються для виокремленого об‟єкта основні властивості та їхні значення. Властивості є атрибутами компонента, що визначають його зовнішній вигляд і поведінку.
42 |
Розділ 2 |
С е л е к т о р о б ‟ є к т і в |
|
Сторінки властивостей і подій
Редаговані властивості компонента Доступні для компонента події
а |
б |
Рис. 2.5. Вікна інспектора об‟єктів:
а – сторінка властивостей Properties; б – сторінка подій Events
Значення властивостей можна змінювати. Приміром, якщо клацнути на формі, а тоді обрати її властивість Caption, то у вікні зі значенням цієї властивості Form1 можна ввести новий текст, який і стане заголовком форми. Властивість Color має список можливих значень, який можна відкрити, клацнувши на кнопці у вікні цієї властивості. Якщо обрати колір clRed, то форма чи виокремлений об‟єкт набуде червоного кольору. Усю палітру кольорів можна побачити, двічі клацнувши мишею у полі значення кольору.
Деякі з властивостей мають складну структуру. Клацання миші у полі значень властивості призводить до появи у цьому полі кнопки . Після натиснення цієї кнопки відкриється діалогове вікно, котре і дозволяє встановлювати нові значення цієї властивості. Наприклад, властивість Font дозволяє задавати атрибути тексту: шрифт, розмір, стиль та колір літер.
Усі властивості мають за замовчуванням певні значення при створенні компонента. Приміром, для компонента Label властивість AutoSize (Автомасштаб) має значення true (істина) без додаткових вказівок. Це означає, що розмір компонента підлаштовується під розмір його вмісту. Але можна задавати потрібний розмір за допомогою властивостей Width (довжина) та Height (висота), якщо при цьому змінити значення властивості AutoSize на false(хибність).
Якщо на формі треба розмістити кілька однотипних компонентів, то за замовчуванням їхніми іменами буде назва відповідного компонента, наприкінці якого зазначається його порядковий номер на формі. Наприклад, Button1,
Button2, … чи Memo1, Memo2, …
Інспектор об‟єктів відображає опубліковані (published) властивості компонентів. Крім published-властивостей, компоненти можуть і найчастіше мають загальні (public), опубліковані властивості, які доступні лише під час виконання проекту. Наприклад, для компонента StringGrid властивість звертання до комірок Cells є доступною лише програмно. Задавати нові значення властивостям можна не лише під час проектування форми, а й програмно, написавши відповідний код для видозміни властивостей компонента під час виконання проекту.
Середовище програмування C++ Builder |
43 |
Сторінка подій Events
Ця закладка вікна інспектора об‟єктів показує список подій, розпізнаваних компонентом, і дозволяє визначати реакцію виокремленого компонента на ту чи іншу подію (програмування для операційних систем з графічним користувальницьким інтерфейсом, зокрема, для різних версій Windows передбачає опис реакції проекту на ті чи інші події, а сама операційна система займається постійним опитуванням комп‟ютера з метою виявлення настання якоїсь події). Кожен компонент має свій власний набір можливих подій.
Найбільш поширеними у застосуванні подіями є такі:
OnClick – клацання лівою кнопкою миші на об‟єкті;
OnDblClick – подвійне клацання лівою кнопкою миші на об‟єкті;
OnChange – внесення змін до вмісту об‟єкта;
OnCreate – подія відбувається при створенні форми;
OnActivate – подія відбувається при активації форми;
OnMouseDown – натиснення кнопки миші над компонентом;
OnMouseUp – відпускання кнопки миші над компонентом;
OnMouseMove – переміщення миші над компонентом;
OnKeyPress – натиснення символьної клавіші клавіатури;
OnKeyDown – натиснення будь-якої клавіші клавіатури;
OnKeyUp – відпускання будь-якої клавіші клавіатури;
OnEnter – подія відбувається в момент набуття компонентом фокуса;
OnExit – подія відбувається в момент втрати компонентом фокуса;
OnStartDrag – подія відбувається, коли користувач розпочинає перетягування компонента;
OnDragDrop – подія відбувається в момент відпускання перетягуваного компонента над даним компонентом;
OnEndDrag – подія відбувається в момент завершення перетягування компонента.
Назви подій наведені у лівій колонці сторінки Events. Для того, щоби створити функцію відгуку на певну подію, треба обрати на формі за допомогою миші необхідний компонент, відкрити сторінку подій інспектора об‟єктів і двічі клацнути лівою клавішею миші на колонку поруч з цією подією. При цьому C++ Builder автоматично згенерує шаблон функції відгуку на подію, її прототип запише до відповідного заголовного файла, відкриє редактор коду, в якому покаже текст порожньої функції, і зпозиціонує курсор усередині її операторних дужок { ... } для подальшого введення програмного коду. Наприклад, для події OnClick компонента Button1, розміщеного на формі Form1, шаблон відповідної функції в Unit1.cpp матиме вигляд:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
}
a її заголовок в Unit1.h:
void __fastcall Button1Click(TObject *Sender);
44 |
Розділ 2 |
Багато властивостей і методів є притаманні більшості компонентів, приміром: ім‟я, розміри, доступність, видимість тощо. У табл. 2.5 наведено найчастіше уживані властивості, а в табл. 2.6 – методи функціонування компонентів.
Що стосується методів, вони є функціями, пов‟язаними з компонентами, і по суті є частиною цих об‟єктів. Виклик методів і звертання до властивостей компонентів здійснюють за допомогою операції вибору елемента “->”, наприклад:
Edit1->Show();
|
|
Таблиця 2.5 |
|
|
Основні властивості стандартних компонентів |
||
|
|
|
|
Властивість |
Пояснення |
Компоненти |
|
з такою властивістю |
|||
|
|
||
AutoSize |
Автомасштаб: якщо встановити в 1 (true), |
Label, Edit, Panel, |
|
|
розмір компонента автоматично адаптується |
Image та інші |
|
|
до розміру символів тексту |
|
|
Caption |
Надпис |
Button, Labelта інші |
|
Color |
Колір компонента |
Більшість видимих |
|
Count |
Кількість рядків списку |
Memo, ListBox |
|
Enabled |
Доступність до компонента. Визначає, чи |
Усі видимі |
|
|
реагує компонент на події, пов‟язані |
|
|
|
з мишею, клавіатурою і таймером. Значення |
|
|
|
false блокує доступ, а сам компонент |
|
|
|
набуває переважно більш світлого кольору |
|
|
Font |
Параметри шрифта |
Button, Label, Edit, |
|
|
|
Memo та інші |
|
Glyph |
Зображення у форматі bmp, яке можна |
BitBtn, SpeedButton |
|
|
винести на компонент |
|
|
Height |
Висота компонента в пікселях |
Усі видимі |
|
|
|
|
|
ItemIndex |
Номер обраного елемента списку. |
ListBox |
|
|
Нумерація розпочинається з 0 |
|
|
Items |
Список можливих значень списку |
ListBox, ComboBox, |
|
|
|
MainMenu та інші |
|
Left |
Розміщення лівого краю компонента |
Усі видимі |
|
|
відносно форми в пікселях. Верхній лівий |
|
|
|
кут форми має координати (0, 0) |
|
|
Lines |
Рядки вікна для введення чи редагування |
Memo, RichEdit |
|
|
тексту. Нумерація рядків розпочинається з 0 |
|
|
Name |
Ім‟я компонента |
Усі |
|
ScrollBars |
Встановлення лінійок прокручування |
Memo, StringGrid |
|
|
у вікні Memo. Можливі значення цієї |
та інші |
|
|
властивості: None, Vertical, Gorizontal, |
|
|
|
Both (відсутні, вертикальна, горизонтальна, |
|
|
|
обидві) |
|
|
|
|
|
Середовище програмування C++ Builder |
45 |
|
|
|
|
|
|
|
|
Закінчення табл. 2.5 |
|
|
|
|
|
|
|
|
|
Властивість |
|
|
Пояснення |
Компоненти |
|||
|
|
з такою властивістю |
|||||
|
|
|
|
|
|
||
|
Sorted |
|
Якщо встановити в 1 (true), усі елементи |
ListBox, ComboBox |
|||
|
|
|
списку буде відсортовано за зростанням |
|
|
||
|
|
|
|
|
|
|
|
|
Text |
|
Текст у вікні редагування |
Edit, ComboBoxта інші |
|||
|
Top |
|
Розміщення верхнього краю компонента |
Усі видимі |
|||
|
|
|
відносно форми в пікселях. Верхній лівий |
|
|
||
|
|
|
кут форми має координати (0, 0) |
|
|
||
|
|
|
|
|
|
|
|
|
Visible |
|
Видимість: якщо встановити в 0 (false), |
Усі видимі |
|||
|
|
|
компонент стане невидимим на формі |
|
|
||
|
|
|
|
|
|
|
|
|
Width |
|
Ширина компонента в пікселях |
Усі видимі |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблиця 2.6 |
|
|
|
|
Основні методи стандартних компонентів |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для яких |
|
|
Метод |
|
Пояснення |
|
компонентів |
||
|
|
|
|
|
|
застосовується |
|
int Add |
|
Долучення рядка Sу кінець списку. |
|
Memo, ListBox, |
|||
(AnsiString S) |
Метод повертає індекс цього рядка, |
|
RadioGroup, |
||||
|
|
|
|
наприклад: |
|
RichEdit та інші |
|
|
|
|
|
int n=Memo1->Lines->Add(S); |
|
|
|
|
|
|
|
|
|||
Clear() |
|
Очищення вікна |
|
Edit, Memo та інші |
|||
Delete(int n) |
Вилучення рядка з номером n, |
|
Memo, ListBox, |
||||
|
|
|
|
наприклад: |
|
RadioGroup, |
|
|
|
|
|
Memo1->Lines->Delete(n); |
|
RichEdit та інші |
|
Hide() |
|
Приховання компонента |
|
Більшість видимих |
|||
Insert(int n, |
Вставлення рядка S у позицію n, |
|
Memo, ListBox, |
||||
AnsiString S) |
наприклад: |
|
RadioGroup, |
||||
|
|
|
|
Memo1->Lines->Insert(n, S); |
|
RichEdit та інші |
|
LoadFromFile |
Вивантаження вмісту із зазначеного |
Memo, RichEdit та інші |
|||||
(AnsiString fname) |
файла до поля компонента |
|
|
|
|||
SaveToFile |
|
Зберігання вмісту компонента |
|
Memo, RichEdit та інші |
|||
(AnsiString fname) |
у файлі із зазначеним ім‟ям fname |
|
|
|
|||
SelectAll() |
|
Виокремлення всього тексту |
|
Memo, RichEdit та інші |
|||
SetFocus() |
|
Встановлення фокуса (курсора) |
|
Більшість видимих |
|||
|
|
|
|
на цей компонент |
|
|
|
SetText(char *S) |
Долучення тексту S у поточну |
|
Memo та інші |
||||
|
|
|
|
позицію курсора, наприклад: |
|
|
|
|
|
|
|
Memo1->Lines->SetText(S); |
|
|
|
|
|
|
|
|
|||
Show() |
|
Показ прихованого компонента |
|
Більшість видимих |
46 Розділ 2
2.1.2 Структура С++ Builder-проекту
Програма на С++ складається з оголошень (змінних, констант, типів, класів, функцій) та опису функцій. З-посеред функцій головною є функція main для консольних додатків (яка працює з WIN32) чи то WinMain – для додатків Windows. Головна функція виконується після початку роботи програми. Щоб побачити текст головного файла, слід виконати команду Project/View Source.
Програму в С++ Builder частіше називають проектом чи додатком. Зазвичай кожен проект складається з кількох файлів, основними з яких є:
головний файл програми, який поєднує всі файли проекту. Він створюється автоматично і, за замовчуванням, його ім‟я – Project1.bpr;
файли форми з інформацією про властивості усіх компонентів на цих формах. Їхні імена, за замовчуванням, – Unit1.dfm, Unit2.dfm, …;
файли реалізації модуля з програмним кодом, так звані модулі. Це файли, в яких прописуються тексти функції опрацювання подій для компонентів форми. Імена файлів реалізації, за замовчуванням, – Unit1.cpp, Unit2.cpp, …;
заголовний файл с розширенням .h, який зберігає оголошення класу цієї форми. Весь основний текст цього файла формується автоматично, але іноді виникає потреба долучати до нього оголошення функцій, типів, констант та змінних користувача. Відкрити цей файл у редакторі кодів можна, клацнувши у вікні з файлом реалізації модуля правою кнопкою миші та обравши з контекстного меню команду Open Sourse/Header File або скориставшись клавіатурною комбінацією <Ctrl> + <F6>.
Імена файла реалізації (модуля) і заголовного файла збігаються. Якщо модуль пов‟язаний з формою, то його ім‟я збігається і з ім‟ям файла форми (з розширенням dfm). Це ім‟я задають за першого зберігання проекту. За замовчуванням C++ Builder пропонує ім‟я Unit1.
Заголовний файл при створенні проекту має вигляд:
#ifndef Unit1H
#define Unit1H
//--------------------------------------------------------
#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp>
//Тут можуть розміщуватися додаткові директиви препроцесора
//(зокрема include), які долучають потрібні заголовні файли
//--------------------------------------------------------
class TForm1 : public TForm// Оголошення класу форми TForm1
{ __published: // IDE-managed Components
// Розташовані на формі компоненти
TLabel *Label1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender); private: // User declarations
//Закритий розділ класу. Тут можуть розміщуватися оголошення типів, змінних,
//функцій, які входять до класу форми, але є недоступні для інших модулів
|
Середовище програмування C++ Builder |
47 |
public: |
// User declarations |
|
//Відкритий розділ класу. Тут можуть розміщуватися оголошення типів, змінних,
//функцій, які входять до класу форми, доступні для інших модулів
__fastcall TForm1(TComponent* Owner);
}; //--------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//Тут можуть розміщуватися оголошення типів, змінних, функцій,
//котрі не долучаються до класу форми; доступ до них з інших блоків
//є можливий лише за дотримання певних додаткових умов
#endif
Розпочинається заголовний файл рядками, перший символ яких є #. З цього символу розпочинаються директиви препроцесора. З-посеред них найбільш важливою директивою є include, яка долучає до модуля потрібний файл. Більш докладно заголовні файли розглянуто у розд. 9. Приміром, якщо в програмі використовуватимуться математичні функції, слід долучити відповідну математичну бібліотеку, тобто власноруч прописати директиви:
#include <math.h> // Долучення заголовного файла math.h #include <Math.hpp> // Долучення заголовного файла Math.hpp
Після директив препроцесора у заголовному файлі йде опис класу форми
– TForm1, в якому розділ __published заповнюється автоматично при проектуванні форми. У вищенаведеному прикладі оголошено вказівники на два компоненти: Label1 класу TLabel та Button1 класу TButton. Також оголошено функцію Button1Click – програмний відгук на подію натискання кнопки Button1. Розділи private та public заповнюються за потреби автором програми. Всі об‟єкти, оголошені у розділі public, будуть доступними для інших класів та модулів. Те, що оголошено у розділі private, є доступним лише у межах відповідного модуля.
Нижче за розділом PACKAGE можна розмістити оголошення типів, змінних, функцій, доступ до яких буде можливим і з інших модулів, але вони не долучатимуться до класу форми.
Файли реалізації (cpp-файли) є основою проектів у С++. Вони містять програмний код усіх функцій, оголошених у відповідному заголовному файлі. Окрім того, у cpp-файлі можна записувати функції, прототипи яких є відсутні у h-файлі, однак їхня видимість у такому разі обмежується цим cpp-файлом.
Розпочинається cpp-файл директивою препроцесора #include <vcl.h>, яка долучає відповідний h-файл з описом класів бібліотеки компонентів. За нею розміщена директива #pragma hdrstop, призначена для обмеження списку заголовних файлів, доступних для попередньої компіляції.
Розглянемо текст файла реалізації:
#include <vcl.h> #pragma hdrstop #include "Unit1.h"
//--------------------------------------------------------
#pragma package(smart_init) #pragma resource "*.dfm"
48 |
Розділ 2 |
//Тут можуть розміщуватися додаткові директиви препроцесора
//(зокрема include), які не долучаються до файла автоматично.
//-------------------------------------------------------
TForm1 *Form1; // Оголошення класу форми TForm1
//--------------------------------------------------------
//Виклик конструктора форми Form1
__fastcall TForm1::TForm1(TComponent* Owner)
:TForm(Owner)
{// Тут можна розмістити команди,
//які мають виконуватися при створенні форми.
}
//Тут можуть розміщуватися глобальні оголошення типів, змінних,
//доступ до яких є можливий з будь-якої функції цього модуля.
//Окрім того, тут має бути прописано реалізації всіх функцій,
//оголошених у заголовному файлі, а також може бути
//прописано реалізації функцій, не оголошених раніш.
//--------------------------------------------------------
//Приклад реалізації функції, яка здійснюватиме закриття форми,
//при натисненні лівої кнопки миші на компоненті Button1.
void __fastcall TForm1::Button1Click(TObject *Sender) { Close();
}
Звернімо увагу на те, що фігурні та круглі дужки мають у С++ різне призначення. По-перше, у круглих дужках записуються параметри функцій, а, по-друге, круглі дужки використовуються за потреби при записуванні арифметичних виразів. Фігурні дужки називають операторними; у C++ вони є аналогом begin/end інших мов. Відкритою фігурною ({) дужкою розпочинається кожна функція, у тому числі й функції відгуку на події, а закрита фігурна дужка
(}) ставиться після останньої команди функції. Окрім того, фігурні дужки використовуються всередині функцій для поєднування групи команд відносно заданої команди, приміром якщо в циклі слід виконувати понад одну команду.
Примітка. C++ Builder надає зручну можливість перевірити чи є закритою та чи інша фігурна дужка. Для цього треба підвести до неї курсор і натиснути <Alt> + <[>. Якщо вона є закритою, то курсор переміститься до відповідної закритої дужки.
2.1.3Послідовність створювання програмного проекту
вC++ Builder
Створювання програмних проектів у C++ Builder передбачає створення форми, розміщування на ній потрібних компонентів, визначення їхніх властивостей та створювання програмних відгуків на задані дії.
Послідовність роботи може бути такою:
запустити C++ Builder. При запуску автоматично створюється новий проект. Якщо C++ Builder вже працює для створення нового проекту слід з головного меню обрати опцію File/New Application;