Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2009
Napoleon_5 Napoleon_5 is offline
Registrado
 
Registrado: ago 2006
Posts: 3
Poder: 0
Napoleon_5 Va por buen camino
Unhappy Excepciones con Forms Heredados

Saludos señores.

Tengo un fuerte dolor de cabeza causado por la siguiente situacion en Delphi 7:
Un formulario principal que tiene un ADOQuery y un dataset, con botones para al manejo de los datos. Este Query lo asigno en el formulario padre a una propiedad global tipo TCustomADODataset, luego lo manipulo con medotos publicos para agregar, editar y guardar los datos desde formularios hijos.

Todo me funciona a la perfeccion en lo referente a la manipulacion de los datos, pero el gran problema surge cuando habiendo mostrado y cerrado un formulario hijo (heredado), trato de abrirlo de nuevo antes de cerrar la aplicación. me devuelve una excepcion de violacion de acceso (Access Violation) que no de dice exactamente cual es el problema.

Supongo que debo liberar la instancia del formulario o algo que ver con el dataset al cerrar el hijo o algo asi. Aunque en el evento close del padre tengo Action := caFree establecido.

Ya he revisado que se abra bien el query y que se guarden los datos. A veces hasta cuando cierro el formulario hijo me da violacion de acceso.

Mi tranque esta en que no se como evitar este error


¿Alguna idea..?

Si me pueden ayudar... Gracias mil...
Responder Con Cita
  #2  
Antiguo 25-11-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo empezaría por aislar la zona donde se produce el error.
Pon un breakpoint en el procedimiento OnClose y OnDestroy del fromulario
Pon otro en el OnCreate.
Luego ve saltando por las instrucciones con F8.
Cuando llegues a la que te da el Access Violation podremos ayudarte.

Cuando abres el Form lo creas o solo le dices Form.Show?
Si le pones caFree, el Form, desaparece completamente de la aplicación. Deberás volver a crearlo si deseas usarlo.
Responder Con Cita
  #3  
Antiguo 25-11-2009
gerardus gerardus is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
gerardus Va por buen camino
Si el form2 es heredado del form1, y el form1 tiene caFree en el OnClose, el Form2 tiene el mismo comportamiento: se libera el form2 al cerrar.
Cualquier intento de volverlo a mostrar (.Show o .ShowModal) sin haberlo creado de nuevo -> Access Violation.
Como bien dice duilioisola, intenta trazar que pasa cuando cierras el form y lo vuelves a mostrar.
Otra pista: Si observas el valor de un form creado y liberado desde el debugger, no tiene porque ser nil aunque ya no exista.

Última edición por gerardus fecha: 25-11-2009 a las 09:52:17.
Responder Con Cita
  #4  
Antiguo 25-11-2009
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
También estaría bien que colocaras algo de código de cómo creas y cómo liberas(cierras) el formulario. Incluyendo los OnClose, Destroy,... si es que los has programado.
__________________
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
  #5  
Antiguo 27-11-2009
Napoleon_5 Napoleon_5 is offline
Registrado
 
Registrado: ago 2006
Posts: 3
Poder: 0
Napoleon_5 Va por buen camino
Cada vez que voy a utilizar una instancia del form padre lo creco de la siguiente manera:

frmHijo:=TfrmHijo.Create(self);
frmHijo.Show;

Considerando que el form padre es MDIChild y que los muestro en una aplicacion con un form MDIForm.

Todos los forms, excepto el principal, los creo solo al momento de utilizarlos y al cerrarlos los libero con Action := caFree;

Al parecer, el error se produce cuando creo varios forms hijos del mismo padre.

Sigo probando...
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
Problema con Uso de Formularios Heredados y en Package Efren2006 OOP 7 29-05-2008 16:27:49
Excepciones banleu Firebird e Interbase 8 20-04-2006 00:11:18
Excepciones Acker Tablas planas 6 06-08-2005 15:22:18
excepciones!!!!! hanna33 OOP 3 24-05-2005 17:10:10
Excepciones del bde Pablo Carlos Conexión con bases de datos 3 15-04-2005 17:57:46


La franja horaria es GMT +2. Ahora son las 05:16:19.


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