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

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

Название: Delphi. Трюки и эффекты

Автор: Александр Чиртик

Издательство:

Жанр: Программы

Серия:

isbn: 978-5-911-80219-6

isbn:

СКАЧАТЬ style="font-size:15px;">      Чтобы показать кнопку приложения, можно ту же функцию ShowWindow вызвать со вторым параметром, равным SW_NORMAL.

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

      В 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 %

      Ниже для примера рассмотрим, как применяются свойства AlphaBl end, а также 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:= True;

      end;

      procedure TForm1.Timer1Timer(Sender: TObject);

      var val: Integer;

      begin

      if not isInc then

      begin

      //"Растворение" окна

      val:= AlphaBlendValue;

      Dec(val, 10);

      if val <= 0 then

      begin

      //Окно полностью прозрачно

      val:= 0;

      isInc:= True;

      end

СКАЧАТЬ