На экранах с различным масштабированием вот это неравенство <> и работа с пикселами ... - 618 может вызывать проблемы с анимацией. Движение без остановки.
Не равно может быть как больше, так и меньше строгого значения.
Можно попробовать так.
On screens with different scaling, this inequality <> and working with pixels ... - 618 can cause problems with animation. Movement without stopping.
Not equal can be either greater or less than a strict value.
You can try like this.
procedure frmMain_Button1_OnClick (Sender: TObject; var Cancel: boolean);
// Анимация
begin
While frmMain.pAnimationUpDownForm.Top < - (frmMain.pAnimationUpDownForm.Height / 3) do
begin
Application.ProcessMessages;
frmMain.pAnimationUpDownForm.Top := frmMain.pAnimationUpDownForm.Top + 3;
end;
frmMain.pMain.Color := $00D56A00;
While frmMain.pForm.Left > (frmMain.pMain.Width / 14) do
begin
Application.ProcessMessages;
frmMain.pForm.Left := frmMain.pForm.Left - 4;
end;
While frmMain.pAnimationUpDownForm.Top < 0 do
begin
Application.ProcessMessages;
frmMain.pAnimationUpDownForm.Top := frmMain.pAnimationUpDownForm.Top + 3;
end;
end;
procedure frmMain_Button3_OnClick (Sender: TObject; var Cancel: boolean);
// Анимация
begin
While frmMain.pAnimationUpDownForm.Top > - (frmMain.pAnimationUpDownForm.Height / 3) do
begin
Application.ProcessMessages;
frmMain.pAnimationUpDownForm.Top := frmMain.pAnimationUpDownForm.Top - 3;
end;
frmMain.pMain.Color := $000080FF;
While frmMain.pForm.Left < ((frmMain.pMain.Width / 14) * 13) - frmMain.pForm.Width do
begin
Application.ProcessMessages;
frmMain.pForm.Left := frmMain.pForm.Left + 4;
end;
While frmMain.pAnimationUpDownForm.Top > - ((frmMain.pAnimationUpDownForm.Height / 3) * 2) do
begin
Application.ProcessMessages;
frmMain.pAnimationUpDownForm.Top := frmMain.pAnimationUpDownForm.Top - 3;
end;
end;