Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con animatewindow (https://www.clubdelphi.com/foros/showthread.php?t=23272)

kakesoft 12-07-2005 17:46:26

Ayuda con animatewindow
 
Miren tengo una aplicación con dos formularios, en uno, o sea, en el form1, tengo un botón el cual al darle clic se mostrará el otro form que es el 2, pero se mostrará mediante este código

procedure TForm1.Button1Click(Sender: TObject);
begin
AnimateWindow(form2.Handle, 1000, AW_SLIDE or AW_BLEND )
end;


y al mostrarse el form2, se me muestra con animación, pero no me muestra los componentes que tiene insertado, o sea, un edit, un image y un button que le he puesto a este form2.

Graciass a todos de antemano y saludosssss

dec 12-07-2005 18:38:14

Hola,

Después de un rato buscando en Google y de leer la ayuda de la función he podido averiguar dos cosas: que la función funciona; que no poca gente tiene problemas con esta función.

No solamente es que al mostrar el segundo formulario no aparezcan los oportunos controles, es que no puede cerrarse el formulario, de ninguna manera. Al menos a mí me ocurre así con Delphi 7 y Windows XP SP2.

En todo caso, creo que una posible solución estriba en escribir la instrucción con la función "AnimateWindow" en el evento "OnShow" del segundo formulario. Así "la cosa" parece ir bien.

roman 12-07-2005 20:52:47

Cita:

Empezado por dec
Después de un rato buscando en Google

Eso pasa por desconfiar del ClubDelphi ;) Si hubieran empezado por aquí quizá hubieran econtrado este mensaje.

// Saludos

dec 12-07-2005 21:07:11

Hola,

En modo alguno roman: busqué en los Foros, aunque, a lo que se ve, no como debía. ;) Por otro lado me lanzé a Google porque no encontré ninguna referencia a la función "AnimateWindow" en la ayuda de Delphi ni tampoco en el Win32 SDK. Así fue que topé con la ayuda de la función en la página Web de MSDN.

Cita:

Empezado por roman
Lo que sí me ocurrió es que si la ventana está de inicio invisible (Form.Visible = false) al usar la función no se muestra correctamente, esto es, no aparecen los controles dentro de ella. Pero bastó poner Visible := true justo antes de la función y ya funcionó.

En todo caso llevas razón en la solución roman: tal como dices no "desaparecen" los controles del formulario y creo mucho mejor hacerlo de esa manera ( Form.Visible := true; ) que no hacer uso de la función "AnimateWindow" en el evento "OnShow" del formulario, tal y como propuse arriba.

Actualización:
¿Nuestro gozo en un pozo? A punto he estado de decirlo, porque creí haber probado el hacer "visible" el formulario antes de llamar a la función, a raiz de algo (no sé bien qué) que leí en la ayuda de la función "AnimateWindow", y, terminé decantándome por el evento "OnShow", algo que sigo sin considerar del todo conveniente, si hubiera otra forma de lograr lo que se pretende.

Sin embargo no lo hize, porque al probar lo que proponías en el hilo a que te refieres más arriba roman, me cegué cuando vi aparecer los controles en el formulario.

Pero, parece ser que no funciona... roman, comprueba que, efectivamente, el formulario aparece con sus controles si antes de llamar a "AnimateWindow" lo haces "visible", pero, ¡no se llega a realizar la animación de la ventana!... (¿?)

Actualización: Parece ser que si se sitúa la función "AnimateWindow" en el evento "OnShow" del formulario a "animar"... ¡funciona a veces sí a veces no! ¿Pero esto qué es lo que es?... Por cierto que antes dije que la solución que ofrecías roman no funcionaba... pero tal vez ocurra lo mismo: que lo haga a veces y otras veces no.

vic_ia 12-07-2005 22:20:40

Hola...

cuando se publico el hilo en que explica argami la funcion animatewindow lo integre a lo que seria una muestra de un programa y me encontre con lo que se menciona en este hilo en ocaciones no se mostraban los controles (en mi caso texto) que estaba en el form, hice la siguiente chapuza y en primea instancia funciono, el proyecto no se llevo a cabo y no guarde el codigo pero la idea era la siguiente :

al crear la ventana la colocaba en una ubicacion de la pantalla en la que no fuera posible verla (mas alla de los limites visibles) ponia su propiedad visible a true (esto por lo que me di cuenta forzaba el dibujado de los elementos) luego cambiaba su visible a false, asiganaba las propiedades left y top para posicionarla en donde yo queria que apareciera y ya entonces utilizaba la funcion AnimateWindow, y zas!!! se mostraba como se espera... al parecer esto no es necesario si la ventana es autocreate, pero yo creaba las ventanas solo cuando las necesitaba...

espero les sirva....

saludos...

kakesoft 13-07-2005 20:27:50

Socios muchísimas gracias a todos pero les diré una cosa, al poner la función animatewindow en el evento OnShow del Form2, se me muestran los controles tales como el memo y el button que fue con los que probé,el label se muestra cuando hago alguna acción en el form, o sea es como si el mismo se upgradara, se actualizara y chasssss se muestra pero inserté un timage y no se me muestra nada de nada, en fin, lo quiero hacer es un form que se me parezca a la ventanita que saca con animación a la derecha de la ventana PANDA2005, esta ventana según yo ví, tiene tlabels, tbuttons e timages.

graciass a todos nuevamente y ayúdenme por favor

raf.rsr 16-06-2006 22:15:39

Para usar el AnimateWindow:cool:

form2.BringToFront;
AnimateWindow(form2.Handle,2000,AW_BLEND);
form2.show;

;)


La franja horaria es GMT +2. Ahora son las 19:25:17.

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