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 02-04-2004
GeoAvila GeoAvila is offline
Registrado
 
Registrado: abr 2004
Posts: 6
Poder: 0
GeoAvila Va por buen camino
Los MDI en delphi

HOla he estado trabajando ultimante con delphi...

tengo un problema, el cual es que cuando creo un mdichild, cuando le doy cerrar el mdichild lo unico que hace es que se minimiza, bueno por alli encontre un codigo, para cerrarlo y me lo cierra, pero como lo vuelvo a abrir les agradeceria si alguno de ustedes me puediera resolver al duda de como cerrar y volver a abrir el mdichild, cual es codigo adecuado para hacerlo. gracias de antemano
Responder Con Cita
  #2  
Antiguo 02-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por defecto, cuando cierras un formulario, la acción a seguir es como sigue:

si el formulario es MdiChild se minimiza (como ya notaste)
si el formulario no es MdiChild se oculta

Este comportamiento pede alterarse usando el evento OnClose del formulario y ajustando el parámetro Action al valor de tu preferencia:

caHide - oculta el formulario
caFree - destruye el formulario
caMinimize - minimiza el formulario
caNone - no hace nada (no cierra el formulario)

Pero con formularios MdiChild no es posible usar caHide de manera que sólo te queda destruirlo.

Ahora bien, lo recomendado en aplicaciones MDI es quitar todos los formularios MdiChild de la lista 'Auto-create forms' en el menú Project|Options|Forms a fin de que no se creen automáticamente. Tú debes crearlos manualmente:

Código:
with TMdiChildForm.Create do
  Show;
Esto lo pondrías en algún menú por ejemplo de manera que pueda volver a ejecutarse cada vez que se desee.

Nota que con este método el usuario podrá abrir varias copias del formulario- lo cual, por otro lado es lo normal en una aplicación MDI. En ocasiones se requiere poder abrir una sóla copia- hecho que a mi parecer no tiene mucho sentido pero no lo discuto. Para ello debes poder detectar, en el código de arriba si ya ya está abierto o no el formulario para crearlo sólo en caso de que no esté abierto.

Hay varias maneras de hacer esto. Una de ellas- no me gusta pero es muy práctica y fácil -es usar la variable que Delphi crea por tí cuando agregas el formulario durante el diseño:

Código:
type
  TMdiChildForm = class(TForm)
    ...
  end;

var
  MdiChildForm: TMdiChildForm;
El código quedaría así:

Código:
if MdiChildForm <> nil then
begin
  MdiChildForm := TMdiChildForm.Create(nil);
  MdiChildForm.Show;
end;
y en el evento OnClose del formulario MdiChild pondrías:

Código:
Action := caFree;
MdiChildForm := nil;
// Saludos
Responder Con Cita
  #3  
Antiguo 02-04-2004
GeoAvila GeoAvila is offline
Registrado
 
Registrado: abr 2004
Posts: 6
Poder: 0
GeoAvila Va por buen camino
Gracias por tu muy completa resuesta me ha servido de mucha ayuda..

nos vemos..
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 14:02:02.


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