Чтение онлайн

на главную - закладки

Жанры

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

Рис. 5.1. Выбор расширения для откомпилированной программы

Изменим свойства формы согласно табл. 5.1.

Таблица 5.1. Свойства формы хранителя экрана

Свойство Значение Пояснение
BorderStyle bsNone Окно программы будет отображаться без границы и заголовка
Align alClient Окно
программы будет заполнять весь экран
FormStyle fsStayOnTop Окно программы будет располагаться поверх всех остальных окон
AlphaBlend True Разрешаем изменение степени прозрачности формы
AlphaBlendValue 1 Изначально окно программы полностью непрозрачное

Разработка программного кода

Объявите в разделе var переменную mouse типа TPoint. В этой переменой будут храниться координаты указателя мыши, при изменении которых программа должна закрываться:

var

 Form1: TForm1;

 mouse: TPoint;

Программа экранной заставки должна закрываться не только по движению мыши, но при любой активности пользователя. Для этого создадим обработчики некоторых событий главной формы. Создание формы (событие OnCreate):

procedure TForm1.FormCreate(Sender: TObject);

begin

 GetCursorPos(mouse); //сохраняем координаты курсора мыши

 ShowCursor(False); //прячем курсор

end;

Форма должна закрываться по нажатию любой клавиши (событие OnKeyPress) и при движении мышью (событие OnMouseMove). Код обработчика события OnKeyPress:

procedure TForm1.FormKeyPress(Sender: TObject; var Key:Char);

begin

 Halt;//завершение работы программы

end;

Для события OnMouseMove программный код будет несколько иным:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

 if (X <> mouse.X) or (y <> mouse.Y) then Halt;

end;

Здесь сначала выполняется проверка: были ли изменены координаты курсора. Если координаты курсора изменились, то, соответственно, мышь была сдвинута и следует закрыть программу.

Напишем собственную процедуру для выбора случайного цвета: color_check. Объявите ее как закрытый член класса формы:

type

 TForm1 = class(TForm)

 …

private

 { Private declarations }

 procedure color_check;

public

 { Public declarations }

end;

В

разделе implementation создадим реализацию процедуры color check:

procedure TForm1.colorcheck;

var

 ran: integer; //случайное число, соответствующее

 //определенному цвету

begin

 Randomize; //включаем генератор случайных чисел

 ran := random(6) + 1; //выбираем случайное число от 1 до 6

 //назначаем форме цвет, соответствующий выбранному числу

 case ran of

 1: Form1.Color:= clBlack;

 2: Form1.Color:= clWhite;

 3: Form1.Color:= clBlue;

 4: Form1.Color:= clGray;

 5: Form1.color:= clYellow;

 6: Form1.Color:= clGreen;

 end;

end;

Здесь случайным образом выбирается число от 1 до 6, в зависимости от того которого определяем цвет формы. Процедура color_check будет вызываться при каждом новом насыщении формы.

Обработчик события OnTimer первого таймера должен иметь следующий вид:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

 if Form1.AlphaBlendValue > 250

 then {проверяем: не полностью ли мы закрасили форму}

 begin

Timer1.Enabled:= False; //выключаем насыщение формы

Timer2.Enabled:= True; //включаем обратный процесс

 end;

 //постепенное насыщение формы

 Form1.AlphaBlendValue:= Form1.AlphaBlendValue + 1;

end;

Насыщенность постепенно увеличивается на 1, и выполняется проверка: не стала ли форма уже полностью закрашенной выбранным цветом. Если нет, то продолжаем увеличивать насыщенность цвета через каждые 100 мс. Когда форма будет полностью насыщенной, начинаем обратный процесс, который будет происходить под управлением второго таймера (событие Timer2.OnTimer):

procedure TForm1.Timer2Timer(Sender: TObject);

begin

 if Form1.AlphaBlendValue < 5

 then //если форма уже полностью прозрачная

 begin

color_check; //выбираем случайный цвет для формы

  Timer2.Enabled:= False; //выключаем второй таймер

  Timer1.Enabled:= True; //включаем первый таймер

Поделиться:
Популярные книги

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Друд, или Человек в черном

Симмонс Дэн
Фантастика:
социально-философская фантастика
6.80
рейтинг книги
Друд, или Человек в черном

Волхв

Земляной Андрей Борисович
3. Волшебник
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волхв

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле