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

Вниз

Правильно обработать 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
3-1170269416
Ёжик
2007-01-31 21:50
2007.04.22
Владелец хранимок и таблиц


15-1174923962
Ringo
2007-03-26 19:46
2007.04.22
Кавказский логический парадокс (не политика)


8-1155043506
Yastreb
2006-08-08 17:25
2007.04.22
Запуск файла в Winamp


3-1170513670
Itonix
2007-02-03 17:41
2007.04.22
Разница в компонентах


15-1174932331
Eraser
2007-03-26 22:05
2007.04.22
Шрифт Anastasia Script





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский