FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Codigo antes de mostrar form - Maximizar
Mi app es MDI, tengo un pequeño componente que guarda la configuracion de posicion de los forms, funciona bastante bien, pero tengo un problema:
Cuando la posicion del form es recuperada y su ultimo estado era maximizado se produce un molesto efecto, aparece el form normal e inmediatamente se maximiza, produciendo el molesto efecto que menciono, en este hilo se habla del asunto pero no es exactamente la solucion en la que estoy pensando. El efecto se produce si establezco la propiedad WindowState desde el inspector de objetos, y tambien si lo hago en el create del form, pues al ser mis forms MDIChild al solo crearlos se muestran por si solos sin necesidad de una llamada al metodo Show o ShowModal. Debido a esto quiero incorporar el codigo del componente en la clase base que uso para todos mis forms (de la cual todos heredan), sobreescribiendo un metodo que sea ejecutado antes de mostrar el form. Que metodo deberia sobrescribir para que los forms sean creados maximizados de forma automatica?
__________________
Saludos Douglas Cruz |
#2
|
||||
|
||||
Cita:
// Saludos |
#3
|
|||
|
|||
Roman, agaradezco tu atencion a mi problema
He intentado ya lo que mencionas y siempre se presenta el mismo problema: El codigo siguiente funciona (Maximiza el form) pero siempre se presenta el problema del efecto, supongo que este codigo es como establecer la propiedad inmediatamente despues de la llamada a Create cuando creo el form en tiempo de ejecucion..
este codigo no funciona para nada... no se maximiza, supongo que la llamada a inherited sobreescribe el valor de la propiedad WindowState.
Mas bien quisiera poder establecer desde delphi que la ventana se cree maximizada desde la llamada que se hace al API de Windows cuando se crea el objeto del form.
__________________
Saludos Douglas Cruz |
#4
|
||||
|
||||
Dime, ¿en que Windows lo pruebas? Es que es un poco difícil verificarlo porque en WinXP no se muestra el efecto que mencionas. Miraré a ver si puedo probarlo en Windows 98.
// Saludos |
#5
|
||||
|
||||
Vamos a ver.
El efecto que mencionas supongo que es el de la animación que normalmente tienen las ventanas al maximizarse. No lo había notado porque sólo probé con el primer formulario hijo que se crea de inicio. Pero al hacer la prueba con formularios creados durante la ejecución vi que en efecto se nota como la ventana se va maximizando. Ya en el hilo que mencionas, Magician comentaba que este efecto se puede deshabilitar. Quizá lo que no te gustó de esa solución es que sólo menciona como hacerlo cambiando las propiedades en el panel de control. Sin embargo puedes hacer lo mismo por código con el siguiente procedimiento:
Usando este procedimiento justo antes de crear una nueva ventana hija se mejora bastante y prácticamente desaparece el efecto. Sin embargo aún se alcanza a notar como la ventana pasa de su tamaño normal al maximizado. El parpadeo es muy rápido y muchas veces no se nota pero aún deja la sensación de que algo "no anda bien". No obstante puedes hacer uso de otro truco más- LockWindowUpdate, con lo que, hasta donde he visto, desaparece totalmente el efecto. LockWindowUpdate sirve para deshabilitar el dibujado de una ventana de manera que la ventana hija no se vea sino hasta que esté completamente maximizada. De hecho, LockWindowUpdate fue lo primero que intenté pero aunque ciertamente no se ve el efecto de la maximización, lo que sucede es que la ventana tarda unos cuántos microsegundos en aparecer, justamente por el tiempo que se lleva la animación. Pero combinando ambas técnicas me parece que se logra lo que deseas. Para centralizar el proceso podrías crearte un método en el formulario padre que se encargue de crear las ventanas hijas:
En el parámetro ClaseHija pasarías la clase de la ventana mdi hija de manera que el mismo procedimiento te sirve si manejas varias clases de ventanas hijas. // Saludos |
#6
|
||||
|
||||
Fantástico
Waoooo, quiero darte las gracias Román, yo fui quien abrió aquel hilo y te confieso que aunque quedé muy agradecido por el esfuerzo de todos los amigos del club mi aplicación no funcionó como yo quería hasta hoy que puse en práctica los trucos que das en este hilo. Gracias nuevamente.
Por cierto de donde lo sacarías un saludo desde Cuba
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo |
|
|
|