FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Falla la alineaci贸n LEFT
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Falla la alineaci贸n LEFT
Posted: Fri Dec 29, 2017 11:54 PM
Por cierto... no se si os habeis fijado, pero la alineacion de un control a LEFT no ocupa TODO el nWidth.

Las otras alineaciones, TOP, RIGHT, BOTTOM quadran a la perfecci贸n.
La que falla es LEFT
Me di cuenta el otro dia al alinear una ExplBar a LEFT, y pense que lo hacia mal yo... pero veo que tambi茅n ocurre con un Panel dentro de un PANEL

As铆 pues...

Code (fw): Select all Collapse
//dado un contenedor PANEL
oPanel1 := TPanel():New( 125, 345, 125+300, 345+500, oWnd )

//Creo un PANEL dentro del PANEL1
#define alLEFT 聽 3
聽 聽WITH OBJECT TPanel():New(,,30,, oPanel1 )
聽 聽:SetColor( 0, CLR_RED )
聽 聽:nAlign := alLEFT 聽//Le faltan unos pixeles en la parte inferior. Por lo visto no calcula bien el nHeight
聽 聽END WITH


vease imagen...


Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Falla la alineaci贸n LEFT
Posted: Sat Dec 30, 2017 01:08 AM
No se ve bien en tu imagen

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Falla la alineaci贸n LEFT
Posted: Sat Dec 30, 2017 09:41 AM
El problema viene de la funci贸n WndAdjLeft() que comprueba si el control tiene "abuelo" (padre de padre) :-)

Code (fw): Select all Collapse
   MoveWindow( hControl, 0, wTopHeight - ( GetParent( GetParent( hControl ) ) != 0 ) - 2,
               rctCtrl.right - rctCtrl.left,
               rct.bottom - rct.top + 1 +
               ( ! GetParent( GetParent( hControl ) ) )
               - wTopHeight - wBottomHeight,
               TRUE );


A ver que soluci贸n le podemos dar...

Aqui est谩 el ejemplo completo propuesto por Xevi:
Code (fw): Select all Collapse
#include "FiveWin.ch"

#define alLEFT   3

function Main()

   //dado un contenedor PANEL
   local oWnd, oPanel1 

   DEFINE WINDOW oWnd

   oPanel1 := TPanel():New( 125, 345, 125+300, 345+500, oWnd )
   oPanel1:SetColor( 0, CLR_BLUE )
   oPanel1:nAlign = alLEFT

   //Creo un PANEL dentro del PANEL1
   WITH OBJECT TPanel():New(,,30,, oPanel1 )
   :SetColor( 0, CLR_RED )
   :nAlign := alLEFT  //Le faltan unos pixeles en la parte inferior. Por lo visto no calcula bien el nHeight
   END WITH

   ACTIVATE WINDOW oWnd

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Falla la alineaci贸n LEFT
Posted: Sat Dec 30, 2017 10:17 AM
Con esta modificaci贸n en la funci贸n WndAdjLeft() parece funcionar bien:

Code (fw): Select all Collapse
   MoveWindow( hControl, 0, wTopHeight - 1,
               rctCtrl.right - rctCtrl.left,
               rct.bottom - rct.top + 1 +
               ( ! GetParent( GetParent( hControl ) ) )
               - wTopHeight - wBottomHeight,
               TRUE );


Habr铆a que comprobar si esto produce alg煤n efecto indeseado en otros controles (posiblemente buttonbars) ya
que ese c贸digo estaba ah铆 por algo :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Falla la alineaci贸n LEFT
Posted: Sat Dec 30, 2017 10:28 AM
Tal vez esta sea la soluci贸n correcta:

Code (fw): Select all Collapse
 MoveWindow( hControl, 0, wTopHeight - ( GetParent( GetParent( hControl ) ) != 0 ),
               rctCtrl.right - rctCtrl.left,
               rct.bottom - rct.top + 1 +
               ( ! GetParent( GetParent( hControl ) ) )
               - wTopHeight - wBottomHeight,
               TRUE );


Agradezco vuestras pruebas y comentarios :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Falla la alineaci贸n LEFT
Posted: Mon Jan 01, 2018 04:13 PM
No es lo 煤nico que encuentro que falla...
cualquier alineaci贸n (he probado PANEL) en un DIALOG, no funciona.

Code (fw): Select all Collapse
#include "FiveWin.ch"

#define alNONE   1
#define alTOP    2
#define alLEFT   3
#define alBOTTOM 4
#define alRIGHT  5
#define alCLIENT 6

Static oWnd

FUNCTION Main()

   DEFINE DIALOG oWnd FROM 1, 1 TO 800, 1450 PIXEL

   WITH OBJECT TPanel():New()
   :SetColor( 0, CLR_BLUE )
   :nHeight := 43
   :nAlign := alNONE//alCLIENT//alRIGHT//alLEFT//alTOP//alBOTTOM
   END WITH

   ACTIVATE DIALOG oWnd

Return Nil


He probado TODAS las alineaciones, lo que hacen es que no se muestra la ventana, corre la aplicaci贸n en modo Hide()
Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Falla la alineaci贸n LEFT
Posted: Mon Jan 01, 2018 04:17 PM
Con un FolderEX... lo mismo

Code (fw): Select all Collapse
#include "FiveWin.ch"

#define alCLIENT 6

Static oWnd

FUNCTION Main()
   local oFldr

   DEFINE DIALOG oWnd FROM 1, 1 TO 800, 1450 PIXEL

   oFldr := TFolderEx():New( 0, 0,,, oWnd,, .F., .F., {"Prime","Segu","Terce","Quart","Five","Coses Meves"},,, 0,,,,, .F., 0,,, .F., "TOP",,, .F.,,, .T.,, .F.,, "oFldr" )
   oFldr:nAlign := alCLIENT//alRIGHT

   ACTIVATE DIALOG oWnd

Return Nil
Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Falla la alineaci贸n LEFT
Posted: Mon Jan 01, 2018 06:09 PM
Prueba asi

Code (fw): Select all Collapse
   oWnd:oClient  := oFldr    // oTop, oLeft, oRight, oBottom
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Falla la alineaci贸n LEFT
Posted: Mon Jan 01, 2018 06:57 PM

No funciona.

Se ejecuta, se visualiza... pero no hace al Align

Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Falla la alineaci贸n LEFT
Posted: Mon Jan 01, 2018 07:05 PM

C贸mo quieres alinearlo?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Falla la alineaci贸n LEFT
Posted: Mon Jan 01, 2018 07:06 PM

Cristobal,

pues como est谩 funcionando en una WINDOW.

Si le digo alLEFT, pues a la izquierda,
alCLIENT, ocupar toda el 谩rea libre... y as铆 pues con el resto de alineaciones, que SI funcionan con una WINDOW.

Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Falla la alineaci贸n LEFT
Posted: Tue Jan 02, 2018 05:19 PM

驴?驴?

Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Falla la alineaci贸n LEFT
Posted: Wed Jan 03, 2018 05:34 PM

Mira c:\fwh\samples\testfx5.prg se ayuda.

Saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Falla la alineaci贸n LEFT
Posted: Thu Jan 04, 2018 09:34 AM
Xevi,

Un di谩logo no se crea realmente hasta que no se activa, por lo que no puedes crear
controles antes. La soluci贸n es crearlos desde la cla煤sula ON INIT del ACTIVATE DIALOG:

Code (fw): Select all Collapse
#include "FiveWin.ch"

#define alLEFT 3

FUNCTION Main()

   local oWnd, oPanel

   DEFINE DIALOG oWnd FROM 1, 1 TO 800, 1450 PIXEL

   ACTIVATE DIALOG oWnd ;
      ON INIT ( oPanel := TPanel():New(),;
                oPanel:SetColor( 0, CLR_BLUE ),;
                oPanel:nHeight := 43,;
                oPanel:nAlign := alLEFT, .T. )

Return Nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Falla la alineaci贸n LEFT
Posted: Thu Jan 04, 2018 10:01 AM

Perfecto!!!

Voy a tomar nota y crearme mis OnInitialize() en los Forms

Gracias.

Un Saludo,

Xevi.



Aprendiz de la vida!!!

Continue the discussion