БлогNot. Подключаем модули и файлы к проекту C++ Builder

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

Подключаем модули и файлы к проекту 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);
}

теги: c++ программирование builder

18.04.2011, 20:25; рейтинг: 12894

  свежие записипоиск по блогукомментариистатистикао "вирусах" в архивах .zip

Наверх Яндекс.Метрика
© PerS
вход