Цель работы — создать проект, который иллюстрирует использование таймера для создания потока событий.
Поместим на Форму панель, добавим кнопки «Пуск» и «Стоп», таймер. Основным свойством объекта Timer является Interval — время срабатывания таймера в миллисекундах. По истечении этого промежутка времени возникает событие OnTimer. Таким образом, программа получает возможность периодически запускать процедуру обработки, в которой без вмешательства пользователя будут выполняться какиелибо действия.
Рис. 80. Окно проекта
Панель является контейнером, внутри которого может перемещаться объект. В качестве такого выберем объект Shape (Фигура), основными свойствами которого являются:
- • stCircle — крут;
- • stEllipse — эллипс;
- • stRectangle — прямоугольник;
- • stRoundRect — прямоугольник со скругленными углами;
- • stRoundSquare — квадрат со скругленными углами;
- • stSquare — квадрат.
Для задания цвета и способа заливки используется свойство Brush (Кисть).
Объект Shape перемещается с помощью изменения координат фигуры на панели, т. е. изменения свойств Left и Тор: к Left прибавляется величина смещения по оси Ох — dx, а к Тор — величина смещения по оси Оу — dy. Тогда фигура будет двигаться по прямой, по направлению вектора (dx, dy).
Чтобы фигура отражалась от границ панели, необходимо в момент соприкосновения фигуры с вертикальными границами менять знак dx, а при соприкосновении фигуры с горизонтальными границами — знак dy на противоположный. При написании процедуры следует учитывать, что правая и нижняя границы фигуры вычисляются по формулам Left + Width и Тор + Height соответственно.
implementation.
const.
dx: integer = 5;
dy: integer = 5; { значения должны сохраняться между вызовами }
{$R *.dfm}
procedure TForml. TimerlTimer (Sender: TObject);
begin.
with Shapel do begin.
if (Left = Panell. Width) then dx := -dx;
Left := Left + dx;
if (Top = Panell. Height) then dy := -dy;
Top := Top + dy; end;
end;
Кнопка «Пуск» включает таймер: свойство Timerl. Enabled = False. Кнопка «Стоп» выключает таймер: свойство Timerl. Enabled = True. Начальное значение свойства, равное False, устанавливается в Инспекторе объектов. Тогда при запуске программы шарик двигаться не будет, так как нет сигналов от таймера.
Движение начнется при нажатии кнопки «Пуск» и прекратится при нажатии кнопки «Стоп».
Рис. 81. Окно разработанной программы