Ver Mensaje Individual
  #2  
Antiguo 28-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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:
Código Delphi [-]
 AnimatePanel(Panel1);

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);  // Expande
  ...
  ExpandPanel(Panel2, -500); // Contrae
(*) Use la función Sleep a fin de simplificar el ejemplo, pero podes usar cualquier otro modo de retardo en su lugar.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita