![]() |
Ficha disponible
Hola a todos, cómo ya sabeis con delphi hay dos tipos de fichas: las creadas automáticamente y las fichas disponibles.
Me gustaría sabes cómo crear una ficha disponible. A ser posible con un ejemplo. Gracias a todos y un saludo.:confused: |
Hola dvdjr, para lo relacionado con tu pregunta revisa el hilo
www.clubdelphi.com/foros/showthread.php?s=&threadid=364 Ahí está la respuesta en dos variantes. Saludos |
Hola Ruben un saludo desde España.
Veo que el vínculo que has puesto, no sé por qué no funciona. Por lo tanto, añado una de las formas que hay de crear una ficha disponible, es creas el formulario y luego vas a Project Options y la veras en la parte izquierda: AutoCreate-Forms. La pasas a la derecha "Available" es decir disponible. En su evento OnClose debes de escribir. Action:=CaFree; para liberar memoria cuando la cierres. Ahora para llamarla desde el programa. Application.CreateForm(TMiFormulario, MiFormulario); MiFormulario.ShowModal; // Te he puesto ShowModal, pero en realidad utiliza lo opción que quieras. Un Saludo. |
Éste es el link que puso Ruben originalmente:
http://www.clubdelphi.com/foros/show...=&threadid=364 Saludos. |
Muchisimas gracias a todos, he resuelto el problema. Un saludo
|
Hola a todos, me comí el http:// en la URL cosas del nuevo diseño del club y me falta de práctica. Gracias a marsc por tirarme un capote (como dicen por allá);)
Saludos |
Cita:
// Saludos |
Perdona pero discrepo en el siguiente punto:
Si abro un formulario que está disponible y lo cierro sin la opción CaFree. Despues de cerrado puede seguir accediendo a él, de lo que se infiere, que se cierra pero no libera recursos. ShowMessage(Form2.caption), me funciona perfectamente despues de cerrar el formulario 2, no es así si le aplico CaFree en el evento Onclose del mismo. Supongo que lo que quieres decir es que cuando se cierre la aplicación, se liberarán los recursos de este formulario y por ende de cualquier otro que estuviese abierto. Yo me refería a un formulario que se crea de la manera que indiqué y que cuando se cierra queremos que libere todos sus recursos. Para fortalecer mi opinión he añadido al form2 un tedit. si lo cierro y desde form1 hago : ShowMessage(form2.edit1.Text), me muestra sin ningún prolbema el contenido del edit1 que está en el formulario 2, pero si le aplico CaFree, me devuelve una excepción por intentar acceder a un objeto que no existe, sin duda destruido por CaFree. // Occurs when the form closes. type TCloseAction = (caNone, caHide, caFree, caMinimize); TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object; property OnClose: TCloseEvent; Description Use OnClose to perform special processing when the form closes. The OnClose event specifies which event handler to call when a form is about to close. The handler specified by OnClose might, for example, test to make sure all fields in a data-entry form have valid contents before allowing the form to close. // Un Saludo. |
Marcos, tienes toda la razón en lo que dices. Al cerrar el formulario puedes seguir referenciándolo ya que no se ha destruido. Se destruirá cuando el objeto que lo "posee" (el owner) se destruya, en este caso la aplicación.
La idea de owner en el VCL es facilitar la liberación de recursos dejándole la tarea al dueño de los objetos. Si se desea manejar uno mismo la liberación entonces no es necesario asignar un Owner como en: Código:
Application.CreateForm(TMiFormulario, MiFormulario); Código:
MiFormulario := TMiformulario.Create(nil); |
Bueno Roman un saludo, siempre es interesante contrastar tus enfoques.
Un Saludo desde España. |
La franja horaria es GMT +2. Ahora son las 17:22:42. |
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