{
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. Эффект анимации можно включать и выключать с помощью события клика кнопки.
Пусть мы разберемся с кодом:
Info: TAnimationInfo; объявляет переменную типа TAnimationInfo, которая является записью, содержащей информацию о анимации.
Функция ZeroMemory инициализирует переменную Info нулевыми значениями.
Info.cbSize := SizeOf(TAnimationInfo); устанавливает размер записи Info в байтах, равный фактическому размеру записи.
BOOL(Info.iMinAnimate) := Value; устанавливает значение поля iMinAnimate в записи Info в true или false, в зависимости от значения, переданного как аргумент (Value).
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