![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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; 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; Código:
if MdiChildForm <> nil then begin MdiChildForm := TMdiChildForm.Create(nil); MdiChildForm.Show; end; Código:
Action := caFree; MdiChildForm := nil; |
#3
|
|||
|
|||
Gracias por tu muy completa resuesta me ha servido de mucha ayuda..
nos vemos.. |
![]() |
|
|
![]() |
|