Текущий архив: 2008.03.02;
Скачать: CL | DM;
Вниз
Как правильно работать с Timer? Найти похожие ветки
← →
Volterman (2007-07-18 10:59) [0]Хотелось бы увидеть полный пример работы с таймером. В качестве примера приведу свою ситуацию.
Есть главное окно и цикл обработки сообщений.
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) [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.
Страницы: 1 вся ветка
Текущий архив: 2008.03.02;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.013 c