![]() |
[Consulta] Form`s - Volverlos al estado inicial
La consulta, viene ya que al realizar una accion con el programa en ejecucion.. completar un formulario X (datos personales, consultas a DB etc), tras cerrarlo y volverlo a abrir los datos continuan(es logico ya que no limpio los componentes).
Si alguien conoce(si es que existe) la forma de volver a 0(o estado inicial) un form(lo que busco es algo tan facil como cuando hacemos Edit1.Clear() :D ) la comente, actualmente lo puedo hacer limpieando cada edit, desconectando componetes(tipo DBgrid) de Querys, pero son bastantes componentes. Thanks. |
Yo tengo un procedimiento especial para "limpiar o inicializar" componentes... cada vez que lo necesito, sólo lo mando llamar...
Si existe una manera de hacerlo más fácil nos ayudará a ambas saberlo :o :p :D Saludos, |
Hola,
No sé si servirá en este caso decir que, cuando se destruye un formulario, y se vuelve a crear, este se presenta "inicializado". Es decir, observemos el siguiente código: daría igual la cantidad de "Edits" que hubiera en el formulario "TFormTest", puesto que, siempre que se mostrara el mismo (luego de crearlo) dichos "Edits" estarían con su valor "de inicio".
|
Aparte de lo comentado por dec, sé que es una pregunta simplona, pero, ¿usaís algún bucle?
Lo normal sería:
Para llamarlo:
Habría que estudiarlo un poco mejor, pero creo que se puede hacer. Saludos |
El único problema de los inicializadores automáticos, es que no siempre un 0 o un '' es un valor inicial... xD
Siempre te toca realizar algunas comprobaciones, en la mayoría de los casos. Saludos |
Cita:
Agrege en el evento ONCLOSE del formulario Código Delphi [-] begin with Create(nil) do try ShowModal(); finally Free(); end; end; Lo que me devuelve, es lo mismo que cuando hago destroy() and Create()... error el componente xxxx ya existe.(y luego Access violation at address 000...) |
Cita:
Error en "c" //if controls[i] is TwinControl then Limpia(c) <<< que tipo seria?, para que funcione le puse el nombre del form, y como resultado tengo un overflow.. Es bueno aclarar que no es solo borrar lo que esta en un edit... sino tambien reiniciar todos sus atributos,a el estado cuando se ejecuto inicialmente el programa (ejemplo, enable:=true, color xxx, etc etc). Como me parece mucho hacerlo uno por uno (ademas que corro riesgo de que se me pase por algo algun atributo y me estropee los datos almacenados en la DB). Thanks |
Obviamente lo estoy haciendo de memoria ya que no tengo delphi a mano, ahora deben estar corregidos los dos errores. Saludos |
Hola tanaka_reina, si necesitas que se limpie todo al cerrar tu formulario, deberías seguir lo que te explico Dec. El codigo que te puso de ejemplo no debes colocarlo en el OnClose de tu formulario, sino en el momento en que llamas a tu formulario, ademas que debes quitar el formulario del AutoCreate, ya que tu lo crearas y lo liberaras cuando lo necesites.
Para quitar del AutoCreate (Project->Options->Forms). Si estas haciendo la llamada a tu formulario con Show, haces lo siguiente, digamos que Form1 es el formulario de donde llamaras a Form2: En Form1, donde llames a Form2
Y en el evento OnClose de Form2:
Y si estas haciendo la llamada a tu formulario con ShowModal, colocas este codigo en el momento en que lo estas llamando.
Pero si necesitas limpiar estando dentro de tu formulario, sin cerrarlo, debes hacerlo como te explica Lepe. Saluditos |
La idea apuntaba mas a la respuesta(ahora entendida :P) de Dec (Caro gracias por la explicacion, la verdad no entendia para que era....por eso lo mande donde se me ocurrio).
Hasta hace 5 minutos estaba haciendolo muy manualmente, lo que me llevaba muchos minutos por forms, ahora voy a probar de implementar estas formas(ambas sirven, tanto de limpiar cerrando el form, como sin cerrarlo). Thanks. |
Cita:
|
La franja horaria es GMT +2. Ahora son las 07:28:27. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi