![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать процедуру на выполнение в Timer.OnTimer? [D7, XP]
Сергей © (2009-11-03 17:18:00)Всем привет. Динамически создал таймер,
v_Timer:=TTimer.Create(Form1); с интервалом
v_Timer.Interval:=60000; как в Timer.OnTimer передать процедуру, которая будет выполняться каждые 60 сек.
Leonid Troyanovsky (2009-11-04 21:21:00) [1]
> brother © (04.11.09 12:31) [11]
А, вот, нашел интересное место в генофонде (D6):
procedure TTimer.UpdateTimer;
begin
KillTimer(FWindowHandle, 1);
if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then
Допустим, что интервал и FEnabled, но Assigned(FOnTimer) -
это уже перебор.
--
Regards, LVT.
brother (2009-11-04 12:31:00) [2]> в данном примере нужно было привести имя секции
согласен! поторопился с оформлением ;)
Anatoly Podgoretsky (2009-11-04 12:28:00) [3]Но у тебя то положен на форму в дизайн тайм, значит у тебя еще и утечка, против уничтожения, но тогда надо давать не противоречивый пример, что бы было видно, что это нужно, в данном примере нужно было привести имя секции
brother (2009-11-04 12:11:00) [4]> То есть ты сам убираешь все компоненты на форме, абсолютно
> все и только потом разрушаешь форму?
конечно нет, но для автора я специально акцентировал внимание на ручное удаление, ибо
> v_Timer:=TTimer.Create( Form1);
будет не всегда, и нужно понимать, что за этим последует...
Anatoly Podgoretsky (2009-11-04 12:09:00) [5]> brother (04.11.2009 11:49:06) [6]
То есть ты сам убираешь все компоненты на форме, абсолютно все и только потом разрушаешь форму?
{RASkov} (2009-11-04 12:04:00) [6]> [6] brother © (04.11.09 11:49)
если б было v_Timer:=TTimer.Create(nil); - то другое дело
или например owner не nil, но который "живет намного дольше, чем нужно".... пример Application-Owner а объект "лежит" на форме... которая "умирает" во время работы приложения... Но это уже отдельный разговор зачем так делать.
brother (2009-11-04 11:49:00) [7]> Ты что форме не доверяешь?
думаю, привыкать за собой убирать надо с таких вещей...
Anatoly Podgoretsky (2009-11-04 09:27:00) [8]> brother (04.11.2009 07:37:04) [4]
Ты что форме не доверяешь?
brother (2009-11-04 07:37:00) [9]кстати... когда таймер более не понадобится (например в OnDestroy формы)- уничтожить не забудь:
v_Timer.Free;
brother (2009-11-04 06:40:00) [10]
TForm1 = class(TForm)
...
v_Timer: TTimer;
...
procedure OnV_Timer (Sender: TObject);
end;
...
procedure TForm1.OnV_Timer (Sender: TObject);
begin
<все выполняемое в таймере>
end;
...
v_Timer:=TTimer.Create(Form1); с интервалом
v_Timer.Interval:=60000;
v_Timer.OnTimer := OnV_Timer;
...
эхх.. молодежь!)
clickmaker (2009-11-03 17:22:00) [11]Timer.OnTimer := TimerOnTimer;
где TimerOnTimer метод формы Form1 с параметром sender: TObject
Плохиш (2009-11-03 17:22:00) [12]v_Timer.OnTimer := <нужная процедуре-метод>;