Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2010
rhino0nt rhino0nt is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
rhino0nt Va por buen camino
Forma que no se cierra

Tengo un sistema MDI, al llamar una forma hija realizo en el evento FormShow() una validación para revisar si existen los registros suficientes para trabajar con la forma, si no existen se debe cerrar asi que efectuo la revisión y de ser 0 el resultado envío un mensaje y llamo la función Close, pero el mensaje aparece y la forma no se cierra, la forma aparece en pantalla, al hacer la depuración veo que se ejecuta la línea de Close pero nunca se efectua la acción, que estoy haciendo mal?
Responder Con Cita
  #2  
Antiguo 14-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

¿ Ya probaste asignando Action a caFree en el evento OnClose ?

Código Delphi [-]
procedure TForm1.MDIChildClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;



Saludos.
Responder Con Cita
  #3  
Antiguo 14-10-2010
rhino0nt rhino0nt is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
rhino0nt Va por buen camino
Solucionado

Lo solucione con este post de Roman:

Cita:

Una forma de hacerlo:

Código:
Código Delphi [-]
const
  CM_CLOSE = WM_USER + 1;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure CMClose(var Message: TMessage); message CM_CLOSE;
  end;

implementation

procedure TForm2.CMClose(var Message: TMessage);
begin
  ModalResult := mrOk;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  PostMessage(Handle, CM_CLOSE, 0, 0);
end;
PostMessage manda el mensaje pero sólo hasta que se procese el resto de mensajes, en este caso hasta que todos los mensajes necesarios para que el formulario termine de cargarse se procesen. Así, en el manejador del mensaje CM_CLOSE pones ya el valor deseado para ModalResult.

// Saludos
El problema es por el momento en que se llama el evento Close dentro del ciclo de vida de la forma, pero esto lo resuelve.

Gracias a todos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA .NET 5 05-07-2007 21:51:31
Como Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA Internet 2 02-07-2007 17:26:41
El WebBrowser no se cierra Novás Internet 5 13-07-2006 02:31:42
Forma de busqueda se cierra sola!! david duarte Varios 2 03-02-2006 17:02:36
forma que no cierra Dantael OOP 1 04-02-2005 16:33:06


La franja horaria es GMT +2. Ahora son las 14:34:22.


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