Программирование в Delphi. Трюки и эффекты. Александр Чиртик
Чтение книги онлайн.

Читать онлайн книгу Программирование в Delphi. Трюки и эффекты - Александр Чиртик страница 4

СКАЧАТЬ 200;

      FlashWindowEx(fl);

      end;

      В данном случае инвертируется заголовок формы Form1. Кнопка на Панели задач может не только мигать, но и, например, быть скрыта или показана, когда в этом есть необходимость. Так, для скрытия кнопки приложения можно применить API-функцию ShowWindow:

      ShowWindow(Application.Handle, SW_HIDE);

      Чтобы показать кнопку приложения, можно функцию ShowWindow вызвать с равным SW_NORMAL вторым параметром.

      Полупрозрачные окна

      В Windows 2000 впервые появилась возможность использовать прозрачность окон (в англоязычной документации такие полупрозрачные окна называются Layered windows). Сделать это можно, задав дополнительный стиль окна (о назначении и использовании оконных стилей вы можете узнать из материалов, представленных в гл. 2). Здесь не будет рассматриваться использование API-функций для работы с полупрозрачными окнами, так как их поддержка реализована для форм Delphi. Соответствующие свойства включены в состав класса TForm.

      • AlphaBlend – включение или выключение прозрачности. Если параметр имеет значение True, то прозрачность включена, если False – выключена.

      • AlphaBlendValue – значение, обратное прозрачности окна (от 0 до 255). Если параметр имеет значение 0, то окно полностью прозрачно, если 255 – непрозрачно.

      Значения перечисленных свойств можно изменять как с помощью окна Object Inspector, так и во время выполнения программы (рис. 1.1).

      Рис. 1.1. Свойства для настройки прозрачности в окне Object Inspector

      На рис. 1.2 наглядно продемонстрировано, как может выглядеть полупрозрачное окно (форма Delphi).

      Рис. 1.2. Форма с коэффициентом прозрачности, равным 14 %

      В качестве примера ниже показано, как используются свойства AlphaBlend и AlphaBlendValue для задания прозрачности окна во время выполнения программы (сочетание положения ползунка tbAlpha, состояния флажка chkEnableAlpha и подписи lblCurAlpha на форме, представленной на рис. 1.2) (листинг 1.8).

Листинг 1.8. Динамическое изменение прозрачности окна

      procedure TForm1.chkEnableAlphaClick(Sender: TObject);

      begin

      AlphaBlendValue:= tbAlpha.Position;

      AlphaBlend:= chkEnableAlpha.Checked;

      end;

      procedure TForm1.tbAlphaChange(Sender: TObject);

      var

      pos, perc: Integer;

      begin

      pos:= tbAlpha.Position;

      //Новое значение прозрачности

      AlphaBlendValue:= pos;

      //Обновим подпись под ползунком

      perc:= pos * 100 div 255;

      lblCurAlpha.Caption:= IntToStr(pos) + 'из 255 ('+IntToStr(perc) + '%)';

      end;

      Применив следующий код, можно реализовать довольно интересный эффект постепенного исчезновения, а затем появления формы (листинг 1.9).

Листинг 1.9. Исчезновение и появление формы

      implementation

      var

      isInc: Boolean; //Если True, то значение AlphaBlend формы

      //увеличивается, если False, то уменьшается

      //(форма скрывается)

      procedure TForm1.cmbHideAndShowClick(Sender: TObject);

      begin

      if AlphaBlend then chkEnableAlpha.Checked:= False;

      //Включаем прозрачность (подготовка к плавному скрытию)

      AlphaBlendValue:= 255;

      AlphaBlend:= True;

      Refresh;

      //Запускаем процесс скрытия формы

      isInc:= False;

      Timer1.Enabled:= СКАЧАТЬ