Hola NelsonJG.
Si tu Panel se oculta y visualiza podes hacer:
Código Delphi
[-]
procedure AnimatePanel(P: TPanel);
begin
if not P.Visible then
AnimateWindow(P.Handle, 400, AW_ACTIVATE + AW_SLIDE + AW_HOR_POSITIVE)
else
AnimateWindow(P.Handle, 400, AW_HIDE + AW_SLIDE + AW_HOR_NEGATIVE);
P.Visible := not P.Visible;
end;
Uso:
Ahora, si permanece siempre visible y deseas que se expanda hacia la derecha y contraiga hacia la izquierda:
Código Delphi
[-]
procedure ExpandPanel(P: TPanel; const amount: Integer);
var
i,d: Integer;
begin
if amount > 0 then
d := 1
else
d := -1;
for i := 1 to Abs(amount) do
begin
P.Width := P.Width + d;
Application.ProcessMessages;
Windows.Sleep(1); end;
end;
Uso:
Código Delphi
[-]
ExpandPanel(Panel2, 500); ...
ExpandPanel(Panel2, -500);
(*) Use la función
Sleep a fin de simplificar el ejemplo, pero podes usar cualquier otro modo de retardo en su lugar.
Saludos