Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2013
Avatar de NelsonJG
NelsonJG NelsonJG is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 13
Poder: 0
NelsonJG Va por buen camino
Como puedo expandir un panel hacia la derecha con un efecto lento?

Mi inquietud es la siguiente:
Tengo un panel el cual se expande para mostrar un contenido oculto hacia la derecha, controlado por un botón, ahora gráficamente el panel se desglosa de una manera brusca y no muy agradable, me gustaría saber como agregarle un efecto el cual el panel se expanda hacia la derecha lentamente controlado por un timer.

Espero sus consejos y maneras de realizar esta consulta!
Responder Con Cita
  #2  
Antiguo 28-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
  #3  
Antiguo 28-09-2013
Avatar de NelsonJG
NelsonJG NelsonJG is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 13
Poder: 0
NelsonJG Va por buen camino
osea tengo dos buttons, uno es para expandir y el otro es para contraer, te muestro mi codigo que le coloque a ambos button's los cuales me expande el panel y contrae

Boton Contrae
Código Delphi [-]
procedure TfrmSubFamilias.btnContraeClick(Sender: TObject);
begin
if Panel1.Width = 1140 then
 begin
 Panel1.Width := 681;
 btnExpande.Visible := True;
 btnContrae.Visible := False;
 end;
end;

Boton expande
Código Delphi [-]
procedure TfrmSubFamilias.btnExpandeClick(Sender: TObject);
begin
if Panel1.Width =  681then
 begin
 Panel1.Width := 1140;
 btnExpande.Visible := False;
 btnContrae.Visible := True;
 end;
end;

Este es mi panel contraido
contraido.jpg
y este es expandido
expandido.jpg

Controlado por el button, pero me gustaria que cuando expando fuera lento el proceso de expandir con unefecto de suavidad, me explico!
Responder Con Cita
  #4  
Antiguo 28-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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 no interpreté bién tu primer mensaje, te ruego que me especifiques que es lo que deseas hacer y el código que te puse no hace.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 28-09-2013
Avatar de NelsonJG
NelsonJG NelsonJG is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 13
Poder: 0
NelsonJG Va por buen camino
hola ecfisa.
Tu explicacion de arriba se ve super, pero soy algo nuevo en delphi y no se exactamente como implementar tu codigo con el mio.
Graficamente quiero que cuando expando mi panel fuera con suavidad osea obtener ese efecto de suavidad al momente de hacer clic en mi button de expandir igualmente lo al contraerlo.
Noce si si pueda hacer ejejje lamento mi falta de explicacion pero como te dije soy novato en delphi! seria genial si tuvieras algun ejemplo de tu manera
Responder Con Cita
  #6  
Antiguo 28-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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 Nelson.

Ahora entiendo tu problema, no te preocupes. Te adjunto un demo con dos paneles, el primero se muestra y oculta según el primer còdigo del mensaje #2 y el segundo panel, aplicando el otro método mediante dos botones.


Saludos
Archivos Adjuntos
Tipo de Archivo: zip Nelson.zip (3,5 KB, 28 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 28-09-2013
Avatar de NelsonJG
NelsonJG NelsonJG is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 13
Poder: 0
NelsonJG Va por buen camino
WAO es justo lo que buscaba, tratare de implementarlo y te digo luego que tal me fue, muchicimas gracias bro! S A L U D O S
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear panel translúcido o similar (efecto dashboard) pjexposito Varios 6 02-02-2011 19:32:03
Como puedo conectar 3 o 4 monitores a mi laptop para expandir el escritorio? flystar Varios 5 22-04-2010 10:40:09
Como alinear los numeros que imprimo hacia la derecha??? McKarthY Impresión 1 05-10-2006 16:06:47
Desplazar DBgrid hacia la derecha amadis OOP 0 22-08-2005 14:39:34
como puedo copiar una tabla dbf hacia floppy viajero2015 Varios 1 21-01-2004 03:07:49


La franja horaria es GMT +2. Ahora son las 11:11:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi