Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Tpanle como Tform (https://www.clubdelphi.com/foros/showthread.php?t=52690)

felipe88 28-01-2008 20:00:17

TPanel como TForm
 
TPanel como TForm

Hola compañeros del club, tengo con una simple inquietud y espero me puedan ayudar, basicamente lo que busco es crear el mismo tipo de animacion de una ventana...

Código Delphi [-]
procedure TFrmPrestamo.ccreditoClick(Sender: TObject);
begin
  AnimateWindow(Handle,400,AW_ACTIVATE or AW_SLIDE or AW_VER_POSITIVE);
end;

Pero que en un Tpanel. La verdad me parece mas conveniente este efecto que intentar otro metodo con bucles y refresh en el panel, que no se ven nada bien, y no se como crear una variable que me force a crear el panel como si fuese un form pero sin olvidar el manejador Handle :confused:

felipe88 29-01-2008 14:29:33

Posteo mi propio hilo para que no se quede en el olvido...

Añado algo a mi pregunta, el panel permanece invisible y al hacer click en un boton aparece; es ahí donde quiero realizar el efecto...

cmm07 29-01-2008 16:50:55

No entiendo mucho tu pregunta, pero voy a responder por lo que entendí:

Lo que quieres hacer (Supongo) es que este efecto se haga en un panel o form, eso es lo que entendí aqui te dejo la instruccion:

Para un Form:
AnimateWindow(Form2.Handle,400,AW_ACTIVATE or AW_SLIDE or AW_VER_POSITIVE);

Para un Panel:
AnimateWindow(Panel1.Handle,400,AW_ACTIVATE or AW_SLIDE or AW_VER_POSITIVE);

felipe88 29-01-2008 20:51:51

Cita:

Empezado por cmm07 (Mensaje 261856)
No entiendo mucho tu pregunta, pero voy a responder por lo que entendí:

Lo que quieres hacer (Supongo) es que este efecto se haga en un panel o form, eso es lo que entendí aqui te dejo la instruccion:

Para un Form:
AnimateWindow(Form2.Handle,400,AW_ACTIVATE or AW_SLIDE or AW_VER_POSITIVE);

Para un Panel:
AnimateWindow(Panel1.Handle,400,AW_ACTIVATE or AW_SLIDE or AW_VER_POSITIVE);

Bueno basicamente la idea es animar el panel como lo haria esta funcion en el formulario, pero si habras probado tu codigo veras que aunque no muestra error o no hace nada o no se ve...

Ademas ten en cuenta que en un formulario normal se haria en el evento OnShow por ejemplo, en cambio con el panel no seria lo mismo; como dije anteriormente

Cita:

Añado algo a mi pregunta, el panel permanece invisible y al hacer click en un boton aparece; es ahí donde quiero realizar el efecto...
Lo que quiero saber es que tanto me permite esta funcion o si existe alguna otra que me permita hacer esto...

egostar 30-01-2008 05:47:32

Cita:

Empezado por felipe88 (Mensaje 261967)
Bueno basicamente la idea es animar el panel como lo haria esta funcion en el formulario, pero si habras probado tu codigo veras que aunque no muestra error o no hace nada o no se ve...

Ademas ten en cuenta que en un formulario normal se haria en el evento OnShow por ejemplo, en cambio con el panel no seria lo mismo; como dije anteriormente

Lo que quiero saber es que tanto me permite esta funcion o si existe alguna otra que me permita hacer esto...

He ejecutado lo que nuestro amigo cmm07 y funciona correctamente; al dar clic en el botón se muestra el panel animado.

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  AnimateWindow (Panel1.Handle, 400, AW_ACTIVATE or AW_SLIDE or AW_VER_POSITIVE);
end;

Solo te falta asignar false a la propiedad Visible del Panel1.

Y si lo quieres "cerrar" se hace así :)

Código Delphi [-]
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  AnimateWindow (Panel1.Handle, 400, AW_HIDE or AW_SLIDE or AW_VER_NEGATIVE);
end;

Salud OS

Edito

Si quieres otro tipo de efecto intenta con esto:

Código Delphi [-]
  //ABRIR
  AnimateWindow (Panel1.Handle, 400, AW_ACTIVATE + AW_HOR_POSITIVE + AW_VER_POSITIVE);
  //CERRAR
  AnimateWindow (Panel1.Handle, 400, AW_HIDE + AW_HOR_NEGATIVE + AW_VER_NEGATIVE);

Veras algo interesante. :) ;)

Otra cosa, si cambias el color de tu panel a otro que no sea el de la forma, veras el efecto mucho mejor....

felipe88 30-01-2008 20:29:12

Hola, estoy probando el efecto a ver si me funciona porque hasta ahora no he podido ver nada... el problema que me surge ahora es como manejar la propiedad visible del componente TPanel, antes o despues de la animacion; o sera que el mismo no me permitira verlo :confused:

cmm07 30-01-2008 20:36:01

Cita:

Empezado por felipe88 (Mensaje 262205)
Hola, estoy probando el efecto a ver si me funciona porque hasta ahora no he podido ver nada... el problema que me surge ahora es como manejar la propiedad visible del componente TPanel, antes o despues de la animacion; o sera que el mismo no me permitira verlo :confused:



Aqui te dejo adjunto un archivo con un ejemplo.

egostar 30-01-2008 20:38:12

Cita:

Empezado por felipe88 (Mensaje 262205)
Hola, estoy probando el efecto a ver si me funciona porque hasta ahora no he podido ver nada... el problema que me surge ahora es como manejar la propiedad visible del componente TPanel, antes o despues de la animacion; o sera que el mismo no me permitira verlo :confused:

En tiempo de diseño debes de asignar la propiedad Visible a False y la funcion AnimateWindow() hará el resto, AW_ACTIVATE y AW_HIDE son las que hacen que se vea o se oculte.

No entiendo porque no ves el efecto, ya cambiaste de color el TPanel?

Yo lo he puesto de color clInfoBk y se ve perfecto.

Otra cosa, lo estoy haciendo desde dos botones, uno para mostrar y otro para ocultar.

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  //ABRIR
  AnimateWindow (Panel1.Handle, 400, AW_ACTIVATE + AW_HOR_POSITIVE + AW_VER_POSITIVE);
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  //CERRAR
  AnimateWindow (Panel1.Handle, 400, AW_HIDE + AW_HOR_NEGATIVE + AW_VER_NEGATIVE);
end;

Salud OS

Caral 30-01-2008 20:58:43

Hola
Tal vez tienes un ordenador muy rapido?, cambiando de 400 a 800 lo verías mas lento el efecto.
Por cierto, Genial amigo Egostar.:)
Saludos

felipe88 30-01-2008 21:03:58

A bueno pues de ser asi, yo creo que no me debe presentar mas problemas... como en estos momentos no tengo donde probarlo no podria decirles como me resulto, creo que debe funcionarme bien, les avisare...

Gracias de antemano cmm07 y egostar

felipe88 30-01-2008 21:07:46

Cita:

Empezado por Caral (Mensaje 262217)
Hola
Tal vez tienes un ordenador muy rapido?, cambiando de 400 a 800 lo verías mas lento el efecto.

Jajaja.:D.. lo tendre en cuenta Caral, gracias

egostar 01-02-2008 01:25:31

Cita:

Empezado por felipe88 (Mensaje 262218)
...como en estos momentos no tengo donde probarlo no podria decirles como me resulto, creo que debe funcionarme bien, les avisare...

Y bien, me pregunto :rolleyes::rolleyes: si ya habrás conseguido donde probar este asunto :confused::confused::confused:

Digo, nadamas por chismoso que soy..... :D:D:D

Salud OS

felipe88 01-02-2008 15:25:52

Cita:

Empezado por egostar (Mensaje 262545)
Y bien, me pregunto :rolleyes: si ya habrás conseguido donde probar este asunto :confused::confused:

Digo, nadamas por chismoso que soy..... :D:D

Salud OS

Pues.... si, me funciono; el problema era que yo lo estaba probando con los eventos del formulario y extrañamente ni me ocultaba el panel aun estando invisible :confused:, ahi perdonan la demora pero era que tenia un problema con el Delphi :rolleyes:, igual gracias por la ayuda (Incluyendo a todos) y... QUE VIVA EL CHISME :D:D....

Mentiras, es de las cosas que mas me incomodan :p...


La franja horaria es GMT +2. Ahora son las 08:30:49.

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