Подключаем модули и файлы к проекту 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); }
18.04.2011, 20:25 [19359 просмотров]