Компонент Timer дозволяє задавати...

На цьому кроці ми розглянемокомпонентTTimer.

КомпонентTimerдозволяєзадавати у додатку інтервали часу. Таймер знаходить численнізастосування: синхронізація мультиплікації, закриття якихось вікон, з якими користувач тривалий час не працює, увімкнення зберігача екрана або закриття зв'язків з віддаленим сервером за відсутності дій користувача, регулярне опитування якихось джерел інформації, завдання часу у відповідь у навчальних програмах - це безліч завдань, у яких потрібно ставити інтервали часу, вирішується з допомогою таймера.

Таймер -невізуальний компонент, який може розміщуватись у будь-якому місці форми. КомпонентTTimerмає дві властивості:

Ці властивості дозволяють керувати компонентом. ВластивістьIntervalзадає період спрацьовування таймера. Через заданий інтервал часу після попереднього спрацьовування або після програмної установки властивостіIntervalабо після запуску програми, якщо значенняIntervalвстановлено під час проектування, таймер спрацьовує, викликаючи подіюOnTimer. У обробнику цієї події записуються необхідні операції.

Якщо встановитиInterval = 0абоEnabled = False, то таймер перестає працювати. Щоб запустити відлік часу, потрібно або задатиEnabled = True, якщо встановлено позитивне значенняInterval, або задати позитивне значенняInterval, якщоEnabled = False>.

Наприклад, якщо потрібно, щоб через5 секундпісля запуску програми закрилася форма - заставка, що відображає логотип програми, на ній треба розмістити таймер, задати в ньому інтервалInterval = 5000, а в обробник подіїOnTimerвставити операторClose,закриває вікно форми.

Якщо необхідно в деякій процедурі запустити таймер, який відрахував би заданий інтервал, наприклад, 5 секунд, після чого потрібно виконати деякі операції та відключити таймер, це можна зробити так. При проектуванні таймер робиться доступним (Enabled = True), але властивістьIntervalзадається рівною0. Таймер не працюватиме, поки в момент, коли потрібно запустити таймер, не виконається оператор

Інший еквівалентний спосіб розв'язання задачі - використання властивостіEnabled. Під час проектування задається значенняInterval = 5000та значенняEnabled = False. У момент, коли треба запустити таймер, виконується оператор:

Таймер точно витримує задані інтервалиInterval, якщо вони досить великі - сотні та тисячі мілісекунд. Якщо ж задавати інтервали тривалістю десятки або одиниці мілісекунд, то реальні інтервали часу виявляються помітно більшими внаслідок різних накладних витрат, пов'язаних із викликами функцій та іншими обчислювальними аспектами.

Таким чином, компонентTTimerвикористовується в тих випадках, коли в програмі необхідноперіодично виконувати певну діюі при цьому не завантажувати процесор перевіркою деяких умов. Наприклад, простий періодичний контроль поточного часу (за допомогою підпрограм отримання поточної дати/часу або стандартної функціїGetTickCount, що повертає число мілісекунд, що пройшли з півночі) безпосередньо з програми - рішення не оптимальне. Воно не дозволяє системіWindowsефективно керувати роботою інших програм.

Microsoftрекомендує відстежувати повідомлення, що надходять від системного таймераWindows(таке системне повідомлення позначаєтьсяWM_Timer). За допомогою компонентаTTimerможна включити генерацію подібних повідомлень із заданою періодичністю та виконувати певну частину обчислень саме в обробнику цієї події.

Наведемо стандартний приклад використання таймера - створимо електронний годинник (рис.1.).

Мал.1. Використання компонентаTTimer

Для цього розмістимо на формі наступні компонентиTTimerтаTLabel(рис.2).

Мал.2.Windows-вікно прикладу при проектуванні

Обробник подіїOnTimerвиглядає так:

Значення властивостіIntervalвстановлено1000 мс(одна секунда). Поточний час повертається стандартною функцієюTimeі потім перетворюється на рядок за допомогою функціїTimeToStr.

На наступному кроці ми розглянемокомпонентTPaintBox.