Puedes hacerlo utilizando la API de windows
AnimateWindow.
Si creas un formulario con un botón y un label y colocas este código puedes probarlo.
Código Delphi
[-]
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TFormMain = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
public
procedure ShowForm;
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
procedure TFormMain.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AnimateWindow(FormMain.Handle, 2000, AW_SLIDE or AW_HIDE or AW_BLEND);
FormMain.Hide;
end;
procedure TFormMain.FormShow(Sender: TObject);
begin
ShowForm;
end;
procedure TFormMain.ShowForm;
begin
Self.Left := 500;
Self.Top := 500;
AnimateWindow(FormMain.Handle, 2000, AW_SLIDE or AW_BLEND);
end;
El efecto final será algo así (no se si se acerca a lo que quieres).
Otra opción "manual" que puedes `robar es utilizar un Timer y las propiedades
AlphaBlend y
AlphaBlendValue del formulario para conseguir algo parecido.