![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно работать с Timer? [Delphi, Windows]
Volterman © (2007-07-18 10:59:00)Хотелось бы увидеть полный пример работы с таймером. В качестве примера приведу свою ситуацию.
Есть главное окно и цикл обработки сообщений.
while (msg.message <> WM_QUIT) do
begin
if PeekMessage(msg, 0, 0, 0, PM_REMOVE) then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
<Команды выполняющиеся постоянно>
end;
Надо с помощью таймера иммитировать многозадачность приложения (например что-то должно выполнятся каждую 1 сек, а что-то каждые 10 сек).
Чесно говоря я что-то не до конца понимаю как в KOL работать с таймером, обработку события OnTimer.
Инициализирую таймеры таким способом:
Timer1:=NewTimer(1000);
Timer1.Enabled:=True;
Timer2:=NewTimer(10000);
Timer2.Enabled:=True;
Дмитрий К (2007-07-18 11:40:00) [1]Не знаю как в вашем случае, а у меня работает:
program tstTimer;
uses
KOL;
type
PForm1 = ^TForm1;
TForm1 = object(TObj)
form, lb: PControl;
Timer1, Timer2 : PTimer;
procedure DoTimer(Sender: PObj);
end;
var Form1: PForm1;
procedure NewForm1(var Result: PForm1; AParent: PControl);
begin
New(Result, Create);
with Result^ do
begin
form := NewForm(AParent, 'Test Timer');
Applet := form;
lb :=NewListBox(form, []).SetAlign(caClient);
Timer1 := NewTimer(1000);
Timer1.OnTimer := DoTimer;
Timer2 := NewTimer(10000);
Timer2.OnTimer := DoTimer;
form.Add2AutoFree(Timer1);
form.Add2AutoFree(Timer2);
end;
end;
{ TForm1 }
procedure TForm1.DoTimer(Sender: PObj);
begin
lb.Add(int2str(Integer(Sender)));
end;
begin
NewForm1(Form1, nil);
Form1.Timer1.Enabled := True;
Form1.Timer2.Enabled := True;
Run(Applet);
end.