Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Анимация форм при сворачивании и разворачивании

Delphi , Программа и Интерфейс , Размеры и Положение

Анимация форм при сворачивании и разворачивании

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
In Win9X or NT4, there's a 'zooming effect' when an application is minimized 
to the taskbar or restored from the taskbar. 
Delphi applications don't have this zooming effect. 
You can switch the effect on or off with the following piece of code: 
}
 Info: TAnimationInfo;
 begin
   ZeroMemory(@Info,SizeOf(Info));
   Info.cbSize := SizeOf(TAnimationInfo);
   BOOL(Info.iMinAnimate) := Value;
   SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   SetAnimation(True);
 end;

Here is the translation of the text into Russian:

Код, предоставленный ниже, это программный код на Delphi, который позволяет включать или отключать эффект "zooming" при минимальизации приложения в панель задач Windows 9x/NT4. Эффект анимации можно включать и выключать с помощью события клика кнопки.

Пусть мы разберемся с кодом:

  1. Info: TAnimationInfo; объявляет переменную типа TAnimationInfo, которая является записью, содержащей информацию о анимации.
  2. Функция ZeroMemory инициализирует переменную Info нулевыми значениями.
  3. Info.cbSize := SizeOf(TAnimationInfo); устанавливает размер записи Info в байтах, равный фактическому размеру записи.
  4. BOOL(Info.iMinAnimate) := Value; устанавливает значение поля iMinAnimate в записи Info в true или false, в зависимости от значения, переданного как аргумент (Value).
  5. SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0); вызывает функцию Windows API SystemParametersInfo с четырьмя аргументами:
    • SPI_SETANIMATION: указывает, что параметры системной анимации устанавливаются.
    • SizeOf(Info): устанавливает размер буфера, содержащего информацию о анимации.
    • @Info: передает указатель на запись Info как буфер, содержащий информацию о анимации.
    • 0: указывает, что не влияет на какой-либо оконный элемент.

Процедура SetAnimation принимает логическое значение в качестве аргумента и устанавливает эффект анимации соответственно. При вызове с True, она включает эффект zooming, а при вызове с False, отключает его.

В обработчике события клика кнопки (Button1Click), процедура SetAnimation вызывается с True, включая эффект zooming.

Альтернативное решение:

Если вы хотите включать или отключать эффект анимации на отдельной форме или панели, вы можете создать пользовательскую свойство в вашей форме или панели и использовать ее для хранения состояния анимации. Вот пример:

type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
  private
    FAnimationEnabled: Boolean;
    procedure SetAnimation(Enable: Boolean);
  end;

procedure TForm1.SetAnimation(Enable: Boolean);
begin
  FAnimationEnabled := Enable;
  if Enable then
    SystemParametersInfo(SPI_SETANIMATION, SizeOf(TAnimationInfo), @FAnimationInfo, 0)
  else
    SystemParametersInfo(SPI_RESETANIMATION, 0, nil, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetAnimation(Not FAnimationEnabled);
end;

В этом примере процедура SetAnimation устанавливает состояние анимации в зависимости от значения, переданного как аргумент, и обновляет переменную FAnimationInfo соответственно. Обработчик события клика кнопки включает или отключает состояние анимации, вызывая процедуру SetAnimation с противоположным значением текущего состояния.

В статье описывается способ включения или выключения анимации форм при сворачивании и разворачивании в приложениях на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Размеры и Положение ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:15:48/0.0037908554077148/0