Page 1 of 1

Bug TRibbonBar / TDockPnel en windows7 (Solucionado)

Posted: Thu Feb 11, 2021 9:39 am
by leandro
Buenos días para todos

Como estoy haciendo actualizaciones en la aplicación, van surgiendo cosas a medida de avanzamos, en este momento el error de sale es en el control TRibbonBar no ajusta los textos de las pestañas, pero lo raro es que en windows 10 funciona perfectamente, de momento note que el error pasa es con windows7.

Una imagen dice mas que mil palabras.

Image

Espero me puedan ayudar nuevamente.

De antemano gracias,

Re: Bug TRibbonBar en windows7

Posted: Thu Feb 11, 2021 7:13 pm
by leandro
Buenas tardes para todos

Mediante el método de prueba y error, logre determinar que el error se produce al momento hacer el llamado de a función SETPARENT(). El problema es que si la quito el cuadro de dialogo no sale contenido dentro del control tdockpnel.

Como les comente anteriormente solo sucede en windows7, y el problema es que un tenemos demasiados usuarios con ese sistema operativo.

Code: Select all

DEFINE WINDOW oWid FROM nPosx, nPosy TO nAlto,nAnch TITLE  "Titulo" ICON "#8001" ;
        PIXEL NOMAXIMIZE NOMINIMIZE
        
    .................
    oDock2  := TDockPnel():New( oWid )
    WITH OBJECT oDock2
        :SetHeightCaption( 30 )
        :SetCoors( { | o | XEval( o:oWnd:aControls[ 1 ]:nTop, o ) }, ;
        { | o | XEval( o:oWnd:aControls[ 1 ]:nRight, o ) + 10 }, ;
        { | o | XEval( o:oWnd:aControls[ 1 ]:nBottom, o ) - 1 }, ;
        { | o | (Int( o:oWnd:nWidth / 12 )*4) + XEval( o:nLeft, o ) - 25 } )
        :SetCaption( { | o | "Inicio de Sesión" } )
        :SetColors( CLR_WHITE, Rgb( 0,120,215 ) , Rgb( 88, 88, 88 ), CLR_HGRAY )
        :SetBorderSize( 4 )
        :SetFont( oFont6 )
        :lLeftImgs   := .F.
        :lBottom := .F.
        :SetCtrlsPnel( { | o, nT, nL, nH, nW, oB | oB := MuestraSesion(  o, nT, nL, nH, nW ) } )
        :Activate()
    END 
    ................
    
ACTIVATE WINDOW oWid VALID (oCnEmp:close(),.T.) 
                
                   
                   
Function MuestraSesion( oP, nT, nL, nH, nW )

......

DEFINE BRUSH oBrush FILE ".\res\lyma-front.png" STRETCH
nStyle :=nOR( DS_MODALFRAME, WS_POPUP ) // Removes the ? and x on the dialogue title
DEFINE DIALOG oDlg TITLE "Dialog" STYLE nStyle;
    SIZE oP:nWidth , oP:nHeight OF oP PIXEL BRUSH oBrush
    oDlg:nTop      := 0
    oDlg:nLeft     := 0
    oDlg:lHelpIcon := .F.

    .......
    .....
    
ACTIVATE DIALOG oDlg NOWAIT ;
    ON INIT (SetParent( oDlg:hWnd, oP:hWnd ),Inicio(oDlg,aEmpresas[oBrw:nArrayAt]["e_codi"],oLamcla:oServer) ) ;
    ON MOVE oDlg:Move( 0, 0, , , .T. ) 

Return oDlg 
Image

Alguna idea de porque?

Re: Bug TRibbonBar / TDockPnel en windows7

Posted: Fri Feb 12, 2021 2:02 am
by leandro
Bueno después de batallar todo el día, encontré la solución. En el ON PAINT de la venta principal refresque el menu y la RibbonBar. Y ya funciona correctamente.

Code: Select all

  oWnd:bPainted := {|hDC| FW_DrawImage( hDC, ".\res\fondo-logo.png", { 0,0, 668, 668 } ),;
            oRBar:CalcPos(), oWnd:SetMenu( BuildMenu2() )}
 

Re: Bug TRibbonBar / TDockPnel en windows7 (Solucionado)

Posted: Fri Feb 12, 2021 8:06 am
by Antonio Linares
Leandro,

Enhorabuena por solucionarlo y muchas gracias por compartirlo :-)