In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Formulario MDI o NORMAL

Foro público de Xailer en español
Responder
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Formulario MDI o NORMAL

Mensaje por XeviCOMAS »

Resulta que tengo un Formulario que lo utilizo en mi aplicación, y éste está "diseñado" en
nFormType ftMDICHILD

Bien, pues en alguna ocasión, veo necesario utilizar ese form, pero no como CHILD, sinó como un form independiente, Modal, por ejemplo.

Pues como veo en la ayuda de Xailer, nFormType... asignable solo en diseño.

Intento "diseñar" antes de crear al llamar el Form, pero no me funciona!!!

Código: Seleccionar todo

   WITH OBJECT TFrmMoviments():New( self )
   :nFormType := ftNORMAL
   :Create()
   :nFormType := ftNORMAL  //ni antes ni después del Create()
   :ShowModal()
   END
Alguna solución???


Gracias por vuestro tiempo.
Un Saludo,
Xevi.
ftwein
Mensajes: 50
Registrado: Lun Oct 22, 2007 5:17 pm

Re: Formulario MDI o NORMAL

Mensaje por ftwein »

Olá.

Tente com

Código: Seleccionar todo

WITH OBJECT TFrmMoviments()
   :nFormType := ftNORMAL
   :New( self )
   :ShowModal()
END
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Mensaje por XeviCOMAS »

No me sirve. Ya lo habia probado.

Gracias.
Un Saludo,
Xevi.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Formulario MDI o NORMAL

Mensaje por ignacio »

Buenas tardes Xevi,

Aquí lo tienes.

Saludos
Adjuntos
test.zip
(2.85 KiB) Descargado 221 veces
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Mensaje por XeviCOMAS »

Gracias por responder, Ignacio.

Tu ejemplo funciona correctamente, solo que, el Form está declarado en el IDE como ftNORMAL y lo cambias a ftMDICHILD.

Ahora bien. Si declaramos en el IDE el Form como ftMDICHILD, no funciona igual. No obtengo el mismo resultado.

Código: Seleccionar todo

METHOD Menu1Item1Click( oSender, oMenu ) CLASS TForm1
/*
   WITH OBJECT TForm2()
      :nFormType := ftMDICHILD
      :New( Self )
      :Create()
      :nLeft := 0
      :nTop := 0
      :Show()
   END WITH
*/
   WITH OBJECT TForm2():New( Self )
      :nLeft := 0
      :nTop := 0
      :Create()
      :Show()
   END WITH

RETURN Nil

//------------------------------------------------------------------------------

METHOD Menu1Item2Click( oSender, oMenu ) CLASS TForm1
/*
   WITH OBJECT TForm2():New( Self )
      :Create()
      :ShowModal()
   END WITH
*/
   WITH OBJECT TForm2():New( Self )
      :nFormType := ftNORMAL
      :Create()
      :ShowModal()
   END WITH
RETURN Nil

De esta manera, al abrir el form noMDI, el programa se pierde, hay que provocar el cierre forzado.
Un Saludo,
Xevi.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Formulario MDI o NORMAL

Mensaje por ignacio »

Pues no tienes más que hacerlo como te digo ;-)

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Mensaje por XeviCOMAS »

Pues si... es una solución. Sólo que mis aplicaciones estan desarrolladas en entorno MDI... bien cambiaré de momento la que quiero utilizar de esta forma, y ya iré viendo.

Ahora estoy cambiando el "xip". Quiero pasar a utilizar pestañas, que es como creo que se están desarrollando las aplicaciones hoy en dia.
El entorno MDI creo que está porque ya estava, pero va siendo cada vez mas en desuso.

Gracias por responder.
Un Saludo,
Xevi.
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Formulario MDI o NORMAL

Mensaje por bingen »

Nosotros dejamos de usar MDI hace 8 años, era muy pesado, consumia recursos y enlentecía la ejecución.

Pasamos todo a pestañas como tu dices y fue un cambio muy bueno.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Re: Formulario MDI o NORMAL

Mensaje por Hurricane »

holla,
hoje eu criei um exemplo e funcionou bem, misturei com outros forms ftMDICHILD, ftNORMAL
Depois de você testar na sua aplicação, reporte o resultado, e coloque uma imagem.

Há alguns anos eu criei uma rotina para converter ftNORMAL para ftMDICHILD e abrir em FOLDERPAGE, mais simples que XAILER\SAMPLES\....

uso:
frmCliente() // original ftMDICHILD (designer)
frmCliente(.t.) // Modal

Código: Seleccionar todo

function frmCliente( lModal )
   local oFrm

   HB_Default(@lModal, .f.)

   //oFrm:=LoadFrm( 'TFrmCliente' ) // <-- depois crie a sua lógica de verificação.

   if oFrm # nil // <-- depois crie a sua lógica de verificação.
      MsgInfo('Form in use: ' + oFrm:cText)
      oFrm:setFocus()

   elseif lModal
      with object TFrmCliente()
         :lModal:=.T.
         :lCentered:=.t.
         :New(Application:oActiveForm)
         :ShowModal()

      end with
   else
      with object TFrmCliente():New(Application:oMainForm)
         :show()
      end with
   endif
   return nil
XeviCOMAS escribió:Resulta que tengo un Formulario que lo utilizo en mi aplicación, y éste está "diseñado" en
nFormType ftMDICHILD

Bien, pues en alguna ocasión, veo necesario utilizar ese form, pero no como CHILD, sinó como un form independiente, Modal, por ejemplo.

Pues como veo en la ayuda de Xailer, nFormType... asignable solo en diseño.

Intento "diseñar" antes de crear al llamar el Form, pero no me funciona!!!
Developments | Trainings | Projects
Site | E-mail | Messenger | YouTube
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Mensaje por XeviCOMAS »

Exacto!!!

Funciona PERFECTAMENTE.

Muchas gracias.
Un Saludo,
Xevi.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5705
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Formulario MDI o NORMAL

Mensaje por jfgimenez »

XeviCOMAS escribió: Tu ejemplo funciona correctamente, solo que, el Form está declarado en el IDE como ftNORMAL y lo cambias a ftMDICHILD.

Ahora bien. Si declaramos en el IDE el Form como ftMDICHILD, no funciona igual. No obtengo el mismo resultado.
La explicación la tienes dentro del .xfm. Échale un vistazo y lo verás.

Cuando es ftNORMAL, no se guarda esa propiedad, porque ese es su valor por defecto. Por lo tanto, cuando tú cambias su valor por código, antes de que se ejecute CreateForm(), se queda con el valor que tú has puesto.

En cambio si la pones a ftMDICHILD en diseño, entonces sí que se guarda en el .xfm, y por mucho que quieras cambiarla por código, al ejecutarse CreateForm() vuelve a poner lo que pusiste en diseño.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder