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 ХР это папка Windows\System32), открыть окно параметров Рабочего стола и выбрать хранитель экрана, соответствующий нашей программе.
Разработанный нами хранитель экрана в действии показан на рис. 5.2. В данном случае был случайным образом выбран желтый цвет заполнения и происходит медленное насыщение этим цветом. Можно разглядеть папки, которые видны сквозь полупрозрачную форму.
Рис. 5.2. Хранитель экрана в действии
Полный исходный код модуля
Полный исходный код модуля программы Хранитель экрана представлен в листинге 5.1.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;
type TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
procedure color_check();
public
{ Public declarations }
end;
var
Form1: TForm1;
mouse: TPoint;
implementation
{$R *.dfm}
procedure TForm1.color_check();
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;
procedure TForm1.FormCreate(Sender: TObject);
begin
GetCursorPos(mouse); //получаем координаты курсора мыши
ShowCursor(False); //прячем курсор
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key:Char)
begin
Halt; //завершение работы программы
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if (X <> mouse.X) or (Y <> mouse.Y) then Halt;
end;
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;
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;
end.
⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter05.
Глава 6
Программа просмотра рисунков
Постановка задачи
Разработать программу для просмотра рисунков. Программа должна отображать рисунок, загруженный с помощью стандартного диалогового окна обзора. Кроме того, любой рисунок должен быть связан с данной программой и открываться ею по двойному щелчку мышью или нажатию клавиши <Enter> в Проводнике или любом другом файл-менеджере.
Разработка формы
Создайте новый проект Delphi. Разместите на форме компонент Image категории Additional, который будет служить для отображения рисунка. Для того чтобы при любых размерах окна рисунок всегда заполнял всю форму, следует изменить значение свойства Align на alClient.
Для вызова диалоговых окон открытия и сохранения рисунка воспользуемся компонентами OpenDialog и SaveDialog категории Dialogs. Присвоим свойству Name этих компонентов значения Open1 и Save1 соответственно. Для обоих компонентов присвойте свойству Filter значение Все файлы|*.*.
Для доступа к функциям программы будем использовать команды меню. Разместите на форме компонент MainMenu категории Standard. Для того чтобы создать пункты меню, следует дважды щелкнуть мышью на компоненте MainMenu1, в результате чего откроется редактор меню, изображенный на рис. 6.1.
Для того чтобы добавить новый пункт, следует щелкнуть мышью в этом окне на пустом элементе меню и изменить в инспекторе объектов значение свойства Caption. Вначале создаются пункты меню, а затем аналогичным образом — подпункты (команды). Для создания разделителей свойству Caption следует присвоить значение - (дефис).