класс наследник TForm (проблемы показа формы)
1)как ни странно мой класс не отображается в инспекторе обьектов,
2) мой класс существует, но как сделать чтобы показывалась МОЯ форма
3)вопрос вытекает из 2): как сделать чтобы по нажатью на кнопку "new form" создавалась МОЯ форма, а не TForm1?
Что значит как создавал форму? Просто писал (см. мой h-файл):
#define TFormCoorH
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//#include <TForm.h>
class TFormCoor:public TForm
{ //TIniFile *ini;
public:
_fastcall TFormCoor(TComponent *Owner);
};
extern PACKAGE TFormCoor *FormCoor;
//---------------------------------------------------------------------------
#endif
А по нажатию File->New->Form создаётся форма по умолчанию! но не моя.
параметры формы находяться в dfm-файле
Имхо послушайся совета выше File->New->Form.
хочешь записывать в фаил координаты воспользуйся эвентом OnCreat.
PS в проектном файле bpr также надо указат ь принадлежность формы проекту
Называешь её, как надо.
Накидываешь на неё, что надо.
И добавляешье её в "репозитарий" (project \ add to repository...)
Далее нужно просто добавлять в проект не просто "новую форму", а "другой объект" (other...). В появившемся окне репозитария выбирается своя форма и добавлается в режиме "наследования" (inherited)
1)как ни странно мой класс не отображается в инспекторе обьектов,
Ничего странного (как ни странно:)) нет т.к. для этого его нужно зарегистрировать соответствующим образом. Рекоммендации: курите RegisterCustomModule(...).
2) мой класс существует, но как сделать чтобы показывалась МОЯ форма
см. выше
3)вопрос вытекает из 2): как сделать чтобы по нажатью на кнопку "new form" создавалась МОЯ форма, а не TForm1?
1. Уже оговаривалось выше - создать свой модуль с новыми св-ми, событиями и т.д.
2. Зарегистрировать его с помощью RegisterCustomModule(...)
3. Создать мастер где реализовать создание модуля + добавить пункт меню File->New->MYForm или в репозиторий.
2. Зарегистрировать его с помощью RegisterCustomModule(...)
3. Создать мастер где реализовать создание модуля + добавить пункт меню File->New->MYForm или в репозиторий.
Покажи на примере как толком использовать RegisterCustomModule(...); куда её прописывать?
Искал в инете, а но нашёл для случая с Delphi и то на английском языке.
Искал в инете, а но нашёл для случая с Delphi и то на английском языке.
В пакете только одно подходящее место - функция Register() (там где компоненты, визарды, редакторы св-в регистрируются...). Вот там ее и вызывай.
если честно как-то не думал если создаю наследник формы то нужно создавать пакет. Я просто в ручную создавал класс-наследник, а потом File->New Form и в этой форме менял то что TForm1 являлась наследником TForm на то что она теперь наследник TmyForm (в данном случае TmyForm и TCoorForm одно и то же), и соответственно менял аналогично в конструкторе и h-файле (см.ниже)
Улучшенный мой h-файл:
#define TCoorFormH
#include <Forms.hpp>
class TCoorForm: public TForm
{
public:
__fastcall TCoorForm(TComponent *);
};
//---------------------------------------------------------------------------
#endif
cpp-файл:
#include "TCoorForm.h"
#include <IniFiles.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
__fastcall TCoorForm::TCoorForm(TComponent* Owner)
: TForm(Owner)
{
}
Видоизменнёный мною файл формы TForm1
h-файл
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <DesignIntf.hpp>
#include <DesignEditors.hpp>
#include "TCoorForm.h"
//---------------------------------------------------------------------------
class TForm1 : public TCoorForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
cpp-файл
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TCoorForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
}
//---------------------------------------------------------------------------
Это всё работает, но я трачу много времени пока это сделаю.
Попробовал создать компонент,наследник TFrom (File->New->Package). Нажал Install и пакет установился на панель инструментов, но всё равно полученный компонент требует контейнара (на что помещаться) но форма на форме мне не нужна.
Пытался в нутри полученного компонента прописать RegisterCustomModule(TForm,TCoorForm); но реакции ни какой.
Народ, прошу вашей помощи.:confused:
Улучшенный мой h-файл:
...
если честно, то нифига не понял что ты делал...
Можно обойтись без мастера, а положить форму (свою. написанную ручками, с новыми Паблишед св-вами) в репозиторий, но при этом все равно нужен пакет где будет вызов RegisterCustomModule (нужно. чтобы IDE знал, что твоя форма это дизайнер...). Тогда тоже должны твои св-ва быть видны в ObjectInspector. но говорю - это через Жж...