FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Inicializando componentes de un form
¡Buenas tardes!
Acá molestando nuevamente... Normalmente suelo crear los formularios dinámicamente exceptuando los que utilizo frecuentemente, que prefiero que se generan automáticamente al abrir el programa. En estos últimos, suelo escribir en el evento FormShow código para "resetear" los diversos componentes cuando necesito que el formulario vuelva a la apariencia inicial. Por ejemplo, cosas como esta:
El problema es que en ciertas PCs se alcanza a notar lo que estaba antes y se ve el "reseteo". Por ejemplo: Si limpio el texto de un Edit, se alcanza a ver que había algo escrito y lo estoy borrando. ¿Cuál sería la manera correcta de hacer esto?. Muchas gracias de antemano!
__________________
https://www.youtube.com/DexterBass |
#2
|
||||
|
||||
Como el formulario ya lo tienes creado y lo que haces es mostrarlo nuevamente, limpiando los controles.
Podrías manipular los eventos Show y ShowModal y así establecer los valores iniciales antes de mostrar el formulario. Ejemplo: Aplicación con 2 formularios, Form1 y Form2, ambos creados al inicio del programa. Form1 llama al Form2
En Form2, el evento Show limpia el texto de los Edit antes de cambiar el valor a la propiedad "Visible"
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#3
|
||||
|
||||
Hola movorack!
¡Muchísimas gracias por tu detalladísima respuesta!. Lo estuve probando y el problema no quiere irse. Estuve pensando que quizás lo mejor sea también crear estos formularios dinámicamente, ya que los que creo de esa manera no tienen este problema. Saludos!
__________________
https://www.youtube.com/DexterBass |
#4
|
||||
|
||||
Bueno, sigo haciendo pruebas...
- Volví a probar el código que propuso movorack y no noto mejoras. Lo más triste es que no entiendo el porqué, ya que el código propuesto tiene toda la lógica del mundo. - Probé de crear los formularios "a demanda" y si bien resuelvo el problema actual, se presenta otro: los formularios tardan más en abrirse, lo cuál también es lógico. Si estoy siendo demasiado "puntilloso", por favor me lo dicen. Difícil la vida del programador amateur...
__________________
https://www.youtube.com/DexterBass |
#5
|
||||
|
||||
En el código propuesto por [movorack] haz un 'hide' al principio de 'ResetControls'. Así te aseguras de que el formulario no está visible durante ese proceso.
|
#6
|
||||
|
||||
Es algo extraño que los usuarios sigan viendo como limpias los controles, ya que, en el ejemplo que te he dado, eso se hace antes de cambiar el estado de la propiedad visible y por lo tanto el formulario está aún oculto. ¿Podrías compartirnos como lo implementaste en tu formulario?.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#7
|
||||
|
||||
Muchas gracias a ambos por responder.
Les dejo el código del formulario en el que lo estoy implementando (le quité el código de los procedimientos que consideré poco relevantes para que no quede tan largo):
No lo mencioné, pero el defecto no lo alcanzo a percibir en mi PC (o al menos no se nota tanto) Yo creo que es porque es una máquina más nueva que en la PC dónde se usa el programa. Saludos y gracias!!!
__________________
https://www.youtube.com/DexterBass Última edición por Dexter182 fecha: 24-11-2021 a las 20:21:54. |
#8
|
||||
|
||||
Como en tu formulario tienes un ActionManager, solo para descartar que este esté afectando el comportamiento del formulario. ¿Podrias modificar el ResetControls para que en lugar de llamar la acción llame el procedimiento?
Me explico, que en lugar de ejecutar actCtaCte.execute, llame a actCtaCteExecute(actCtaCte)
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#9
|
||||
|
||||
Gracias por responder!
Cita:
Para descartar, también probé de compilar como Release en vez de Debug con idem resultado. Y también probé esto: https://stackoverflow.com/questions/...ot-of-controls Tampoco resultó... ¿Será alguna configuración de la PC dónde está instalado?. Saludos y mil gracias por su tiempo!!!
__________________
https://www.youtube.com/DexterBass |
#10
|
||||
|
||||
Mientras escribía el mensaje anterior se me ocurrió probar de ir deshabilitando las diversas configuraciones de "Efectos visuales" en "Configuración avanzada del Sistema" -> "Opciones avanzadas" -> "Rendimiento" -> "Configuración"
Y deshabilitando la opción: "Habilitar la composición del escritorio" se ve todo un poco más feo, pero el defecto no lo hace más. No es la solución, pero de momento voy teniendo alguna pista de por dónde va los tiros. Saludos!!!
__________________
https://www.youtube.com/DexterBass |
#11
|
||||
|
||||
Ahora que mencionas eso. Hace un tiempo manejé algo parecido. En mi caso, era cambiando el ActivePage de un PageControl. Y al igual que a ti se veía cuando dibujaba cada control y era lento.
Buscando acá y allá. En StackOverflow (creo que aquí TLabel and TGroupbox Captions Flicker on Resize) mencionaban algo de eso y encontré el siguiente procedimiento.
Le hago el llamado correspondiente previo a cambiar el ActivePage del pagecontrol y ya no muestra los controles
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#12
|
||||
|
||||
Gracias movorack!!!
Y perdón por no contestar antes, pero estuve haciendo varias pruebas y quería postear cuando ya lo tuviese resuelto, cosa que nunca sucedió, jaja. Te agradezco muchísimo la información que me pasaste, ya que del link que pusiste saqué mucha información. Probé el procedimiento EnableComposited en varias partes (antes del llamado del form, en el formshow del form problemático, pasando solo los componentes problemáticos en vez del form entero, etc.) y si bien pareciera que la situación mejoró un poco, el defecto no termina de desaparecer. También probé de habilitar la opción "Doble buffered" de los forms, prácticamente sin resultados. Para tener más datos, estuve probando el programa en otras PCs y me di cuenta que el defecto sólo lo hace en las que tienen Windows 7. Casualmente la PC dónde se usa actualmente va a recibir un upgrade (disco SSD y Windows 10), así que dentro de unas semanas les cuento si finalmente era ese el problema. Muchas gracias por todo!!! Saludos!!!
__________________
https://www.youtube.com/DexterBass |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ajustar componentes en form | Rofocale | Varios | 9 | 08-12-2010 19:11:46 |
Componentes sin form. | rauros | Varios | 33 | 31-07-2008 08:51:44 |
Mostrar una ventana "Inicializando" mientras se crean las Forms | mancurnino | Varios | 6 | 08-05-2008 00:50:00 |
Ayuda con componentes en form | Vinicio | Varios | 8 | 13-09-2006 21:38:50 |
componentes sin form | coleleon | OOP | 1 | 30-11-2005 13:10:56 |
|