Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2010
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Error al abrir y cerrar un Form con varias tablas

Buenas Tardes,

estoy haciendo un programilla con delphi7(mas bien lazarus) y postgres usando Zeolib.

He creado un DataModule en el que meto la conexion a la BD (y la abro) y todos los DS y Tablas que usa el programa. Para no liarme de momento todas las tablas estan activadas aqui.

Por otro lado tengo varios Form.

Dos de ellos son fichas de clientes y trabajadores y uno lo he llamado Obras y en él intervienen dos tablas.

No tengo claro el concepto de abrir y cerrar tablas ni acabo viendo la diferencia entre activar o abrir una tabla.

El caso es que si abro y cierro varias veces el form de clientes todo funciona perfectamente. Sin embargo si abro el form Obras y lo cierro, sin tocar nada en él, resulta que me da un fallo al intentar abrir Clientes.

La unica relacion que veo en esto es que Obras tiene un DBLookUpComboBox que despliga el nombre de la tabla clientes y supongo que eso hace que despues tenga problemas.

Como referencia Abro las tablas con OPen en el evento Create y las cierro en Close (incluso he probado en destroy).

Estoy convencido que hago algo mal a la hora de usar las tablas pero no acabo de dar con el fallo.

No se si me he explicado lo suficientemente bien como para que alguien me eche una mano con esto

Gracias de todos modos por vuestra atención
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #2  
Antiguo 16-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Sin ver nada del código que estás utilizando es difícil saber dónde puede estar el error.
El lugar de en el Create, yo utilizaría el OnShow, más que nada, porque dependiendo de cómo cierres los formularios, puede ser que tengas problemas con eso.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 16-06-2010
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Al final, visto que me estaba liando con crear, abrir, cerrar ... he decidido empezar paso a paso revisando la creacion, apertura y cierre, destruccion de los formularios.

El problema lo he resuelto asignando al evento OnClose del formulario - Action:=caFree

Por lo entiendo al llamar al formulario lo estoy creando, pero luego solo usaba close para cerrarlo sin destruirlo ni liberar memoria.

En Destroy le he metido el cierre de todas las tablas y en Create la apertura, asi toda va correctamente.

Gracias a todos
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #4  
Antiguo 16-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Delphitest Ver Mensaje
Por lo entiendo al llamar al formulario lo estoy creando, pero luego solo usaba close para cerrarlo sin destruirlo ni liberar memoria.
Correcto.
Si revisas la ayuda del evento OnClose de la clase TForm (TCustomForm) pone lo siguiente:

------------------------------------------------------------------------
If a form is an MDI child form,... then the default Action is caMinimize ... or the default Action is caNone ...
If a form is an SDI child form, Action defaults to caHide.
To close the form and free it in an OnClose event, set Action to caFree.
------------------------------------------------------------------------


Vamos, que segun el tipo de formulario (y algunas propiedades) se hace una u otra cosa por defecto, pero en ningun caso se destruye. Si quieres asegurarte de que se destrute, debes llamar al:

Código Delphi [-]
Action := caFree
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cerrar una aplicacion que consta de varias ventanas miguel_e Varios 2 21-06-2008 02:30:24
Error Al Crear Varias Veces El Mismo Form ManuelPerez Varios 7 18-09-2007 21:31:02
Cerrar un Form MDI al abrir otro MDI David OOP 7 17-08-2006 18:14:37
Cerrar varias aplicaciones desde delphi valera API de Windows 0 26-04-2005 18:24:37
Abrir varias veces el mismo form Phacko Varios 7 25-09-2004 05:22:01


La franja horaria es GMT +2. Ahora son las 02:14:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi