Готуємось до вивчення циклів. Компонент Timer у Lazarus

За допомогою цього компоненту можна реалізувати повторення команд через заданий інтервал часу.

Компонент Timer

Знаходиться цей компонент на вкладці System і має форму карманного годинника чи секундоміра.

Timer - компонент, назва якого відповідає сама за себе. Це лічильник, годинник, секундомір який після його активації дає можливість повторювати виконання команд через заданий інтервал часу. Після того як виконалась остання команда з тих, що ми запланували для повторення, таймер зупиняється на певний час, а потім знову повторює ті ж команди. Це відбуваєтиметься доки ми його не зупинемо. Як це робиться читайте далі.
Timer -  невізуальний компонент. Це означає, що під час роботи програми Ви не побачите його графічного відображення. Але під час розробки він буде доступний на формі як піктограма і розташовувати її потрібно на формі так, щоб вона не заважала роботі з іншими компонентами. 

Властивості

Enabled - властивість, що має значення (True/False) і означає працює таймер (True) чи ні (False).
Interval - (ціле число) властивість яка визначає проміжок часу у мілісекундах (1 секунда = 1000 мілісекунд).
Tag - (ціле число) властивість яку можна використовувати як значення лічильника для потреб, щоб не створювати окрему глобальну змінну.
Властивість Name вже знайома Вам. ЇЇ значення  можна залишити стандартним або змінити за власним бажанням.

Події

OnTimer - головна подія яка визначає роботу таймера і містить команди, що будуть повторюватись через визначений (властивість Interval) інтервал часу.
OnStartTimer - обробник для цієї події міститиме команди які виконаються у момент старту таймеру (Тоді, коли властивість Enabled набуває значення True).
OnStopTimer - обробник для цієї події міститиме команди які виконаються у момент зупинки таймеру (Тоді, коли властивість Enabled набуває значення False).

Працюємо з Timer

 

Розглянемо проект, форма якого має наступний вигляд:

Опишемо для себе "сценарій" роботи такої програми. Він простий. Коли ми клацнемо по кнопці Старт наш таймер повинен запрацювати (отже до цього він повинен бути вимкнений). Логічно, що при кнопці Стоп таймер повинен зупинити свою роботу. Таким чином нам потрібно створити вже два обробники події. Для кнопки Старт і для кнопки Стоп.

Щоб активувати таймер потрібно в обробнику події для кнопки Старт прописати код:

Timer1.Enabled:=True;

 

Щоб зупинити таймер потрібно в обробнику події для кнопки Стоп прописати код:

Timer1.Enabled:=False;

Як називається подія для кнопки коли ми по ній клацаємо? Виділіть цей рядок для підказки - OnClick.
А що ж повинно відбуватись коли таймер запрацює. Тут, поки що, не будемо ускладнювати собі життя а придумаємо просту задачу. Таймер повинен показувати скільки секунд він працює. Як було сказано раніше, роботу таймера визначає подія OnTimer. Вона містить команди, що будуть повторюватись через заданий властивістю Interval проміжок часу.
Якщо нам потрібно, щоб таймер показував кількість секунд яків він працює то логічно, що властивість Interval повинна містити значення, що дорівнює одній секунді. А це 1000 мілісекунд. Отже враховуючи сказане вище, наш таймер повинен мати наступні значення своїх властивостей:

Enabled повинен мати значення  False (ми запустимо його кнопкою Старт).
Interval повинен мати значення 1000.

Тепер залишилось визначити команди які будуть міститиь всередині обробника OnTimer. Саме в цьому обробнику команди будуть повторюватись через заданий інтервал. І саме ці команди повинні формувати нам нове значення пройденого часу і відображення їх на формі. Показувати ми будемо його в написі Label2 (на формі зеленим кольором). Зараз властивість Caption має значення " 0 секунд". Наша задача змінити його на число , що означає кількість секунд додавши слово "секунд" або Label1.Caption:=ЧислоУРядок(кількість_секунд)+'секунд';

Пригадайте як перевести ціле число у рядок - для підказки віділіть цей рядок до кінця - IntToStr(a).

Залишилось визначити, що буде містити і як буде змінюватись кількість секунд. Для цього можна створити змінну цілого типу даних або скористатись властивістю таймера Tag. Значення цієї властивості  є цілим число, а отже ми можемо змінити її додавши до вже існуючого значення якесь ціле число. Нам потрібно буде додати 1. Отже у обробнику OnTimer маємо дві команди:

Timer1.Tag:=Timer1.Tag+1;
Label2.Caption:=IntToStr(Timer1.Tag)+' секунд';

А отже редактор тексту має наступний вигляд:

Створіть проект і запустіть його на виконання. Клацніть кнопку Старт і переконайтесь, що значення Label2 змінює своє значення у відповідності до поставленої задач. Клацніть кнопку Стоп і переконайтесь, що таймер зупинив свою роботу.
Клацніть ще раз кнопку Старт. Що Ви спостерігаєте?

Додаткові завдання для зареєстрованих

ПОДІЛИТИСЯ У FACEBOOK