Форум — Ответы     (  К темам )
 ?  Dimasn: видимость классов??? (15-02-2003 15:19:10)
Создал класс в главной форме, в ней же и использую. Но как сделать видимым этот класс в дочерней форме. Может это как-то надо создавать в заголовке.

Пожалуйста помогите ссылкой или текстом чего-то подобного.
 Павел (16-02-2003 13:12:37)
Смотря где вы этот класс создали и что хотите делать,
можно например сделать так:
Этот класс AAA объявляете в Unit1.h главной формы Form1

class AAA{
public:
int day;
};
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
AAA a; // создаем переменную a этого класса AAA
// ...

В дочерней форме Form2 включаете
#include <Unit1.h>
и используете co ссылкой на принадлежность класса главной форме Form1

void __fastcall TForm2::Button1Click(TObject *Sender)
{
ShowMessage(Form1->a.day);
}

Можно и по-другому
 Petro (17-02-2003 17:33:46)
Класс будет виден там, где ты пропишешь соответствующий инклюд.
 Георгий (17-02-2003 19:38:46)
Файл заголовков обычно используют для хранения описания (прототипа) обьектов, к которым предполагается обращения из других модулей.
Предлагаю тебе описать класс (перенести описание) в файл заголовков (например в файл заголовков главной формы), после этого к тому модулю, где нужно создать экземпляр класса и работать с ним, подключить этот файл заголовков (написать #include "Unit1.h" или через меню — File->Include Unit Hdr...).
А вообще говоря хорошим стилем считается размещение ВСЕХ обьектов в отдельных модулях и связь модулей только через файлы заголовков.
 DimaSN (21-02-2003 20:48:21)
Наконец-то нашлось время еще раз все проверить, но не получается, снова ошибки.
Мой клас описан в Н-файле, но класс не просто набор переменных есть еще и его свойства: функции и процедуры. Так вот описал его в загаловке, создал переменную этого типа. А функции пытаюсь описать в самой программе, но что-то не так. Есть у меня образец чата, написанный с помощью класса, но там все просто, все в одной форме???А у меня сложнее.

Это в заголовке
//Класс — фигура
class TFigure {
//Структура
public:
int Stratum;
double Box[4];
short int TypeFigure;
int NumPoints;
//Свойства
void allocate(int _NumPoints);
void free();
void WriteToBuffer(TMemoryStream *Buffer);
void ReadFromBuffer(TMemoryStream *Buffer);
//Определяем фигуру
};
TFigure Figure;

а это в форме

//---------------
//Свойства фигуры
//---выделение памяти---
void TFigure::allocate(int _NumPoints)
{
Points=new TDPoint[_NumPoints];
}

Но что-то мне это не нравится, а как правильно не знаю.
 Георгий (22-02-2003 12:01:48)
Не знаю, что у тебя не получается — кусок большой программы:
в заголовке:
class Device
{
protected:
...
public:
Device(void);
~Device(void);
...
};
в cpp:
Device ::Device(void)
{
...
};
...
...
...
Device ::~Device(void)
{
...
};
другие модули видят этот обьект только через файл заголовков — всё работает
скажи поподробнее, что за ошибки