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

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

Как передать процедуру на выполнение в 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 := <нужная процедуре-метод>;


Наверх

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