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
User avatar
XeviCOMAS
Posts: 521
Joined: Sat Mar 12, 2011 8:16 pm

Formulario MDI o NORMAL

Postby XeviCOMAS » Thu Feb 14, 2019 9:48 am

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!!!

Code: Select all

   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
Posts: 36
Joined: Mon Oct 22, 2007 5:17 pm

Re: Formulario MDI o NORMAL

Postby ftwein » Thu Feb 14, 2019 11:53 am

Olá.

Tente com

Code: Select all

WITH OBJECT TFrmMoviments()
   :nFormType := ftNORMAL
   :New( self )
   :ShowModal()
END
User avatar
XeviCOMAS
Posts: 521
Joined: Sat Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Postby XeviCOMAS » Thu Feb 14, 2019 12:59 pm

No me sirve. Ya lo habia probado.

Gracias.
Un Saludo,
Xevi.
User avatar
ignacio
Site Admin
Posts: 8546
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Formulario MDI o NORMAL

Postby ignacio » Thu Feb 14, 2019 7:01 pm

Buenas tardes Xevi,

Aquí lo tienes.

Saludos
Attachments
test.zip
(2.85 KiB) Downloaded 20 times
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
User avatar
XeviCOMAS
Posts: 521
Joined: Sat Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Postby XeviCOMAS » Thu Feb 14, 2019 7:32 pm

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.


Code: Select all

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.
User avatar
ignacio
Site Admin
Posts: 8546
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Formulario MDI o NORMAL

Postby ignacio » Thu Feb 14, 2019 7:40 pm

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

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
User avatar
XeviCOMAS
Posts: 521
Joined: Sat Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Postby XeviCOMAS » Thu Feb 14, 2019 8:26 pm

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.
User avatar
bingen
Posts: 380
Joined: Mon Jul 07, 2014 8:17 pm
Location: Bilbao
Contact:

Re: Formulario MDI o NORMAL

Postby bingen » Thu Feb 14, 2019 10:14 pm

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
User avatar
Hurricane
Posts: 104
Joined: Tue Mar 24, 2015 10:21 am
Location: Brasil
Contact:

Re: Formulario MDI o NORMAL

Postby Hurricane » Thu Feb 14, 2019 11:18 pm

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

Code: Select all

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 wrote: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!!!
[x]Harbour Delphi | Xailer VxH Fivewin Hwgui Minigui | SQL FastReport
Contact me: Developments | Training | Facebook | Projects
User avatar
XeviCOMAS
Posts: 521
Joined: Sat Mar 12, 2011 8:16 pm

Re: Formulario MDI o NORMAL

Postby XeviCOMAS » Thu Feb 14, 2019 11:28 pm

Exacto!!!

Funciona PERFECTAMENTE.

Muchas gracias.
Un Saludo,
Xevi.
User avatar
jfgimenez
Site Admin
Posts: 5620
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: Formulario MDI o NORMAL

Postby jfgimenez » Sat Feb 16, 2019 12:44 pm

XeviCOMAS wrote: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

Return to “Spanish”