![]() |
Problema con MDIChild
Hola amigos, tengo un pequeño problema y es que quiero trabajarn con MDIChild con su respectivo MDIForm, pero al momento de correr el programa, todos los MDIChild aparecen VISIBLES (y no quisiera que sea asi), y cuando hago click en CERRAR en la esquina de la ventanana, tampoco se puede cerrar, sólo se minimiza.
Cómo hacer que los MDIChild no aparescan al correr el programa? GRACIASS NOTA: Para poder Cerrar la ventana haciendo click en Cerrar en la esquina de la ventrana puse ene l evento onClose lo siguiente action := cafree; Y si lo cierra, pero sale error cuando intento abrir la misma ventana despues de haberlo cerrado. |
Las ventanas MDIChild han de estar en available forms y crearlas con algo como....
Código:
if not VentanaCreada(fmMenu, 'CMonedes') then Para cerrarla, sólo has de hacer lo que mencionas, en el OnClose poner el Action := caFree |
hola amigo, gracias por responder, pero no entiendo cuando me dices que las ventanas MDIChild estan en available forms, como ver si está o no estan???, en donde lo veo???...
y cuando me sugieres crearlas con el codigo que me sugieres, donde se supone que debo poner el codigo, es por mdichild, en que parte??.... y la funcion VENTANACREADA como podria hacerlo... plase, ayudame en esto, de verdad que soy nuevo en esto y me gustaria hacer que las ventanas no salgan asi. y bueno lo del onClose, sí sé como hacerlo... GRACIAS |
VAmos por partes
Cita:
Cita:
Cita:
Código:
function VentanaCreada(FormMDI : TForm; NomFinestra : string) : boolean; Espero te sirva |
Hola!
Creo que a lo que se refiere Cadetill, con que las ventanas MDIChild esten en Available Forms, es lo siguiente, entra en el menu Project----> Options... En la pestaña de Forms. Y mira si las ventanas MDIChild están en Available. De esa manera los formularios no estarán visibles hasta que no los crees y hagas el Show. Saludos. ;) |
Se me adelantó Cadetill :p , te lo explica perfectamente.
|
HOOLA gracias por la aclaración amigo CADETIL, pero intenete hacer lo que me sugieres en el codigo primero:
code:-------------------------------------------------------------------------------- if not VentanaCreada(fmMenu, 'CMonedes') then CMonedes := TCMonedes.Create(Application); try CMonedes.Show; except on E : Exception do begin FreeAndNil(CMonedes); end; end; -------------------------------------------------------------------------------- Podrias, por favor decirme lo que significa el CMonedes, el FmMenu, el FeeAndNil, que deverdad no lo entiendo muy bien y sólo puedo suponer Y no se el por qué, pero cuando quiero declarar esto: CMonedes := TCMonedes.Create(Application); no puedo, sale como error y lo que hago es declarar una variable CMonedes como TForm, y luego pongo CMonedes.Create(Application); Y con esta instruccion tambien tengo problemas: FreeAndNil(CMonedes); .... Aun no encuentro la solucion de los MDIChild, si esta es la solucion les agradeceria que me ayuden. Y sobre lo de Available Form, ya lo puse, pero como no pude poner la programnacion anterior, cuando pulso en el menu y llamo al formulario, sale error. Quizas el codigo que me sugiere CADETIL, sí sea la solucion, pero no puedo ponerlo GRACIAS |
Bueno, bueno, calma, que es sencillo de entender ;)
Veamos, si te fijas, en la función que te puse de VentanaCreada, ésta recibe 2 parámetros. Si revisamos los parámetros y lo que se hace con ellos dentro de la función vemos que : * primer parámetro: FormMDI : TForm este primer parámetro es la ventana MDI padre que la necesito para ir buscando todos sus hijos mediante MDIChildCount * segundo parámetro: NomFinestra : string es el nombre de la ventana MDIChild que queremos crear. Esto quizás ha sido fallo mio porqué está en catalán (soy de Andorra y mi lengua principal y en la que programo es ésta, sorry :o ) y sólo hice un copy-paste de lo que tenía sin traducirlo. Cuando digo "nombre" me refiero al valor que le das en la propiedad Name del form MDIChild. Lo de... Código:
CMonedes := TCMonedes.Create(Application); CMonedes es el nombre de la ventana y TCMonedes la clase del objeto que estamos creando. Application es el owner que le doy al objeto creado Bueno, espero que ahora quede algo más claro :) PD: mi compromiso para este 2004 es intentar traducir mi código al castellano para evitar más malas interpretaciones :D :D |
HOLA AMIGO...
BUENO GRACIAS POR TODO EN SERIO, BUENO TE CUENTO QUE NO LEI ESTE MENSAJE ULTIMO QUE RECIBI DE TI, Y YA HE PRESENTADO MI SISTEMA Y ME FUE BIEEN... PERO SABES... LA SOLUCION QUE HIZE ES SACAR LAS VENTANAS DEL AVAILABLE, Y LOS PUSE EN NORMAL... Y ASI PUDE CORRER TODO... MI PROBLEMA ERA QUE NO PODIA HACER TENER UNA PORTADA.. Y LUEGO UNA VENTANA DE LOGEO QUE HIZE, LUEGO UNA DE CARGADO, Y RECIEN ENTRO A MI MDIFORM... ESA ERA MI IDEA PERO NO PODIA TENIEDO AL MDI PADRE COMO main form... ENTONCES ESA FUE MI SLUCION... MI PREGUNTA ES COMO PODRIA HACER PARA DARLE A UNA VENTANA POR CODIGO QUE SEA EL main form, EN ESTE CASO MI MAIN FORM INCIAL ES LA PORTADA... LUEGO QUISIERA QUITARLE Y LUEGO DARSELO AL MDI padre... gracias... Y POR CIERTO... LO QUE ME DISTE ENCODIGO DE COMO ABRIR UN MDI CHICLD DESDE EL PADRE, Y LUEGO PODER CERRARLO... LO TUVE QUE ANALIZAR Y ME SALIO... PERO GGRACIAS DE TODOS MODOS... |
Bueno, para esto te sugiero que sigas este hilo http://www.clubdelphi.com/foros/showthread.php?t=6405 ;)
|
La franja horaria es GMT +2. Ahora son las 12:59:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi