![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно назначить форме событие Oncreate?
Gedevan © (2015-11-03 12:40:00)Событие нужно назначать когда форма уже создана? т.е. метод крейт был вызван. В таком случае, как же мне подсунуть туда свою процедуру?
Smile (2015-11-04 04:55:00) [21]> sniknik © (04.11.15 00:52) [12]
будильник который звонит не сам, а по нажатию на кнопку...
Это уже не будильник, который звонит после нажатия на кнопку, когда я уже проснулся :)
Германн (2015-11-04 00:54:00) [22]
> Smile © (03.11.15 17:26) [11]
>
> На мой взгляд, не исключено, что чего-то недопонял
Угу. Психологию новичков. Во всех статьях, начиная со знаменитой статьи ЕФ о жизни и смерти в рантайме показано как нужно динамически создавать компоненты и как им назначать обработчики событий. Формы тоже можно создавать динамически и можно назначать им обработчики. Вот только у компонент нет обработчиков OnCreate, а у форм и датамодулей есть. А назначить его динамически форме хочется. :)
sniknik (2015-11-04 00:52:00) [23]> чего-то недопонял
метод oncreate <> конструктору объекта.
если в будильниках понятнее чем код, то вот аналогия - представь будильник который звонит не сам, а по нажатию на кнопку... ну, а чтобы автоматизировать нажатие в определенное время будильник ставят в часы с кукушкой... время приходит кукушка вылетает долбит по кнопке - будильник звонит... просто же. ну вот, а теперь захотели менять мелодии сменой будильников с ними, причем выбирать мелодию прямо в момент звонка. и что делать? если извне системы, ориентируясь на сам звонок, то ничего "поезд"(кукушка) уже ушел когда услышали... а вот если изнутри, то там процесс звонка не одномоментный, есть еще действия "открытие дверцы кукушки", начало "вылета"... ориентируясь на них "будильники" можно менять... ПРОФИТ.
Smile (2015-11-03 17:26:00) [24]Событие нужно назначать когда форма уже создана? т.е. метод крейт был вызван.
На мой взгляд, не исключено, что чего-то недопонял, похоже на то, как заставить позвонить будильник установленный на 7:00, после того как он позвонил, попросить его позвонить в 6:00 в те же сутки. Хотя не уверен, что правильно понял вопрос топика.
sniknik (2015-11-03 15:31:00) [25]> лень вызвать процедуру явно, поетому мы напишем класс.
ну, есть вариант, что эта самая процедура должна оперировать классовыми методами/переменными... а вы сразу "со своей колокольни".
кстати классы на основании форм удобны, их даже IDE поддерживает, в нужные места inherited расставляет, и наследуется прямо из меню. чего еще нужно?
кгшзх (2015-11-03 15:00:00) [26]вот это по нашему, по бразильски.
лень вызвать процедуру явно, поетому мы напишем класс.
sniknik (2015-11-03 14:45:00) [27]> если я пишу Form := TForm.Create(nil); а затем Form.OnCreate := eventProc;
//TForm2
TForm2 = class(TForm)
private
public
constructor CreateProc(AOwner: TComponent; Proc: TNotifyEvent);
end;
constructor TForm2.CreateProc(AOwner: TComponent; Proc: TNotifyEvent);
begin
onCreate:= Proc;
inherited Create(AOwner);
end;
//TForm1
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2:= TForm2.CreateProc(self, FormCreate);
Form2.ShowModal;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage(TControl(Sender).Name);
end;
кгшзх (2015-11-03 13:56:00) [28]можно написать конструктор с доп. параметром
для TForm?
Sha (2015-11-03 13:55:00) [29]можно написать конструктор с доп. параметром
кгшзх (2015-11-03 13:55:00) [30]чтобы срабатывало вызови сам
gedevan (2015-11-03 13:48:00) [31]я спрашивал как так подсунуть чтобы оно срабатывало.
кгшзх (2015-11-03 13:47:00) [32]ты спрашивал как подсунуть.
я тебе сказал как подсунуть.
другого способа нет, так как событие это свойство а обработчик это значение
gedevan (2015-11-03 13:42:00) [33]и? суть в том что если я пишу Form := TForm.Create(nil); а затем Form.OnCreate := eventProc;
то это ничего не дает, т.к. он крейт у формы уже случился.
кгшзх (2015-11-03 13:38:00) [34]событие это свойство. процедура это значение этого свойства.
еще должен быть оператор присваивания между ними.