Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Не получается создать потомка от TForm. Требует ресурсы   Найти похожие ветки 

 
alextov   (2004-04-02 11:56) [0]

Пытаюсь создать дочерний класс от TForm, описываю его как:
type
 TMyForm = class(TForm)
 private
    FField: Integer;
 public
    Constructor Create (AOwner: TComponent);
 end;

implementation

Constructor TMyForm.Create (AOwner: TComponent);
begin
inherited;
end;

В программе пытаюсь создать обьект данного класса

var t: TMyForm;
begin
  t:=TMyForm.Create(Form1);
end;

но при выполнении конструктора класса TMyForm на операторе inherited "оно" ругается : "Resource TMyForm not found".

Причем тут ресурсы? Я же могу создать обьект t:=TForm.Create и без всяких ресурсов....

Подсажите плз что я делаю не так...


 
Skier ©   (2004-04-02 12:19) [1]

нужен файл *.dfm  или используй TMyForm.CreateNew()


 
Плохиш   (2004-04-02 12:26) [2]

>alextov   (02.04.04 11:56)

А чем Вам не нравиться то, что делает делфи при выборе меню-пункта "New/New Form"?


 
alextov   (2004-04-02 12:36) [3]

2 skier
я понимаю что "оно" ищет файл *.dfm
но я же пишу  t:=TForm.Create() и форма создается и не ищется *.dfm
а TMyForm прямой потомок от TForm, практически не измененный, а так создаваться не хочет. В чем разница? почему ?

2 Плохиш
Предполагается, что там кроме FField будет еще куча разных полезных (для меня полей, свойств, методов)


 
MBo ©   (2004-04-02 12:41) [4]

>но я же пишу  t:=TForm.Create() и форма создается и не ищется *.dfm

Ну попробуй из рабочего проекта удалить строку
{$R *.dfm}


 
Skier ©   (2004-04-02 12:52) [5]

>alextov   (02.04.04 12:36) [3]


> но я же пишу  t:=TForm.Create() и форма создается и не ищется
> *.dfm


посмотри внимательно на реализацию конструктора :
constructor TCustomForm.Create(AOwner: TComponent);


 
alextov   (2004-04-02 12:58) [6]

2 Mbo
я удалил из юнита, в котором описываю класс TMyForm, строчку {$R *.dfm}.


 
Гаврила   (2004-04-02 13:27) [7]

Constructor Create (AOwner: TComponent); override;

удалять  {$R *.dfm} не надо
все должно работать


 
alextov   (2004-04-02 15:20) [8]

Как говорил один мой знакомый -
"ну а когда вообще ничего не получается - почитай хелп" :)))
Вот решил почитать... и нашел много интересного

Use CreateNew instead of Create to create a form without using the associated .DFM file to initialize it. Always use CreateNew if the TCustomForm descendant is not a TForm object or a descendant of TForm.


 
Плохиш   (2004-04-02 16:13) [9]


> 2 Плохиш
> Предполагается, что там кроме FField будет еще куча разных
> полезных (для меня полей, свойств, методов)

Разве делфи запрещает это иметь?


 
Юрий Зотов ©   (2004-04-02 16:52) [10]

> alextov

Для форм стандартный Create сначала вызывает CreateNew (который создает и инициализирует пустую форму), а затем тут же загружает ее ресурсы (вот почему форма сразу появляется вместе со всеми своими компонентами).

Для подключения ресурсов нужна директива $R. Но Вы ее удалили - соответственно, ресурсы не подключаются и при вызове Create вылетает ошибка.

Выводы:

1. Если Ваша форма всегда будет пустой (то есть, задумана только как предок других, рабочих форм), то ресурсы ей не нужны. Тогда директиву $R есть смысл удалить - но если вдруг понадобится создать форму именно этого класса, то это нужно делать через CreateNew.

2. Если нет - то оставьте директиву $R на своем месте и создавайте форму как Вам угодно.

========================

Предвижу следующий вопрос - почему в Инспекторе Объектов не видны добавленные мною published-свойства формы?

Сразу даю ответ - скачайте и используйте эксперт Сергея Орлика CFPack5 (поищите в Гугле, наверняка найдете). В принципе, можно сделать и вручную (как - не рассказываю, потому что долго), но с экспертом проще и удобнее.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.05 c
1-1080570739
Pikachu
2004-03-29 18:32
2004.04.18
Оброботка сообщения WM_MouseMove


3-1079611948
CTAC
2004-03-18 15:12
2004.04.18
Конвертация типов полей


1-1080636519
Question2004
2004-03-30 12:48
2004.04.18
Компонента TWebBrowser


6-1077030273
Maksss
2004-02-17 18:04
2004.04.18
Socket


1-1080805977
alex123
2004-04-01 11:52
2004.04.18
Поменять порядок вкладок в PageControl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский