Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Правильно обработать OnCreate при динамическом создании формы   Найти похожие ветки 

 
DelphiLexx ©   (2007-04-02 14:56) [0]

Как правильно обработать OnCreate при динамическом создании формы.

var
fm: TForm;
begin
fm := TForm(AOwner);
fm.OnCreate := fmCreate
end;

В этом случае у меня OnCreate не срабатывает


 
_Аноним   (2007-04-02 14:59) [1]

А где тут "динамическое создание формы"?


 
DelphiLexx ©   (2007-04-02 15:07) [2]


> fm: TForm;
> begin
> fm := TForm.Create(AOwner);


 
_Аноним   (2007-04-02 15:20) [3]

Ну все правильно, и не сработает.
Оно сработало бы в момент TForm.Create(AOwner);
если бы было присвоено, а оно присваивается только следующей строкой.

А зачем тут вообще событие это нужно? Вот оно, это место кода, где создается форма, все необходимое можно выполнить тут же.


 
DelphiLexx ©   (2007-04-02 15:40) [4]


> Ну все правильно, и не сработает.
> Оно сработало бы в момент TForm.Create(AOwner);
> если бы было присвоено, а оно присваивается только следующей
> строкой.
>
> А зачем тут вообще событие это нужно? Вот оно, это место
> кода, где создается форма, все необходимое можно выполнить
> тут же.

Нет мне нужно, чтобы все это происходило в обработчике ОnCreate;


 
KSergey ©   (2007-04-02 15:47) [5]

> DelphiLexx ©   (02.04.07 15:40) [4]
> Нет мне нужно, чтобы все это происходило в обработчике ОnCreate;

Значит не судьба.
Хотя, вполне можно сделать так:

var
fm: TForm;
begin
fm := TForm.Create(AOwner);
fm.OnCreate := fmCreate
fm.OnCreate(nil);
end;


(за окрректный синтаксис не ручаюсь)

Впрочем, вот так - результат будет совершенно тот же :)

var
fm: TForm;
begin
fm := TForm.Create(AOwner);
fmCreate(nil);
end;


 
vecna ©   (2007-04-02 16:13) [6]

м.б. сделать наследника от TForm и не ломать себе моск? ;)


 
Arm79 ©   (2007-04-02 20:21) [7]

сделал форму, накидал чего нужно, в onCreate этой формы прописал что нужно

frmDinamicForm := TfrmDinamicForm.Create(Application);

все и сработает.


 
MsGuns ©   (2007-04-02 23:50) [8]

>DelphiLexx ©   (02.04.07 15:40) [4]
>Нет мне нужно, чтобы все это происходило в обработчике ОnCreate;

А что имеется в виду под всем ?


 
DelphiLexx ©   (2007-04-03 09:22) [9]


> А что имеется в виду под всем ?

Некоторые инициализирующие вещи


 
Сергей М. ©   (2007-04-03 09:28) [10]


> DelphiLexx ©   (02.04.07 14:56)


> при динамическом создании формы


Т.е. якобы при "статическом" создании формы подобных проблем у тебя не возникает, так ?


 
_Аноним   (2007-04-03 09:54) [11]


> Некоторые инициализирующие вещи


Варианта всего три:
1. Сделать отдельный юнит с DFM
2. Если там всего три строчки, и ради них не хочется делать отдельный юнит, то можно
2.1 написать потомка от TForm в этом же юните, соответственно без своего DFM, при этом компоненты разместить в ран тайм.
2.2 Оставить инициализирующие вещи снаружи, то есть вызывать так:
> fm := TForm.Create(AOwner);
> fmCreate(fm);


 
vl_chel ©   (2007-04-03 15:32) [12]

переопредели конструктор окна и не морочь не себе не другим голову

TForm1 = class(TForm)

public
 constructor Create(AOwner: TComponent); override;
end;

constructor TForm1.Create(AOwner: TComponent); override;
begin
 inherited;

// твои вещи по инициализации
end;

пример писался с головы могут быть опечатки


 
MsGuns ©   (2007-04-03 21:26) [13]

>DelphiLexx ©   (03.04.07 09:22) [9]
>Некоторые инициализирующие вещи

Поясню свой вопрос: чем работа конструктора объекта при динамическом (в ран-тайме) создании отличается от его же работы при статическом (т.е. при создании его в коде проекта) ?



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

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
2-1175691056
cosinus
2007-04-04 16:50
2007.04.22
Хм...Вопрос по глобальному хуку на клавиатуру


1-1172204678
Мстилели
2007-02-23 07:24
2007.04.22
Unicode


15-1174864148
Джо
2007-03-26 03:09
2007.04.22
Потоп


15-1174584158
tesseract
2007-03-22 20:22
2007.04.22
суббота и пиво


15-1174876447
Slider007
2007-03-26 06:34
2007.04.22
С днем рождения ! 26 марта