Delphi. Учимся на примерах - [7]
Разработка формы
Создадим новый проект Delphi. Как известно, экранные заставки хранятся в файлах с расширением .scr, а по умолчанию проект Delphi компилируется как выполняемый файл .exe. Для того чтобы наша программа имела расширение .scr, выполним команду меню Project→Options, на вкладке Application диалогового окна Project Options введем в поле Target file extension значение scr (рис. 5.1) и нажмем кнопку OK.
Все что нам понадобится на форме, — это два компонента Timer категории System. Первый будет служить для реализации постепенного насыщения формы цветом — для этого таймера следует изменить значение свойства Interval на 100. Второй таймер потребуется при постепенном уменьшении насыщенности цвета вплоть до того момента, когда форма вновь станет полностью прозрачной. Для этого таймера свойству interval следует также присвоить значение 100, а значение свойства Enabled изменить на False, поскольку изначально "затухания" происходить не будет.
Рис. 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; //включаем первый таймер
> end;
> //Уменьшаем прозрачность на 1
> Form1.AlphaBlendValue:= Form1.AlphaBlendValue – 1;
>end;
Здесь через каждые 100 мс прозрачность формы уменьшается на 1. Когда форма становится полностью прозрачной, мы случайным образом выбираем другой цвет, выключаем таймер, по которому происходит уменьшение насыщенности цвета, и включаем первый таймер, который плавно увеличивает насыщенность цвета.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.