Sentido ahora con el OnCreate de forms
#1
Posted 08 June 2021 - 02:52 PM
#2
Posted 10 June 2021 - 05:43 AM
Tienes un poco de lío.
Una cosa es crear con el IDE un Formulario y otra es crear un objeto de la clase.
Con el IDE vas a diseñas tu formulario y es muy raro que precises añadir componentes en fase de ejecución aunque se puede y no es difícil. Entiendo que lo que realmente necesites es actualizar tu formulario.
Cuando creas un formulario en fase de diseño (IDE) por defecto se establece como autocreado, es decir, al arrancar tu aplicación se crea aunque no lo veas. Puedes diseñarlo como no autocreado, en cuyo caso lo tienes que crear TForm2.create(self) antes de mostrarlo y es recomendable que te encargues de su destrucción.
Dado que lo que necesitas es actualizar tu formulario, es una buena practica escribir un método público que haga esa tarea. En tu caso cargar dbgrid y quizás otras cosas. Después de eso puedes llamar a ese método desde OnCreate o desde donde quieras. Así, tras mostrar tu formulario autocreado puedes hacer esto:
procedure TForm1.button1(); begin Form2.Actualiza; Form2.Show; end;
Saludos.
#3
Posted 10 June 2021 - 03:22 PM
Gracias Escafandra. La bofetada me la he dado por esa actualización que necesito, haga el dbgrid cuando cargo el form, y que la primera vez me lo hace, pero cuando vuelvo a cargar el form, ya no me lo hace.
Lo que he hecho es crear el form con .create(self) cuando lo necesito, (aunque ya lo haya hecho en fase diseño) , y así si actualiza siempre cuando entra, y lo destruyo en Onclose (action:=cafree;), pero claro el form se ha autocreado tambien mediante IDE. He intentado liberar el form autocreado con .free y crearlo a continuación con .create(self) pero me da error en ejecución cuando trabajo sobre él.
La opción que me indica ,es crear un procedimiento que actualice, pero claro si lo añado en el evento Oncreate estaríamos igual. Pasaria un vez y al visualizar el form nuevamente, ya no actualizaria.
#4
Posted 11 June 2021 - 05:21 AM
Unos consejos:
1. Estudia como se diseñar un formulario no autocreado. Son opciones en el IDE.
2. No destruyas o trates de usar un objeto ya destruido.
3. Mira el código que te puse. Resuelve tu problema.
Saludos
#5
Posted 11 June 2021 - 03:00 PM
Mil gracias Escafandra.