Структура файлів програмних модулів форм 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Структура файлів програмних модулів форм



Кожен програмний модуль форми складається з двох файлів: заголовного файлу, з описом класу форми, і файлу з реалізації форми [1]. Заголовний файл Unit1.h донавчальногоприкладу з контрольної роботи № 3 має наступний текст:

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

#ifndef Unit1H

#define Unit1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ExtCtrls.hpp>

#include <Menus.hpp>

#include <Graphics.hpp>

#include <ImgList.hpp>

#include <ComCtrls.hpp>

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

class TForm1: public TForm

{

__published: // IDE-managed Components

TMainMenu *MainMenu1;

TLabel *Label1;

TImage *Image1;

TMenuItem *Technology;

TMenuItem *Scheme;

TMenuItem *Devices;

TMenuItem *Info;

TMenuItem *Device1;

TMenuItem *Device2;

TMenuItem *Device3;

TMenuItem *Products;

TMenuItem *Description;

TMenuItem *Design1;

TMenuItem *Characteristic1;

TMenuItem *Design2;

TMenuItem *Process2;

TMenuItem *Characteristic2;

TMenuItem *Design3;

TMenuItem *Process3;

TMenuItem *Characteristic3;

TMenuItem *About;

TMenuItem *Exit;

TMenuItem *Literature;

TImage *Image2;

TImage *Image3;

TImage *Image4;

TImage *Image5;

TImage *Image6;

TImage *Image7;

TImage *Image8;

TImage *Image9;

TImage *Image10;

TImage *Image11;

TImage *Image12;

TImage *Image13;

TImage *Image14;

TImage *Image15;

TImage *Image16;

TImage *Image17;

TImage *Image18;

TImageList *ImageList1;

TMenuItem *Process1;

void __fastcall ExitClick(TObject *Sender);

void __fastcall AboutClick(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

void __fastcall SchemeClick(TObject *Sender);

void __fastcall DescriptionClick(TObject *Sender);

void __fastcall ProductsClick(TObject *Sender);

void __fastcall Design1Click(TObject *Sender);

void __fastcall Design2Click(TObject *Sender);

void __fastcall Design3Click(TObject *Sender);

void __fastcall Process1Click(TObject *Sender);

void __fastcall Process2Click(TObject *Sender);

void __fastcall Process3Click(TObject *Sender);

void __fastcall Characteristic1Click(TObject *Sender);

void __fastcall Characteristic2Click(TObject *Sender);

void __fastcall Characteristic3Click(TObject *Sender);

void __fastcall Image2MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image1MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image3MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image4MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image5MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image7MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image6MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image8MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image9MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y);

void __fastcall Image10MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image11MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image12MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image13MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image14MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image15MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image16MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image17MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall Image18MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y);

void __fastcall LiteratureClick(TObject *Sender);

void __fastcall Image11Click(TObject *Sender);

void __fastcall Image3Click(TObject *Sender);

void __fastcall Image9Click(TObject *Sender);

void __fastcall Image10Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

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

extern PACKAGE TForm1 *Form1;

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

#endif

 

Відповідний заголовний файл для форми Form1 починається з директив препроцесору, яки додаються автоматично. Інтегрованє середовище С++ Buіlder само додає необхідні директиви #іnclude для підключення зазначених копій файлів, у яких описані ті компоненти, перемінні, константи і функції, яки використовуються в даному модулі форми. Однак для деяких функцій таке автоматичне підключення не виконується і у таких випадках розробник програми С++ сам повинен вручну додавати відповідні директиви #іnclude.

Після директив препроцесору #іnclude розташовується опис класу форми. Наприклад, ім'я класу головної форми позначається TForm1. Клас форми складається з трьох розділів: _publіshed - відкритий розділ, що містить оголошення розміщених на формі компонентів і для них оброблювачів відповідних подій, другий - prіvate, що вказує на закритий розділ класу, і publіc - відкритий розділ классу [5]. У наведеному заголовному файлі в розділі _publіshed можна побачити оголошення покажчиків на компоненти: TMaіnMenu, TLabel, TImage, TMenuItem та інші. Далі у розділі _publіshed розташовані оголошення прототипів функцій, які формуються розробником прикладної програми С++. Усе, що записано у розділі _publіshed, вносить у нього C++ Buіlder автоматично у процесі проектування форми до програми. Як правило, розробнику прикладної програми не приходиться працювати з цим розділом.

У розділи prіvate і publіc розробник програми може додавати таки свої оголошення: типів даних, перемінних і функцій. Оголошення, яки записані в розділі publіc, будуть доступні для інших класів і модулів. Те, що оголошено у розділі prіvate, доступно тільки в межах даного програмного модуля [5].

С++ Buіlder самостійно включає у розділ publіc оголошення (прототип) конструктора, до спроектованої форми. Після рядка extern PACKAGE можуть міститися оголошення: типів даних, перемінних і функцій, які не включені у клас форми і до них може бути доступ з інших блоків.

Файл реалізації програмного модуля форми Form1 доприкладу з контрольної роботи № 3 має назву Unit1.cpp і наступний текст:

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

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::ExitClick(TObject *Sender)

{

Close();

}

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

void __fastcall TForm1::AboutClick(TObject *Sender)

{

AboutBox->ShowModal();

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Image1->Picture->LoadFromFile("Data/Main/Background.bmp");

Image2->Visible = false;

Image3->Visible = false;

Image4->Visible = false;

Image5->Visible = false;

Image6->Visible = false;

Image7->Visible = false;

Image8->Visible = false;

Image9->Visible = false;

Image10->Visible = false;

Image11->Visible = false;

Image12->Visible = false;

Image13->Visible = false;

Image14->Visible = false;

Image15->Visible = false;

Image16->Visible = false;

Image17->Visible = false;

Image18->Visible = false;

}

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

void __fastcall TForm1::SchemeClick(TObject *Sender)

{

Image1->Picture->LoadFromFile("Data/Main/Scheme.bmp");

Image2->Visible = true;

Image3->Visible = true;

Image4->Visible = true;

Image5->Visible = true;

Image6->Visible = true;

Image7->Visible = true;

Image8->Visible = true;

Image9->Visible = true;

Image10->Visible = true;

Image11->Visible = true;

Image12->Visible = true;

Image13->Visible = true;

Image14->Visible = true;

Image15->Visible = true;

Image16->Visible = true;

Image17->Visible = true;

Image18->Visible = true;

Label1->Visible = true;

}

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

void __fastcall TForm1::DescriptionClick(TObject *Sender)

{

Form2->RichEdit1->Lines->LoadFromFile("Data/Main/Scheme.rtf");

Form2->Caption="Опис процесу отримання хлористого метилену";

Form2->ShowModal();

}

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

void __fastcall TForm1::ProductsClick(TObject *Sender)

{

Form2->RichEdit1->Lines->LoadFromFile("Data/Main/Products.rtf");

Form2->Caption="Продукція";

Form2->ShowModal();

}

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

void __fastcall TForm1::Design1Click(TObject *Sender)

{

Form3->Caption="Конструкція хлоратора";

Form3->Image1->Picture->LoadFromFile("Data/Device1/Device.bmp");

Form3->ShowModal();

}

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

void __fastcall TForm1::Design2Click(TObject *Sender)

{

Form3->Caption="Конструкція абсорбера";

Form3->Image1->Picture->LoadFromFile("Data/Device2/Device.bmp");

Form3->ShowModal();

}

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

void __fastcall TForm1::Design3Click(TObject *Sender)

{

Form3->Caption="Конструкція розріджувача лугу";

Form3->Image1->Picture->LoadFromFile("Data/Device3/Device.bmp");

Form3->ShowModal();

}

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

void __fastcall TForm1::Process1Click(TObject *Sender)

{

Form2->RichEdit1->Lines->LoadFromFile("Data/Device1/Process.rtf");

Form2->Caption="Опис процесу в хлораторі";

Form2->ShowModal();

}

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

void __fastcall TForm1::Process2Click(TObject *Sender)

{

Form2->RichEdit1->Lines->LoadFromFile("Data/Device2/Process.rtf");

Form2->Caption="Опис процесу в абсорбері";

Form2->ShowModal();

}

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

void __fastcall TForm1::Process3Click(TObject *Sender)

{

Form2->RichEdit1->Lines->LoadFromFile("Data/Device3/Process.rtf");

Form2->Caption="Опис процесу в розріджувачі лугу";

Form2->ShowModal();

}

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

void __fastcall TForm1::Characteristic1Click(TObject *Sender)

{

Form4->Caption="Параметри хлоратора";

Form4->ShowModal();

}

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

void __fastcall TForm1::Characteristic2Click(TObject *Sender)

{

Form5->Caption="Параметри абсорбера";

Form5->ShowModal();

}

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

void __fastcall TForm1::Characteristic3Click(TObject *Sender)

{

Form6->Caption="Параметри розріджувача лугу";

Form6->ShowModal();

}

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

void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("3 - Змішувач");

}

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

void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption=("");

}

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

void __fastcall TForm1::Image3MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("4 - Хлоратор");

}

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

void __fastcall TForm1::Image4MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("1 - Змішувач");

}

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

void __fastcall TForm1::Image5MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("2 - Підігрівник");

}

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

void __fastcall TForm1::Image7MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("16 - Сепаратор");

}

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

void __fastcall TForm1::Image6MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("5 - Сажовловлювач");

}

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

void __fastcall TForm1::Image8MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("10 – Графітовий холодильник");

}

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

void __fastcall TForm1::Image9MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{

Label1->Caption= ("7 - Абсорбер");

}

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

void __fastcall TForm1::Image10MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("8 - Абсорбер");

}

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

void __fastcall TForm1::Image11MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("9 – Розріджувач лугу");

}

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

void __fastcall TForm1::Image12MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("11 – Збірник концентрованої соляної кислоти");

}

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

void __fastcall TForm1::Image13MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("12 - Компресор");

}

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

void __fastcall TForm1::Image14MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("15 - Фільтр");

}

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

void __fastcall TForm1::Image15MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("14 - Конденсатор");

}

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

void __fastcall TForm1::Image16MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("13 - Осушувачі");

}

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

void __fastcall TForm1::Image17MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("17 – Розріджувач лугу");

}

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

void __fastcall TForm1::Image18MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

Label1->Caption= ("6 – Повітряний холодильник");

}

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

void __fastcall TForm1::LiteratureClick(TObject *Sender)

{

Form2->Caption= ("Література");

Form2->RichEdit1->Lines->LoadFromFile("Data/Main/Literature.rtf");

Form2->ShowModal();

}

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

void __fastcall TForm1::Image11Click(TObject *Sender)

{

Form3->Caption="Конструкція розріджувача лугу";

Form3->Image1->Picture->LoadFromFile("Data/Device3/Device.bmp");

Form3->ShowModal();

}

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

void __fastcall TForm1::Image3Click(TObject *Sender)

{

Form3->Caption="Конструкція хлоратора";

Form3->Image1->Picture->LoadFromFile("Data/Device1/Device.bmp");

Form3->ShowModal();

}

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

void __fastcall TForm1::Image9Click(TObject *Sender)

{

Form3->Caption="Конструкція абсорбера";

Form3->Image1->Picture->LoadFromFile("Data/Device2/Device.bmp");

Form3->ShowModal();

}

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

void __fastcall TForm1::Image10Click(TObject *Sender)

{

Form3->Caption="Конструкція абсорбера";

Form3->Image1->Picture->LoadFromFile("Data/Device2/Device.bmp");

Form3->ShowModal();

}

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

 

Директиви #include використовуються для включення копії файлу в те місце, де знаходиться ця директива препроцесора, а директиви #pragma вказують на необхідність використання ракетів (package) і файлів *.dfm. Після автоматично включених директив препроцесору в файлі модуля форми розташовуються також автоматично приєднанні оголошення покажчика на об'єкт форми, наприклад, Form1, а потім йде виклик конструктора для даної форми. Тіло відповідної функції порожнє, але розробник програми може вставляти у тіло якісь свої оператори. При створенні вікна даної форми ці оператори будуть виконуватися. У ці оператори також можна вставити початкові настроювання якісь властивостей форми. Після конструктора форми розташовуються описи усіх функцій, оголошених у заголовному файлі форми Unit1.h. У цій частині можна додавати оголошення любих типів даних, констант, перемінних, котрі не оголошені в заголовному файлі, та також робити описи будь-яких функцій, не згаданих у заголовному файлі.

По команді Save As імена файлам модулів форм прикладної програми призначає сама С++ Buіlder за замовчуванням: для модуля першої форми задається назва "Unіt1.cpp", для модуля другої форми - "Unіt2.cpp" і т.д.. Ці імена за бажанням розробник програми С++ може змінювати, при цьому залишаючи першу букву з назви, наприклад, для першого модуля U_новє-ім'я-1.срр, а для другого модуля задати - U_новє-ім'я-2.срр. Такі зміни назв файлів для модулів форм С++ Buіlder враховує автоматично з записом нових імен у відповідних указівках препроцесору в заголовному файлі форми.



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 141; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.29.145 (0.112 с.)