Page 1 of 1

MDICHILD... CENTERED ???

PostPosted: Sat Jan 13, 2018 7:18 pm
by Xevi
Resulta, que metido en mis pruebas con entorno MDI, me doy cuenta que no se "centra" una MDIChild...

Code: Select all  Expand view

#include "FiveWin.ch"

static oWnd

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

function Main()
   local oBar

   DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL MDI

   DEFINE BUTTONBAR oBar _3D OF oWnd

   DEFINE BUTTON OF oBar ACTION child()

   ACTIVATE WINDOW oWnd

return nil

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

function Child()

   local oWndChild

   DEFINE WINDOW oWndChild MDICHILD OF oWnd FROM 0,0 TO 25,25

   ACTIVATE WINDOW oWndChild CENTERED

return nil

 



Antonio, usando el ejemplo que has puesto de simular un MDI sencillo...

Code: Select all  Expand view

#include "FiveWin.ch"

function Main()

   local oWnd, oChild1
   Local nClientWidth

   DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL

   DEFINE WINDOW oChild1 FROM 0,100 TO 100,250 PIXEL OF oWnd
   oChild1:Center()
   oChild1:Show()

   ACTIVATE WINDOW oWnd

Return nil
 


lo que hace es centrar en la pantalla, no en la ventana contenedora.
A mi entender, creo que deberia de funcionar el evento Center() del ejemplo anterior, seria lo mas "correcto"


Y para centrarlo, de momento... lo hago "calculando" el ancho/alto...

Code: Select all  Expand view

#include "FiveWin.ch"

function Main()

   local oWnd, oChild1
   Local nClientWidth

   DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL
   nClientWidth := oWnd:GetCliAreaRect():nWidth

   DEFINE WINDOW oChild1 FROM 0, (nClientWidth-250)/2 TO 0, (nClientWidth/2)+125 PIXEL OF oWnd

   oChild1:nHeight := oWnd:GetCliAreaRect():nHeight
   oChild1:Show()

   ACTIVATE WINDOW oWnd

Return nil
 


Hago algo mal???

Re: MDICHILD... CENTERED ???

PostPosted: Sat Jan 13, 2018 11:59 pm
by Giovany Vecchi
Tenta assim

Code: Select all  Expand view

function Child()
   local oWndChild

   DEFINE WINDOW oWndChild MDICHILD OF oWnd FROM 0,0 TO 25,25

   ACTIVATE WINDOW oWndChild On Init oWndChild:Center()

return nil

 

Re: MDICHILD... CENTERED ???

PostPosted: Sun Jan 14, 2018 6:31 am
by Antonio Linares
Xevi,

oChild1:Center( oWnd )

Re: MDICHILD... CENTERED ???

PostPosted: Sun Jan 14, 2018 9:23 pm
by Xevi
Pues lo centra del ancho, pero no del alto... el alto queda "descompensado" mas espaciado arriba que abajo.

Re: MDICHILD... CENTERED ???

PostPosted: Mon Jan 15, 2018 6:04 am
by Antonio Linares

Re: MDICHILD... CENTERED ???

PostPosted: Mon Jan 15, 2018 10:04 am
by José Luis Sánchez
Hola Xavi,

Hay otras alternativas al uso de MDI, que por otra parte creo que está superada dede hace tiempo. Echale un vistazo a mi clase TFDSI https://cincomundos.wordpress.com/?s=tfsdi que puedes ver en mis programas de alanit - http://www.alanit.com - y también al código de Colossus que la implementa - https://github.com/JoseluisSanchez/colossus

Saludos,
José Luis