Ver Mensaje Individual
  #2  
Antiguo 15-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hace poco que leí el artículo Delphi "problem": TForm.Create(?) Nil, Self or Application? de Zarko Gajic, que creo que viene aquí al pelo y tal vez te interese leer a ti también.

Lo primero decirte que estás en lo correcto: si al inicio de la aplicación se crean N formularios, se consumirán Y recursos. Si estos se van creando, por tanto, según vayan necesitándose, y liberándose luego de que su uso no sea necesario, probablemente ahorremos recursos.

Cita:
1- ¿ pero como hago Free cuando es en modo Show normal ?
Puedes hacerlo "cuando quieras", pero, sabe que los formularios cuentan con un evento "OnClose", en el que se pasa por referencia un parámetro "Action", de tipo "TCloseAction", que determina, precisamente, qué ha de hacerse con el formulario una vez este se cierre.

¿Posibles valores para dicho parámetro "Action"? Pues: caNone (para no hacer nada en concreto), caHide (para ocultar el formulario, simplemente), caFree (para liberar el formulario) o caMinimize (para minimizarlo).

Cita:
2- ¿ Como se libera la aplicación ?
Ahí ya me meto yo en camisas de once varas, pero, tal vez baste decir que cuando el formulario principal de la aplicación se cierre... la aplicación comenzará a liberarse. Por aplicación entiendo aquí a la variable "Application", que comenzará a liberar los objetos de que sea dueña, para por último terminar la aplicación. El formulario principal de la aplicación es el primero que se crea.

Cita:
3- ¿ como saber el número de veces que hay abierta una ficha ? ( esto no es muy importante ahora)
Eso depende. Una variable "Form", de tipo "TForm", sólo puede contener una instancia de la clase "TForm". Si tienes más variables con más instancias del mismo formulario... pero, no es lo común, diría yo. También hay que ver qué se entiende por un formulario "abierto". Este puede estar creado, pero, oculto, por ejemplo.

En todo caso si te interesa conocer todos los formularios de la aplicación cuenas con la variable "Screen", que tiene propiedades como "FormCount" y "Forms", que te dan acceso a todos los formularios creados en la aplicación en un momento dado.

Y termino remitiéndote de nuevo al artículo Delphi "problem": TForm.Create(?) Nil, Self or Application? de Zarko Gajic; verás que en lugar de usar "Application" como "dueña" (owner) de un formulario que crees, tal vez te convenga usar el propio "Self", o incluso "nil". Revisa el artículo en todo caso. Aunque en inglés no resulta complicado de seguir.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita