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 23-11-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Poder: 21
senpiterno Va por buen camino
MDI Child que no se cierran

Hola amigos

Mi problema es el que menciono en el titulo, por defecto se que los formularios hijos MDI Child no se cierran a menos que en el evento onclose de este, asignemos a la variable Action el valor de cafree, que es precisamente lo que realizo, pero solo se cierra el primer MDI form y los demas al precionar la X para cerrar el formulario no hacen nada, es mas hasta el formulario contenedor deja de responer cuando lo intento cerrar...a continuacion coloco la forma en que creo los MDI Child y como los cierro...
Para crearlo:
Código Delphi [-]
Procedure TMenuPrincipal.PresionaEntrarMaestroUsuariosDelSistema;
Var
     FormHijo:TMaestroUsuariosIndividual;
Begin
 
  Try //Iniciamos el codigo de control de errores
 
       //Funciones pre-carga formulario....
 
       //Bloqueamos el repintado de la pantalla hasta que no se halla
       //cargado completamente el formulario
       LockWindowUpdate(Handle);
       //Creamos el nuevo hijo   
       FormHijo:=TMaestroUsuariosIndividual.Create(Self);
       //Asigna el caption que tendra el formulario
       FormHijo.Caption:=ColocaNombreFormularios (CNFNomFormMaUsuariosSistema);
       //Que los eventos de teclado se produscan primero en el formulario y despues en los controles
       FormHijo.KeyPreview:=True;
       //Dejamos que la pantalla se repinte, para mostrar en pantalla
       //lo que el formulario muestra 
       LockWindowUpdate(0);
 
       //Funciones pos-carga formulario....
 
  Except //Se ha producido un error
     On E:Exception Do
         If (MensajesDeError(ErroresSistema(E), E, GloMsgErrorCargaFormDesdeMenuPrincipal,False)<> OpReintentar) Then Begin
            CierraCualquierObjeto([FormHijo]);
            Exit;//Salismos del procedimiento
         End;//If
      End;//on
End;
Para cerrarlos
Código Delphi [-]
 
Procedure TMaestroUsuariosIndividual.FormClose(Sender: TObject;
var Action: TCloseAction);
Begin
    OperacionEnCurso:=OpSaliendo;//Se carga la operacion en curso
    //Borramos el formulario de la lista de nombres abiertos
    BorraNombreFormulariosEnLista(self.Caption);
    //Cerramos accesos a datos
    CierraCualquierObjeto([TUsuarios,DSUsuarios,TranLecturaUsuarios]);
    //Salimos del formulario
    Action:=cafree;
End;
 
Procedure TMaestroUsuariosIndividual.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
Begin
    //Averiguamos si podemos cerrar el formulario
    If SalirFormularioUsuarios Then Begin
       CanClose:=True;//Cerranmos el formulario
    End Else Begin
       CanClose:=False;//No Cerranmos el formulario
    End;
End;

esta puesto tal cual lo tengo...las funciones que aparecen al cerrar el form son comprovaciones para saber si es posible cerrar el formulario(en caso de que este en proceso un ingreso o una modificacion) o para descargar de memoria objetos creados dentro del form...

Se agradece cuanquier ayuda
Saludos....

Última edición por senpiterno fecha: 23-11-2004 a las 02:32:33.
Responder Con Cita
  #2  
Antiguo 23-11-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Poder: 21
senpiterno Va por buen camino
Bueno, ya que veo que nadie me puede ayudar con mi duda, me podrian indicar cual es la forma acostumbrada o mas utilizada para abrir y cerrar formularios MDIChild...

Saludos...
Responder Con Cita
  #3  
Antiguo 23-11-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Mira primero que todo si no te han contestado es porq quizas nadie sepa la respuesta, me parece muy pronto para
Cita:
Bueno, ya que veo que nadie me puede ayudar con mi duda,
con respecto a lo que dices

Cita:
al precionar la X para cerrar el formulario no hacen nada, es mas hasta el formulario contenedor deja de responer cuando lo intento cerrar
por lo que logre entender el problema no es como lo cierras si no alguna de las funciones que incluyes alli porq el comportamiento normal seria que se minimizara no que dejara de responder tal vez debas dpurar paso a paso y nos cuentas que sucede
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #4  
Antiguo 24-11-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Poder: 21
senpiterno Va por buen camino
Cita:
Empezado por eduarcol
por lo que logre entender el problema no es como lo cierras si no alguna de las funciones que incluyes alli porq el comportamiento normal seria que se minimizara no que dejara de responder tal vez debas dpurar paso a paso y nos cuentas que sucede
El problema no son las funciones, las he revizado bien y no causan ningun problema, ademas en esas funciones no realizan ninguna operacion que involucre al Form, solo son comprovaciones de los datos que maneja el formulario. Lo extraño del comportamiento de los formularios es que realizan perfectamente las operaciones con los controles que estan contenidos en él, es solo que el boton cerrar no responde y el del form principal tampoco, no es que se queden colgados, sino como explicada, que el evento onclose no se genera al precionar el boton de cerrar...
Que podra estar pasando, quizas sera un problema tenga que ver con las instancias del form que utilizo como plantilla para los MDIChild, tiene alguna ingerencia que todos los form se crean con el mismo nombre, aunque tecnicamente sean instancias diferentes ?....podria estar pasando que al cerrar uno de los MDIChild la aplicacion pierde el foco y ya no puede recuperarlo...
Cualquier ayuda es bien venida, quizas mi tecnica de creacion de los form no es la correcta....

Saludos...
Responder Con Cita
  #5  
Antiguo 24-11-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Yo sigo creyendo que el problema es de una funcion de hecho debe ser la funcion "SalirFormularioUsuarios" porq el closequery se ejecuta antes que el close, por eso si esa funcion dvuelve falso nunca vas a cerrar el formulario
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #6  
Antiguo 25-11-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Poder: 21
senpiterno Va por buen camino
Cita:
Empezado por eduarcol
Yo sigo creyendo que el problema es de una funcion de hecho debe ser la funcion "SalirFormularioUsuarios" porq el closequery se ejecuta antes que el close, por eso si esa funcion dvuelve falso nunca vas a cerrar el formulario
Tienes toda la razon si la funcion "SalirFormularioUsuarios" devulve false nunca saldra del formulario, pero el problema es que ni siquiera se genera el evento OnClosequery, he puesto Break Poin al inicio del evento OnClosequery para ver como se comporta la funcion "SalirFormularioUsuarios" , pero el control del programa nunca llega ahi cuando, preciono cerrar, es por esto que te digo que las funciones incertas en los eventos OnClosequery y OnClose no son el problema, ya que despues de cerrar el primer form hijo, nunca llegan ha generarce dichos eventos al intentar cerrarlos.....Vuelvo a repetir cualquier sugerencia me servira...

Saludos...
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


La franja horaria es GMT +2. Ahora son las 03:48:58.


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