Разработка программного кода
Разработка программного кода
Объявите в разделе 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; //включаем первый таймер
end;
//Уменьшаем прозрачность на 1
Form1.AlphaBlendValue:= Form1.AlphaBlendValue – 1;
end;
Здесь через каждые 100 мс прозрачность формы уменьшается на 1. Когда форма становится полностью прозрачной, мы случайным образом выбираем другой цвет, выключаем таймер, по которому происходит уменьшение насыщенности цвета, и включаем первый таймер, который плавно увеличивает насыщенность цвета.
Теперь программу можно откомпилировать, скопировать файл .scr в папку с хранителями экрана (для Windows ХР это папка WindowsSystem32), открыть окно параметров Рабочего стола и выбрать хранитель экрана, соответствующий нашей программе.
Разработанный нами хранитель экрана в действии показан на рис. 5.2. В данном случае был случайным образом выбран желтый цвет заполнения и происходит медленное насыщение этим цветом. Можно разглядеть папки, которые видны сквозь полупрозрачную форму.
Рис. 5.2. Хранитель экрана в действии
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Как избежать создания некорректного программного кода
Как избежать создания некорректного программного кода Каждая ошибка, не допущенная вами в исходном коде, — это, прежде всего, еще одна сэкономленная ошибка, которую вам не придется отыскивать на стадии отладки программы или в процессе проверки работоспособности ее
Перенос имеющегося программного кода
Перенос имеющегося программного кода Единая модель данных Windows призвана минимизировать объем возможных изменений исходного кода, но полностью избежать необходимости внесения изменений невозможно. Например, такие функции, как HeapCreate и HeapAlloc (глава 5), которые имеют дело
Запуск нового программного кода
Запуск нового программного кода Наконец, рассмотрим запуск на выполнение нового, отличного от родительского процесса программного кода, образ которого содержится в отдельном исполняемом файле в качестве дочернего процесса. Для этой цели в QNX существуют две группы
Вызов окна программного кода
Вызов окна программного кода Для того чтобы открыть окно программного кода для существующего модуля, модуля класса или пользовательской формы, в редакторе Visual Basic предусмотрен целый ряд совершенно различных способов. Сначала нужно найти и выделить объект в окне
Печатание программного кода
Печатание программного кода Окна программного кода в VBA являются, по сути, простыми текстовыми редакторами, правда, у них есть специальные возможности для создания и редактирования именно VBA-кода.Печатание VBA-операторов происходит точно так же, как и в обычном текстовом
Перемещение в окне программного кода
Перемещение в окне программного кода В программном коде практически любой программы может оказаться немало строк, и тогда простое перелистывание текста программы в окне программного кода для поиска будет выглядеть слишком примитивным в таком элегантном окружении.
Разделение окна программного кода
Разделение окна программного кода Любое окно программного кода можно разделить на два (рис. 5.14). Это позволит вам видеть одновременно различные части программного кода одного и того же модуля. В этом случае очень удобно также копировать текст из одной части программного
Созидательные возможности окна программного кода
Созидательные возможности окна программного кода Зачем печатать программный код самим, если кто-то может напечатать его за вас? Редактор Visual Basic балует вас возможностью автоматического ввода совершенно непригодных для запоминания терминов VBA и как раз в самый
Обращение к окнам из программного кода
Обращение к окнам из программного кода Прямо из программного кода проще всего обращаться к тому окну, в котором открыт редактируемый документ во время запуска процедуры. Для указания окна используется объект ActiveWindow.Для определения окна прямо в программном коде вам
Блоки программного кода
Блоки программного кода Два и более операторов присваивания, а также вызовов процедур или функций можно выделять в блоки программного кода при помощи ключевых слов begin и end. Такие блоки используются в конструкции with-do, а также в рассматриваемых ниже циклических
Использование фрагментов программного кода C#
Использование фрагментов программного кода C# Перед использованием TextPad следует упомянуть еще об одном бесплатном расширений, которое вы можете установить. Перейдите на страницу http://www.textpad.com/add-ons/cliplibs.html и загрузите файл csharp_l.zip с библиотекой фрагментов C#, которую
Окно определений программного кода
Окно определений программного кода Если вы имеете опыт программирования в .NET 1.1, то должны знать об утилите Windows Forms Class Viewer, wincv.exe (утилита обзора классов Windows Forms). Этот инструмент позволяет задать имя .NET-типа и просмотреть его C#-определение. В версии .NET 2.0 утилиты wincv.exe уже
Фрагменты программного кода и окружения
Фрагменты программного кода и окружения В Visual Studio 2005 (как и в Visual C# 2005 Express) предлагаются разнообразные возможности автоматического добавления сложных блоков программного кода C# с помощью выбора вариантов меню, контекстно-зависимых щелчков кнопкой мыши и/или комбинаций
Анализ программного кода делегирования
Анализ программного кода делегирования Предложенный выше метод Main() начинается с создания экземпляров типов Garage и ServiceDepartment. Когда вы пишете// Помыть все грязные машины.g.ProcessCars(new Car.CarDelegate(sd.WashCar));это на самом деле означает: "Добавить указатель на метод ServiceDepartment.WashCar() к
Разделы программного кода
Разделы программного кода Возможно, одной из самых полезных директив препроцессора являются #region и #endregion. Используя эти признаки, вы указываете блок программного кода, который можно скрыть от просмотра и идентифицировать информирующим текстовым маркером. Использование
Модель программного кода Web-страницы ASP.NET
Модель программного кода Web-страницы ASP.NET Web-страницы ASP.NET могут строиться с использованием одного из двух подходов. Вы можете создать один файл *.aspx, который будет содержать комбинацию программного кода сервера и HTML (по примеру классической технологии ASP). Для создания