WinAPI. Таймер

altСегодня, я решил, поговорить о таймере: как его использовать в своем приложении. Потому что возникают случаи, когда его использование просто необходимо — отмерить время действия какого-либо процесса, назначить выполнение в четко выбранное время и т.д. Описываю его Вам для того, что совсем недавно сам столкнулся с этим. Не буду описывать программу полностью, потому что, все что Вам нужно, можно взять с первой статьи: создание формы и контролов, обработка сообщений и т.д.

Первое, что нам понадобиться, так это нужно объявить константу «Id_t», которая послужит нам идентификатором самого таймера:

const
Id_t=1;
Следующим этапом будет создание котрола «Edit», в котором мы сменим надпись после того как сработает таймер. В функции обработки сообщений производим следующие действия:

1. установим интервал срабатывания таймера;
2. по закрытию приложения будем уничтожать таймер;
3. обработчик события срабатывания таймера будет выполнять действия.

//по созданию формы установим таймер с интервалом в 2000 мил. секунд.
wm_Create:
begin
SetTimer (wnd,Id_t,2000,nil);
end;
//по закрытию формы уничтожим таймер
WM_Destroy:
begin
KillTimer (TMainForm,Id_t);
Postquitmessage(0);
Result:=0;
Exit;
end;
//по срабатыванию таймера производим манипуляции или действия.
wm_Timer:
begin
//меняем в текстовом поле надпись
setwindowtext(Edit1,’Таймер работает!’);
//заметтье если вместо «Edit1» написать хэндл окна или какого либо другого контролла, то надпись будет передана именно ему…
end;
Раз уж мы заговорили о таймере, то не лишним будет поговорить и о системном времени, а именно, попробуем выдрать часы, минуты и секунды и т.д. Это нисколько не сложно, но бывает необходимо… хотя…

Объявим переменную и в дальнейшем будем с ней работать:

time_data:tsystemtime;

Теперь если воспользоваться процедурой «getlocaltime» и передать ей в качестве параметра нашу переменную, то получем полное системное время: час, минуты, секунды, число дня, месяц и год и день недели… Теперь объявим еще несолько переменных:

var
d_day: string;
d_month: string;
d_year: string;
d_day_week: string;
d_hour: string;
d_minute: string;
d_second: string;
d_milliseconds: string;
Вроде все готово преступим к какингу… вернее к кодингу:

Можно создать процедуру нажатия на кнопку(ищи пример создания кнопки и процедуру нажатия в первом уроке)

getlocaltime(time_data); //объеснять думаю не надо?
//а вот здесь остановимся по подробней, дело в том, что мы не зря объявили переменные, как видим процедура «str» //имеет два параметра:
//первый отвечает за то, что будем переводить, а второй куда переводить.
//и таким же макаром разделываемся со всем остальным…
str(time_data.wday, d_day);
str(time_data.wmonth, d_month );
str(time_data.wyear, d_year );
//только здесь мы не получим название дня недели, а получим число..
str(time_data.wdayofweek, d_day_week);
str(time_data.whour, d_hour);
str(time_data.wminute, d_minute);
str(time_data.wsecond, d_second);
str(time_data.wmilliseconds, d_milliseconds);
end;

Понравилась статья? Поделиться с друзьями: