Tertium |
Отправлено: 20.03.2004, 21:46 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
Такой возник вопрос. Создаю в конструкторе главной формы другую форму:
CODE |
m_view=new TForm(this);//m_view объявлен как TForm*
m_view->Parent=this;
m_view->Show();
...
|
Всё ровно. Работает и вообще.
Однако добавляю новый класс, потомок TForm.
CODE |
class CView : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
__fastcall CView(TComponent* Owner);
__fastcall ~CView();
};
|
Потом вместо описанного выше пишу в конструкторе формы:
CODE |
m_view=new CView(this);//m_view объявлен как CView*
m_view->Parent=this;
m_view->Show();
...
|
Вот хрен собачий! При создании главной формы в project1.cpp:
CODE |
Application->CreateForm(__classid(TForm1), &Form1);
|
происходит экзепшн: EResNotFound: idite k takoi-to materi!
Ну почему обязательно ей нужен dfm?! Пробовал указать соотв. прагму — естессно, он послал меня к чёрту. Ну нет такого файла! Мне он не нужен, а ему зачем? Если он от TForm объекты плодит, а от прямого его потомка — почему бы и нет?
Люди, подскажите насколько именно у меня кривые руки? В каком витке ДНК ошибка? Заранее всем благодарен
|
|
Pirs |
Отправлено: 21.03.2004, 00:20 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
У меня была такая же проблема. По моему это ошибочный путь — создавать потомков TForm и затем их динамически запускать.
|
|
Asher |
Отправлено: 21.03.2004, 12:38 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
а собственно создаваемый TForm1 у тебя как описан?
|
|
Tertium |
Отправлено: 21.03.2004, 12:48 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
TForm1 описан самим билдером ещё в дизайн-тайме.
CODE |
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TStatusBar *StatusBar1;
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
|
а причём здесь это?
Динамически мной создаётся не он, хотя ошибка возникает при его создании аплликейшном. Видимо, билдер при создании первой формы смотрит,чо там у нас остальными в проекте, чо-то там инициализит и типа того. Ну вобщем я сам уже разобрался. Я просто создаю вформу в дизайн-тайме (Правда класс переименовать её уже не могу, ну и х... с ним). Потом убиваю глобальную переменную, а в главной фороме делаю член — указатель на класс созданной форме. Билдер рабостно виляет хвостом. И dfm есть и вообще полный улёт.
Короче, всем спасибо.
|
|