Доступно только для пользователейПостановка задачи [size=8]Разработать хранитель экрана для Windows (файл с расширением *-. scr). Форма масштабируется на весь экран, заголовок скрывается, а любые действия пользователя должны прекращать работу программы. Случайным образом выбирается цвет формы, затем происходит ее плав- ное насыщение случайно выбранным цветом. Первоначально форма полностью прозрачная. Когда она станет полностью непрозрачной, сле- дует медленно убирать насыщенность цвета, пока она опять не станет прозрачной. После этого вновь выбирается случайный цвет для насы- щения, и описанный процесс повторяется сначала. Разработка формы Создадим новый проект Delphi. Как известно, экранные заставки хранятся в файлах с расширением . scr, а по умолчанию проект Delphi компилируется как выполняемый файл . ехе. Для того чтобы наша про- грамма имела расширение . scr, выполним команду меню Project —> Options, на вкладке Application диалогового окна Project Options введем в поле Target file extension значение scr (рис. 5.1) и нажмем кнопку ОК. Все что нам понадобится на форме, — это два компонента Timer категории System. Первый будет служить для реализации постепенного насыщения формы цветом — для этого таймера следует изменить зна- чение свойства Interval на 100. Второй таймер потребуется при по- степенном уменьшении насыщенности цвета вплоть до того момента, когда форма вновь станет полностью прозрачной. Для этого таймера свойству i n t e r v a l следует также присвоить значение 100, а значение свойства Enabled изменить на False, поскольку изначально "затуха- ния" происходить не будет.
Заполним данные Form: BorderStyle:=bsnone; Aligh:=alClient; FormStyle:=fsStayOnTop; AlphaBlend:=true; AlphaBlendValue:=1;
Начнем кодить: Объявим глобальную переменную, для сохранения начальных координат мыши.
Code
Var Mouse:TPoint;
On Create(у Form):
Code
GetCursorPos(mouse); ShowCursor(false);
Далее в событии OnKeyPress:
Code
Halt;
И дописываем строчку в событии OnMouseMovie:
Code
if (y<>mouse.y) or (x<>mouse.x) then halt;
Ок. С формальностью закончили. Переходим к самому "хранителю экрана"(Заставке). Пишем процедуру для выбора случайного цвета. Заранее хочу вас заверить, что заставка будет ОЧЕНЬ примитивна. Но это, всего лишь пример =) Объявим в секции Private:
Code
private { Private declarations } procedure color_check(); public { Public declarations } end;
Вот сама процедура:
Code
procedure TForml.color_check(); var ran:integer; //случайное число, соответствующее определенному цвету begin Randomize; //включаем генератор случайных чисел ran := random(6) + 1 ; //выбираем случайное число от 1 до 6 //назначаем форме цвет, соответствующий выбранному числу case 1: Form1.Color:=clBlack; 2: Form1.Color:=ClWhite; 3: Form1.Color:=ClBlue; 4: Form1.Color:=ClYellow; 5: Form1.Color:=ClRed; 6: Form1.Color:=ClGreen; end; end;
Так же, следует добавить на форму 1 таймер.(интервал выбираете сами) В событии таймера пишем:
Code
if Forml.AlphaBlendValue > 250 then {проверяем: не полностью ли мы закрасили форму} begin Timerl.Enabled := False; //выключаем насыщение формы Timer2.Enabled := True; //включаем обратный процесс end; //постепенное насыщение формы Forml.AlphaBlendValue := Forml.AlphaBlendValue + 1;
Насыщенность постепенно увеличивается на 1, и выполняется про- верка: не стала ли форма уже полностью закрашенной выбранным цве- том. Если нет, то продолжаем увеличивать насыщенность цвета через каждые 100 мс. Когда форма будет полностью насыщенной, начинаем обратный процесс, который будет происходить под управлением второ- го таймера. Пишем(2 таймер):
Code
if Forml.AlphaBlendValue < 5 then //если форма уже полностью прозрачная begin color_check(); //выбираем случайный цвет для формы Timer2.Enabled := False; //выключаем второй таймер Timerl.Enabled := True; //включаем первый таймер end; //Уменьшаем прозрачность на 1 Forml.AlphaBlendValue := Forml.AlphaBlendValue - 1;
Здесь через каждые 100 мс прозрачность формы уменьшается на 1. Когда форма становится полностью прозрачной, мы случайным образом выбираем другой цвет, выключаем таймер, по которому происходит уменьшение насыщенности цвета, и включаем первый таймер, который плавно увеличивает насыщенность цвета. Теперь программу можно откомпилировать, скопировать файл . scr в папку с хранителями экрана (для Windows ХР это папка Windows \System32), открыть окно параметров Рабочего стола и выбрать хранитель экрана, соответствующий нашей программе.
Вот так просто можно сделать хранитель экрана. Удачи вам в ваших начинаниях!