НОУ ІНТУІТ, Лекція, Екранна заставка
Компонент TTimer
Настала черга таймера. Він нам потрібен, щоб змусити напис мітки змінюватися - показувати поточний час. Крім того, завдяки цьому компоненту ми зможемо забезпечити безперервний рух.
Таймер TTimer знаходиться на вкладціSystem Палітри компонентів:
Компонент цейневізуальний- невидимий для користувача, тому його можна встановити в будь-яке місце на формі, щоб він вам не заважав при проектуванні форми, не перекривав інші компоненти. Компонент буде вам видно, незважаючи на чорний колір форми.
У компонента є всього за однією властивістю та подією, які нам можуть знадобитися:
Interval – це властивість встановлює інтервал часу, коли таймер спрацює. За замовчуванням він дорівнює 1000, що відповідає 1 секунді. Це нам і потрібно, тому залишимо значення якості без змін. А на майбутнє запам'ятайте: якщо вам потрібно встановити інший час, то множте необхідну кількість секунд на 1000 і отримайте те, що потрібно.
Далі, переходимо вІнспекторі об'єктівна вкладкуПодії. Нас цікавить лише одна подія:
OnTimer - подія спрацьовує щоразу, коли закінчується встановлений інтервал. Згенеруйте код цієї події так само, як раніше генерували подію OnClick для кнопок, ми заповнимо його трохи пізніше.
Ось тепер нам потрібно продумати алгоритм дій - як ми рухатимемо напис. Ідея така: згенеруємо випадкове число від 0 до 3, вийде 4 варіанти. Адже у нас є 4 напрямки, куди рухатися: вгору, вниз, ліворуч чи праворуч. Залежно від отриманого випадкового числа вибиратимемо і напрямок руху. Двигати будемо, скажімо, на 50 пікселів вліво-вправо, або на 25 пікселів вгору-вниз. А якрухати? Так, дуже просто! Left – це відстань у пікселях від лівого краю форми до компонента. Припустимо, у мітки Left дорівнює 100. Тобто від краю форми до мітки 100 пікселів. Якщо ми додамо ще 50, то тим самим зрушимо мітку вправо, а якщо навпаки, віднімемо, то зрушимо вліво. Для руху вгору-вниз використовуємо властивість Top – відстань від верхньої частини форми до компонента. Рухи будуть аналогічними, але на 25 пікселів.
Якщо отримаємо напрямок 0, то рухатимемо праворуч: додавати до властивості Left мітки 50 пікселів. Якщо напрямок 1, то рухаємо вліво, забираючи 50 пікселів від властивості Left. Якщо напрямок 2, то рухаємо вниз: додаємо 25 пікселів до властивості Top мітки. Ну і якщо напрямок 3, то рухаємося вгору, додаючи 25 пікселів до властивості Top .
Причому може статися так, що напис опиниться за межами вікна. У цьому випадку нам потрібно буде повернути її назад у ці межі. Зробимо це наступним чином: якщо мітка пішла вліво, то властивості Left просто надамо значення 0 - мітка повернеться в межі форми і виявиться притиснутою до лівого краю.
Якщо мітка пішла за правий край, то надамо властивості Left ширину форми мінус ширину мітки, таким чином, мітка виявиться притиснутою до правої частини форми і буде в її межах.
Так само будемо повертати мітку, якщо вона піде вгору або вниз за межі форми.
Значить, нам знадобиться тільки одна ціла змінна , в яку ми будемо генерувати напрямок - 4 позиції. Для цього використовуємо функцію Random(), яку ще називаютьгенератором випадкових чисел.
Random() - функція повертає випадкове число (англ.random- випадковий) від 0 до вказаної кількості чисел мінус один. Синтаксис дуже простий:
Функція поверне випадкове число від 0 до -1. Тобто у випадку
у змінну i потрапить випадкове число від 0 до 3. Цим ми скористаємося. А щоб не витрачати зайву пам'ять, змінну i оголосимо з типом byte.
Незважаючи на амбітну ідею, код події OnTimer буде досить простий:
Ось і весь код! Вам може виявитися незрозумілим рядок
Таким чином, ми надамо властивості Caption мітки lClock поточний час . Роботі з датою та часом у нас буде присвячена наступна лекція, тож поки що на цьому не зациклюйтесь. Весь інший код має бути зрозумілим.
Власне, перевірити роботу заставки можна вже зараз, тільки не забудьте заздалегідь зберегти зміни. Щоб закрити вікно, яке не має для цього кнопок і меню , скористайтеся стандартними кнопками Windows.
Але заставка на цьому ще не закінчена. Насамперед, через включену налагоджувальну інформацію програма має великий розмір, майже 15 мегабайт! Крім того, ми отримали exe-файл, а нам потрібна заставка з розширенням*.scr. Виправляємо ці недоліки:
- Вибираємо команду менюПараметри проекту>.
- У розділі вибираємо підрозділ.
- У полі замістьMyClockвказуємоMyClock.scr(тобто додаємо потрібне розширення).
- Відключаємо прапорець, щоб не було конфлікту розширень.
- У розділі переходимо на підрозділ.
- Відключаємо прапорець, щоб зменшити розмір отриманого файлу.
- Зберігаємо проект і заново його запускаємо. В результаті в папці11-01отримуємо необхідний файлMyClock.scrрозміром трохи більше 1,5 мегабайта.
Якщо вас влаштовує, що для закриття заставки доводиться натискати, то нічого більше робити не потрібно. Але мені хотілося б, щоб цю заставку можна було закрити кнопкою(код якої 27 у таблиці символів ANSI), як будь-яку іншу нормальну заставку. А для цього доведеться трохи доопрацювати проект.
Поверніться доРедактор форм, і виділіть саму форму. УІнспекторі об'єктівперейдіть на закладкуПодіїі згенеруйте подію форми OnKeyPress, яка спрацьовує при натисканні на будь-яку кнопку:

Його код дуже простий:
Збережіть проект і знову запустіть його. Заставка повинна закриватися при натисканні клавіші .Lazarusнам більше не потрібний, можете його закрити.
Встановлення заставки у Windows
Більшість із вас напевно знає, як отриману заставку встановити у своїй Windows. Для тих, хто цього таки не знає, розповім докладно:
- Знайдіть файлMyClock.scr, він має бути в папці11-01, де ви зберігаєте проекти.
- Скопіюйте цей файл у папкуC:\Windows
- Клацніть правою кнопкою на вільне від вікна місцеРобочий стілі виберіть "Властивості".
- У вікні "Властивості: Екран" перейдіть на вкладку "Заставка".
- Там виберіть нашу заставку та потрібний інтервал її появи, після чого натисніть :

Якщо користувач протягом зазначеного інтервалу не рухатиме мишею і не натисне жодної клавіші, то з'явиться наша заставка. На сьогодні це все.