Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++_навч_пос14_new.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.86 Mб
Скачать

4 Приклади використання компонентів vcl

4.1 Поради для вивчення компонентів:

1 Переглядайте вміст Object Inspector.

2 Користуйтесь довідкою F1.

3 Користуйтесь підказкою коду Ctrl+Space.

4 Користуйтесь довідковою літературою і прикладами.

5 Перед копіюванням прикладів в код програми розмістіть на формі усі необхідні компоненти (наприклад, Label1, Label2, Button1 і т.д.) та створіть усі необхідні функції-обробники подій (наприклад, TForm1::Button1Click, TForm1::FormCreate і т.д.), які використовуються в прикладі.

4.2 Простий проект типу Win32 Application у C++ Builder

Постановка задачі: створити додаток Win32 у C++ Builder, вікно якого містить кнопку і поле вводу. При натиску на кнопці в полі повинен з’явитись текст "Hello World!"

Послідовність виконання:

  1. Створіть проект, якщо він не створений (File|New| Application)

  2. Добавте на Form1 компоненти Edit і Button з панелі компонентів

  3. Двічі клацніть на кнопці Button1 і у функцію TForm1::Button1Click вставте код:

Edit1->Text="Hello World!";

  1. В конструктор форми TForm1::TForm1 вставте код:

Caption="First program";

Button1->Caption="Click Me!";

  1. Відкомпілюйте проект (Run|Run)

  2. Збережіть проект (File|Save Project As...).

  3. Закрийте проект (File|Close All)

Код програми

//файл Unit1.h з описом класу форми

#ifndef Unit1H//директива умовної компіляції "якщо не визначено"

#define Unit1H//директива визначення макросу

//директиви підстановки файлів

#include <Classes.hpp>//бібліотека службових класів

#include <Controls.hpp>//бібліотека класів компонентів

#include <StdCtrls.hpp>//бібліотека класів стандартних компонентів

#include <Forms.hpp>//бібліотека класів форм

//клас форми TForm1, який успадкований від TForm

class TForm1 : public TForm

{

__published://компоненти, які обслуговуються IDE

TButton *Button1;//компонент VCL кнопка класу TButton

TEdit *Edit1;//компонент VCL поле вводу класу TEdit

//метод обробки події OnClick

void __fastcall Button1Click(TObject *Sender);

private: //закриті члени класу

public: //відкриті члени класу

__fastcall TForm1(TComponent* Owner);//конструктор

};

//специфікатор вказує, що Form1 визначена в окремому файлі

extern PACKAGE TForm1 *Form1;

#endif//кінець директиви умовної компіляції

//файл Unit1.cpp з визначенням методів форми

#include <vcl.h>//бібліотека VCL

//директива закінчує список заголовочних файлів,

//придатних для попередньої компіляції

#pragma hdrstop

#include "Unit1.h"//під’єднати файл Unit1.h

//вказує, що упаковані модулі ініціалізовані

//в порядку, визначеному їх залежностями

#pragma package(smart_init)

//помічає файли *.dfm як модулі форми

#pragma resource "*.dfm"

TForm1 *Form1;//створити об’єкт форми класу TForm1

//визначення конструктора форми

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

//присвоїти властивості форми Form1 рядок

//властивість Caption відповідає надпису на компоненті

Caption="First program";

//присвоїти властивості кнопки Button1 рядок

Button1->Caption="Click Me!";

}

//визначення методу обробника події OnClick

void __fastcall TForm1::Button1Click(TObject *Sender)

{

//присвоїти властивості поля вводу Edit1 рядок

//властивість Text відповідає тексту на компоненті

Edit1->Text="Hello World!";

}

//файл Project1.cpp з головною функцією WinMain

#include <vcl.h>

#pragma hdrstop

//використовувати файл форми Unit1.cpp

USEFORM("Unit1.cpp", Form1);

//головна функція

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try//блок обробки виключних ситуацій

{

//Application - об’єкт, який описує додаток

Application->Initialize();//ініціалізувати

//створити форму Form1

Application->CreateForm(__classid(TForm1), &Form1);

Application->Run();//виконати

}

//перехоплення виключної ситуації Exception

catch (Exception &exception)

{Application->ShowException(&exception);}//показати помилку

//перехоплення інших виключних ситуацій

catch (...)

{

try

{throw Exception("");}//генерувати виключну ситуацію

//перехоплення виключної ситуації Exception

catch (Exception &exception)

{Application->ShowException(&exception);}//показати помилку

}

return 0;

}