AnimateWindow(Panel.Handle, 1000, aw_hide or AW_SLIDE OR AW_VER_POSITIVE); panel.Visible:=false; type TForm1 = class(TForm) .. private FPanelHeight: Integer; FPanelVisible: Boolean; .. procedure TForm1.FormCreate(Sender: TObject); begin FPanelHeight := Panel1.Height; Timer1.Enabled := False; Timer1.Interval := 10; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := True; FPanelVisible := not FPanelVisible; end; procedure TForm1.Timer1Timer(Sender: TObject); const Diff: array [Boolean] of Integer = (-1, 1); begin Panel1.Height := Panel1.Height - Diff[FPanelVisible]; Panel1.Visible := Panel1.Height > 0; Timer1.Enabled := (Panel1.Height > 0) and (Panel1.Height < FPanelHeight); end;