|
Pers.narod.ru. Обучение. Примеры по C++ Builder. Подключаем модули и файлы к проекту C++ Builder |
Скажите, где надо прописать свой второй модуль, чтобы подключить его к проекту в Builder'е?
При открытом проекте (допустим, в нём есть модуль Unit1 и форма Form1) выполнить File->New->Form
Появился модуль Unit2 и форма Form2
В первом модуле ставим
#include "Unit2.h"
Или клавишами Alt+F11 (меню Files->Include Unit Hdr...)
После этого можем обращаться из первого модуля к данным второго.
Например, в Unit2.h написано:
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
int iii=1; //Описали здесь свою переменную
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
Значит, Unit1.cpp (на его форме 1 кнопка Button1 и в коде 1 метод TForm1::Button1Click) может быть таким:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h" //Подключили второй модуль!
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String s;
s=IntToStr(Form2->iii); //Использовали переменную из класса второй формы
ShowMessage (s);
}
Если мы подключили модуль без формы (меню File->New->Unit) тогда можно делать минимум 2 способами, оба в этом примере:
Unit1.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//extern int get1();
//Можно расскомментарить внешнее объявление extern и
//закомментарить #include "Unit2.h" - тоже будет работать
String s=get1();
ShowMessage (s);
}
Unit2.h - заголовочный файл 2-го модуля//--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H int get1(); //Объявлен прототип функции //--------------------------------------------------------------------------- #endif
Unit2.cpp - код 2-го модуля//---------------------------------------------------------------------------
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
int get1 () {
return (1);
}
|
|