PDA

Ver la Versión Completa : Tpanle como Tform


felipe88
28-01-2008, 20:00:17
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...

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
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

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
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.


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í :)


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:


//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
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
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.


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
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
...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 (http://www.wordreference.com/definicion/chismoso) que soy..... :D:D:D

Salud OS

felipe88
01-02-2008, 15:25:52
Y bien, me pregunto :rolleyes: si ya habrás conseguido donde probar este asunto :confused::confused:

Digo, nadamas por chismoso (http://www.wordreference.com/definicion/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...