Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как программно назначить форме событие Oncreate?


Страницы:   1 2

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]

событие это свойство. процедура это значение этого свойства.
еще должен быть оператор присваивания между ними.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо