12. Компоненты, которые пригодятся

кнопку-стрелку. Данный компонент удобнее всего использовать вместе с длинными панелями инструментов или командных кнопок.

Панель System Таймер

В некоторых приложениях сложно обойтись без контроля за временем. Например, если создается программа-будильник, то в ней просто необходимо использовать таймер. Однако устроена работа с таймером в Windows довольно хитро. Это связано с тем, возможности этой операционной системы по поддержанию нескольких одновременно и притом активно работающих приложений довольно слабы. Если одна программа начинает длительные вычисления, не прерывая свою работу, то переключиться даже на текстовый редактор довольно затруднительно.

Поэтому корпорация Microsoft не рекомендует создавать программы, в которых ресурсы процессора захватываются надолго. Разработчикам предлагается регулярно передавать управление Windows, реагируя на генерируемые с заданной частотой сигналы от системного таймера.

Для поддержки пожеланий Microsoft в C++Builder реализован компонент Timer.

Этот компонент не отображается на экране и используется только внутри создаваемого приложения.

h02601.jpg

Чтобы запустить таймер, в его свойство Enabled надо записать значение true, чтобы остановить — значение false. Когда таймер запущен, он генерирует событие OnTimer, которое происходит регулярно, через заданные интервалы в миллисекундах, указываемые в свойстве Interval. Реагируя на эти события в программе, можно подсчитывать, например, сколько таких вызовов произошло с определенного момента, чтобы узнать потраченное время.

Когда происходит такое прерывание по таймеру, Windows может временно отложить выполнение текущего приложения и переключиться на решение более срочных задач — это вполне корректный прием при написании Windows-приложений, поэтому длинные вычисления лучше'разбивать на небольшие фрагменты и постепенно выполнять их, обрабатывая событие OnTimer и не захватывая ресурсы компьютера монопольно.

260