![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
dudas sobre fichas
Si se hace una aplicación, con muchas fichas y todas se crean automaticamente, deduzco que se ocupará mucha memoria y la aplicación será mas perezosa. ¿ cierto ?
Entonces yo, he desactivado la creación automatica de algunas fichas y para abrirla tengo este código: Código:
Comunicaciones:=TComunicaciones.Create(Application); Comunicaciones.Show; //comunicaciones.Free; 1- ¿ pero como hago Free cuando es en modo Show normal ? 2- ¿ Como se libera la aplicación ? 3- ¿ como saber el número de veces que hay abierta una ficha ? ( esto no es muy importante ahora) Gracias.
__________________
Saludos Cordiales. ------------------ |
#2
|
||||
|
||||
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:
¿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:
Cita:
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. |
#3
|
||||
|
||||
Confirmo lo que dice dec porque lo he comprobado en mis propias carnes. Hace años me encargaron mejorar un programa. Era completísimo y tenía como 200 ventanas, fichas, paneles y formularios o más. El que había hecho el programa había dejado que se crearan todos estos objetos automáticamente, así que nada más empezar el programa se tiraba media hora (reloj en mano) parado hasta abrir la primera ventana.
Cuando terminé la remodelación (un año más tarde) mi programa tenía tantas o más ventanas y paneles pero sólo los cuatro o cinco más importantes (la principal, un datasource y alguna cosilla más) eran creados al arrancar mientras que el resto se creaban y destruían cuando procedía. Mi jefe se quedó flipando porque el anterior programador le dijo que no podía cargar más rápido y mi versión cargaba en 30 segundos o poco más (y por culpa de la base de datos, que se las traía). Así que pregunta, pregunta: Cita:
(nota: Lo cierto es que hace mucho que no hago programas "visuales" en Delphi, así que si estoy equivocado ruego me disculpen). Última edición por Ñuño Martínez fecha: 15-09-2007 a las 14:40:56. Razón: Añado una respuesta |
#4
|
|||
|
|||
Cita:
__________________
Saludos Cordiales. ------------------ |
#5
|
||||
|
||||
Hola,
Pues muy sencillo. Tienes que usar el evento "OnClose" de los formularios, siempre que lo estimes oportuno. Y en dicho evento verás que se pasa por referencia un parámetro "Action". A dicho parámetro uno de los valores posibles, por ejempo, "caFree", de modo que cuando el formulario se cierre se libere al mismo tiempo. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Dudas sobre las api de windows | Barbaro | API de Windows | 2 | 26-12-2005 14:11:32 |
Dudas sobre TTreeView | jodycom | Varios | 2 | 18-04-2005 10:03:50 |
dudas sobre transacciones..... | inexperto | Conexión con bases de datos | 2 | 18-11-2004 20:24:31 |
Dudas sobre Locate | silviodp | Conexión con bases de datos | 8 | 28-04-2004 14:59:26 |
Dudas sobre IP | acertij022 | Internet | 0 | 20-05-2003 21:04:29 |
![]() |
|