bug FWH EXCESS RELEASE [resuelto]

bug FWH EXCESS RELEASE [resuelto]

Postby MOISES » Fri Apr 10, 2020 11:59 am

Hola:

En cada ejecución del programa, se genera un .log con este contenido:

Code: Select all  Expand view
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBGROUP:SETFONT(3086) <-SETRIBBONBARTHEME(2388) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBGROUP:SETFONT(3086) <-SETRIBBONBARTHEME(2388) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBGROUP:SETFONT(3086) <-SETRIBBONBARTHEME(2388) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBGROUP:SETFONT(3086) <-SETRIBBONBARTHEME(2388) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBGROUP:SETFONT(3086) <-SETRIBBONBARTHEME(2388) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBGROUP:SETFONT(3086) <-SETRIBBONBARTHEME(2388) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:53:58: EXCESS RELEASE OF FONT SYSTEM_FONT[ hFont : 1359611297] ( nCount : 0 )
     <-TFONT:END(297) <-TRBTN:SETFONT(3086) <-SETRIBBONBARTHEME(2406) <-MAIN(416)
    ------------------------------------------------------------   
10-04-2020 13:54:07: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:07: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:07: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:07: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:10: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: FW_SAYTEXT( 505 )  hFont =     "invalid font" = "invalid font" 
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 12 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12009) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 11 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12013) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 10 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12009) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 9 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12013) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 8 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12009) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 7 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12013) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 6 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12009) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 5 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12013) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 4 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12009) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 3 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12013) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 2 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12009) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 1 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1019) <-(b)TBTNBMP(192) <-TBTNBMP:END(0) <-TXBRWCOLUMN:END(12013) <-TXBROWSE:DESTROY(942) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827)
    ------------------------------------------------------------   
10-04-2020 13:54:12: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 0 )
     <-TFONT:END(297) <-TCONTROL:DESTROY(2293) <-TXBROWSE:DESTROY(992) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827) <-TXBROWSE:HANDLEEVENT(11238) <-_FWH(3559) <-DESTROYWINDOW(0) <-TDIALOG:CLOSE(967)
    ------------------------------------------------------------   
10-04-2020 13:54:14: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -1 )
     <-TFONT:END(297) <-MAIN(474)
    ------------------------------------------------------------   
 


Gracias.
Last edited by MOISES on Mon Apr 13, 2020 2:59 pm, edited 1 time in total.
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
MOISES
 
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am

Re: bug FWH EXCESS RELEASE

Postby MOISES » Mon Apr 13, 2020 7:11 am

??
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
MOISES
 
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am

Re: bug FWH EXCESS RELEASE

Postby Antonio Linares » Mon Apr 13, 2020 7:53 am

Moises,

Ese mensaje quiere decir que se ha intentado liberar un recurso más veces de las necesarias.

Es decir, si tu has hecho un oFont:End() que no era necesario, al intentar la RibbonBar hacer lo mismo, FWH genera ese mensaje.

Puedes proporcionar un PRG pequeño y autocontenido que genere esos mensajes ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41855
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: bug FWH EXCESS RELEASE

Postby MOISES » Mon Apr 13, 2020 8:49 am

Claro, aquí va:

Code: Select all  Expand view
#include "FiveWin.ch"
#include "ribbon.ch"

#define RB_THEME_DARK          6
#define RB_THEME_BLUE          7
#define RB_THEME_RED           8
#define RB_THEME_GREEN         9
#define RB_THEME_ORANGE       10
#define RB_THEME_PURPLE       11

#define CLR_MSBLUE       RGB(  43,  87, 154 )
#define CLR_MSLIGHTGRAY  RGB( 243, 243, 243 )
#define CLR_MSGRAY       RGB( 198, 198, 198 )
#define CLR_DARKGRAY     RGB(  54,  54,  54 )

#define CLR_MSRED    RGB( 164, 55, 58 )
#define CLR_MSORANGE RGB( 184, 72, 43 )
#define CLR_MSPURPLE RGB( 128, 57, 123 )

#define CLR_MSBLUE1 RGB( 1, 115, 199 )
#define CLR_MSBLUE2 RGB( 57, 85, 163 )
#define CLR_MSBLUE3 RGB( 42, 87, 154 )

#define CLR_MSGREEN1 RGB( 49, 117, 47 )
#define CLR_MSGREEN2 RGB( 7, 117, 104 )
#define CLR_MSGREEN3 RGB( 34, 116, 71 )

#define COLOR_GRAYTEXT       17

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

function Main()

   local oWnd

   DEFINE WINDOW oWnd

   oWnd:SetSize( 1200, 800 )

   BuildRibbon( oWnd )

   ACTIVATE WINDOW oWnd CENTER // MAXIMIZED

return nil

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

function BuildRibbon( oWnd )

   local oRb := TRibbonBar():New( oWnd ), oGroup, oBtn, oMenu

   MENU oMenu POPUP
      MENUITEM "Dark"  ;
         ACTION ( SetRibbonBarTheme( oRb, RB_THEME_DARK ),  oRb:Refresh() )

      MENUITEM "Blue"  ;
         ACTION ( SetRibbonBarTheme( oRb, RB_THEME_BLUE ) , oRb:Refresh() )

      MENUITEM "Green"  ;
         ACTION ( SetRibbonBarTheme( oRb, RB_THEME_GREEN ), oRb:Refresh() )

      MENUITEM "Red"    ;
         ACTION ( SetRibbonBarTheme( oRb, RB_THEME_RED ),   oRb:Refresh() )

      MENUITEM "Orange" ;
         ACTION ( SetRibbonBarTheme( oRb, RB_THEME_ORANGE ), oRb:Refresh() )

      MENUITEM "Purple"  ;
         ACTION ( SetRibbonBarTheme( oRb, RB_THEME_PURPLE ) ,  oRb:Refresh() )
   ENDMENU

   oRb:SetStyles( .F., .T. )

   oGroup = oRb:AddGroup( 185, "First", 1 )
   oBtn = oGroup:AddButton( 3, 3, oGroup:nHeight - 19, 90, "One", { || MsgInfo( "One" ) } )
   oBtn:LoadBitmaps( "..\bitmaps\32x32\cascade.bmp" )
   oBtn = oGroup:AddButton( 3, oBtn:nWidth + 3, oGroup:nHeight - 19, 90, "Two", { || MsgInfo( "Two" ) } )
   oBtn:LoadBitmaps( "..\bitmaps\32x32\tiled.bmp" )

   oGroup = oRb:AddGroup( 185, "Second", 1 )
   oBtn = oGroup:AddButton( 3, 3, oGroup:nHeight - 19, 90, "Three" )
   oBtn:LoadBitmaps( "..\bitmaps\32x32\world.bmp" )
   oBtn = oGroup:AddButton( 3, oBtn:nWidth + 3, oGroup:nHeight - 19, 90, "Four" )
   oBtn:LoadBitmaps( "..\bitmaps\32x32\task.bmp" )

   oGroup = oRb:AddGroup( 75, "Styles", 1 )

   @ 3,5 ADD BUTTON oBtn ;
     PROMPT "Change" BITMAP "..\bitmaps\stylechange32.BMP";
     GROUP oGroup MENU oMenu ;
     SPLITPOPUP SIZE 65,75 TOP

   SetRibbonBarTheme( oRb, RB_THEME_BLUE )   // as default

return oRb

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

function SetRibbonBarTheme( oRb, nTheme )

   local oDlg, oGroup, oBtn

   oRb:nHeight     = 130
   oRb:nHeightFld  =  20
   oRb:hSeparation =   4
   oRb:nLeftMargin =  20
   oRb:nRoundBox   =   0

   do case
      case nTheme == RB_THEME_DARK
        oRb:nClrPaneRB    = CLR_BLACK
        oRb:nClrBoxOut    = CLR_DARKGRAY
        oRb:nClrBoxIn     = CLR_DARKGRAY
        oRb:nClrBoxSelOut = CLR_DARKGRAY
        oRb:nClrBoxSelIn  = CLR_DARKGRAY
        oRb:aGrad         = { { 1, CLR_DARKGRAY, CLR_DARKGRAY } }
        oRb:aGradFld      = { | nOpt | If( nOpt == oRb:nStart, { { 1, CLR_DARKGRAY, CLR_DARKGRAY } },;
                                                            { { 1, CLR_DARKGRAY, CLR_DARKGRAY } } ) }
        oRb:aGradHigh     = { { 1, CLR_BLACK, CLR_BLACK } }
        oRb:aGradOver     = { { 1, RGB( 0, 114, 198 ), RGB( 0, 114, 198 ) } }

        AFill( oRb:aClrTabTxt, { | oSelf, nPrompt | If( nPrompt == oSelf:nOption, CLR_WHITE, CLR_WHITE ) } )

        DeleteObject( oRb:hBmpBrushEx )
        DeleteObject( oRb:hBrushEx )
        oRb:hBmpBrushEx = GradientBmp( oRb, oRb:nRight - oRb:nRightMargin - 3, oRb:nBottom - oRb:nTopMargin + 1, oRb:aGrad )
        oRb:hBrushEx    = CreatePatternBrush( oRb:hBmpBrushEx )

        for each oDlg in oRb:aDialogs
           oDlg:hBack = oRb:hBrushEx

           for each oGroup in oDlg:aControls
              if oGroup:IsKindOf( "TRBGROUP" )
                 oGroup:oFont:End()
                 oGroup:SetFont( oRb:oFont )

                 oGroup:nHeight      = 100
                 oGroup:nClrBoxIn    = CLR_LIGHTGRAY
                 oGroup:aGradCaption = { { 1, CLR_LIGHTGRAY, CLR_LIGHTGRAY } }
                 oGroup:bClrText     = { | lEnable | If( lEnable, CLR_WHITE, CLR_DARKGRAY ) }
                 oGroup:nClrBoxIn    = CLR_LIGHTGRAY
                 oGroup:nClrBoxOut   = CLR_LIGHTGRAY

                 DeleteObject( oGroup:hBrushSel )
                 DeleteObject( oGroup:hBrushUnSel )
                 DeleteObject( oGroup:hBack )
                 oGroup:hBrushUnSel  = oDlg:hBack
                 oGroup:hBack        = nil

                 for each oBtn in oGroup:aControls
                    if oBtn:IsKindOf( "TRBTN" )
                       oBtn:oFont:End()
                       oBtn:SetFont( oRb:oFont )

                       oBtn:nHeight        = 80
                       oBtn:bClrText       = { || CLR_WHITE }
                       oBtn:bClrGradNormal = { | lPressed | If( lPressed, { { 1, CLR_GRAY, CLR_GRAY } },;
                                                                          { { 1, CLR_GRAY, CLR_GRAY } } ) }
                       oBtn:aClrGradUnder = { || { { 1, CLR_LIGHTGRAY, CLR_LIGHTGRAY } } }
                       oBtn:aClrGradBack  = { { 1, CLR_LIGHTGRAY, CLR_LIGHTGRAY } }
                       oBtn:nClrBoxIn     = CLR_LIGHTGRAY
                       oBtn:nClrBoxOut    = CLR_LIGHTGRAY
                       oBtn:Refresh()
                    endif
                 next
                 oGroup:Refresh()
              endif
           next
        next

      case nTheme == RB_THEME_BLUE
         oRb:nClrPaneRB    = CLR_MSBLUE
         oRb:nClrBoxOut    = CLR_MSLIGHTGRAY
         oRb:nClrBoxIn     = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelOut = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelIn  = CLR_MSLIGHTGRAY
         oRb:aGrad         = { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
         oRb:aGradFld      = { | nOpt | If( nOpt == oRb:nStart, { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } },;
                                                                { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } } ) }
         oRb:aGradHigh     = { { 1, CLR_BLACK, CLR_BLACK } }
         oRb:aGradOver     = { { 1, RGB( 0, 114, 198 ), RGB( 0, 114, 198 ) } }

         AFill( oRb:aClrTabTxt, { | oSelf, nPrompt | If( nPrompt == oSelf:nOption, CLR_MSBLUE, CLR_WHITE ) } )

         DeleteObject( oRb:hBmpBrushEx )
         DeleteObject( oRb:hBrushEx )
         oRb:hBmpBrushEx = GradientBmp( oRb, oRb:nRight - oRb:nRightMargin - 3, oRb:nBottom - oRb:nTopMargin + 1, oRb:aGrad )
         oRb:hBrushEx    = CreatePatternBrush( oRb:hBmpBrushEx )

         for each oDlg in oRb:aDialogs

            oDlg:hBack = oRb:hBrushEx
            oDlg:Refresh()

            for each oGroup in oDlg:aControls
               if oGroup:IsKindOf( "TRBGROUP" )
                  oGroup:oFont:End()
                  oGroup:SetFont( oRb:oFont )

                  oGroup:nHeight      = 100
                  oGroup:nClrBoxIn    = CLR_LIGHTGRAY
                  oGroup:aGradCaption = { { 1, CLR_LIGHTGRAY, CLR_LIGHTGRAY } }
                  oGroup:bClrText     = { | lEnable | If( lEnable, CLR_BLACK, CLR_DARKGRAY ) }
                  oGroup:nClrBoxIn    = CLR_MSBLUE // CLR_LIGHTGRAY
                  oGroup:nClrBoxOut   = CLR_MSBLUE // CLR_LIGHTGRAY

                  DeleteObject( oGroup:hBrushSel )
                  DeleteObject( oGroup:hBrushUnSel )
                  DeleteObject( oGroup:hBack )
                  oGroup:hBrushUnSel  = oDlg:hBack
                  oGroup:hBack        = oDlg:hBack

                  for each oBtn in oGroup:aControls
                     if oBtn:IsKindOf( "TRBTN" )
                        oBtn:oFont:End()
                        oBtn:SetFont( oRb:oFont )

                        oBtn:nHeight        = 80
                        oBtn:bClrText       = { || CLR_BLACK }
                        oBtn:bClrGradNormal = { | lPressed | If( lPressed, { { 1, CLR_MSGRAY, CLR_MSGRAY } },;
                                                                           { { 1, CLR_MSGRAY, CLR_MSGRAY } } ) }
                        oBtn:aClrGradUnder = { || { { 1, CLR_MSGRAY, CLR_MSGRAY } } }
                        oBtn:aClrGradBack  = { { 1, CLR_MSGRAY, CLR_MSGRAY } }
                        oBtn:nClrBoxIn     = CLR_MSGRAY
                        oBtn:nClrBoxOut    = CLR_MSGRAY
                        oBtn:Refresh()
                     endif
                  next
                  oGroup:Refresh()
               endif
            next
         next

      case nTheme == RB_THEME_RED
         oRb:nClrPaneRB    = CLR_MSRED
         oRb:nClrBoxOut    = CLR_MSLIGHTGRAY
         oRb:nClrBoxIn     = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelOut = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelIn  = CLR_MSLIGHTGRAY
         oRb:aGrad         = { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
         oRb:aGradFld      = { | nOpt | If( nOpt == oRb:nStart, { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } },;
                                                                { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } } ) }
         oRb:aGradHigh     = { { 1, CLR_BLACK, CLR_BLACK } }
         oRb:aGradOver     = { { 1, RGB( 0, 114, 198 ), RGB( 0, 114, 198 ) } }

         AFill( oRb:aClrTabTxt, { | oSelf, nPrompt | If( nPrompt == oSelf:nOption, CLR_MSRED, CLR_WHITE ) } )

         DeleteObject( oRb:hBmpBrushEx )
         DeleteObject( oRb:hBrushEx )
         oRb:hBmpBrushEx = GradientBmp( oRb, oRb:nRight - oRb:nRightMargin - 3, oRb:nBottom - oRb:nTopMargin + 1, oRb:aGrad )
         oRb:hBrushEx    = CreatePatternBrush( oRb:hBmpBrushEx )

         for each oDlg in oRb:aDialogs

            oDlg:hBack = oRb:hBrushEx
            oDlg:Refresh()

            for each oGroup in oDlg:aControls
               if oGroup:IsKindOf( "TRBGROUP" )
                  oGroup:oFont:End()
                  oGroup:SetFont( oRb:oFont )

                  oGroup:nHeight      = 100
                  oGroup:nClrBoxIn    = CLR_LIGHTGRAY
                  oGroup:aGradCaption = { { 1, CLR_LIGHTGRAY, CLR_LIGHTGRAY } }
                  oGroup:bClrText     = { | lEnable | If( lEnable, CLR_BLACK, CLR_DARKGRAY ) }
                  oGroup:nClrBoxIn    = CLR_MSRED
                  oGroup:nClrBoxOut   = CLR_MSRED

                  DeleteObject( oGroup:hBrushSel )
                  DeleteObject( oGroup:hBrushUnSel )
                  DeleteObject( oGroup:hBack )
                  oGroup:hBrushUnSel  = oDlg:hBack
                  oGroup:hBack        = oDlg:hBack

                  for each oBtn in oGroup:aControls
                     if oBtn:IsKindOf( "TRBTN" )
                        oBtn:oFont:End()
                        oBtn:SetFont( oRb:oFont )

                        oBtn:nHeight        = 80
                        oBtn:bClrText       = { || CLR_BLACK }
                        oBtn:bClrGradNormal = { | lPressed | If( lPressed, { { 1, CLR_MSGRAY, CLR_MSGRAY } },;
                                                                           { { 1, CLR_MSGRAY, CLR_MSGRAY } } ) }
                        oBtn:aClrGradUnder = { || { { 1, CLR_MSGRAY, CLR_MSGRAY } } }
                        oBtn:aClrGradBack  = { { 1, CLR_MSGRAY, CLR_MSGRAY } }
                        oBtn:nClrBoxIn     = CLR_MSGRAY
                        oBtn:nClrBoxOut    = CLR_MSGRAY
                        oBtn:Refresh()
                     endif
                  next
                  oGroup:Refresh()

               endif
            next
         next

      case nTheme == RB_THEME_GREEN
         oRb:nClrPaneRB    = CLR_MSGREEN1
         oRb:nClrBoxOut    = CLR_MSLIGHTGRAY
         oRb:nClrBoxIn     = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelOut = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelIn  = CLR_MSLIGHTGRAY
         oRb:aGrad         = { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
         oRb:aGradFld      = { | nOpt | If( nOpt == oRb:nStart, { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } },;
                                                                { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } } ) }
         oRb:aGradHigh     = { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
         oRb:aGradOver     = { { 1, RGB( 0, 114, 198 ), RGB( 0, 114, 198 ) } }

         AFill( oRb:aClrTabTxt, { | oSelf, nPrompt | If( nPrompt == oSelf:nOption, CLR_MSGREEN2, CLR_WHITE ) } )

         DeleteObject( oRb:hBmpBrushEx )
         DeleteObject( oRb:hBrushEx )
         oRb:hBmpBrushEx = GradientBmp( oRb, oRb:nRight - oRb:nRightMargin - 3, oRb:nBottom - oRb:nTopMargin + 1, oRb:aGrad )
         oRb:hBrushEx    = CreatePatternBrush( oRb:hBmpBrushEx )

         for each oDlg in oRb:aDialogs

            oDlg:hBack = oRb:hBrushEx
            oDlg:Refresh()

            for each oGroup in oDlg:aControls
               if oGroup:IsKindOf( "TRBGROUP" )
                  oGroup:oFont:End()
                  oGroup:SetFont( oRb:oFont )

                  oGroup:nHeight      = 100
                  oGroup:nClrBoxIn    = CLR_MSGREEN2
                  oGroup:aGradCaption = { { 1, CLR_MSGREEN3, CLR_MSGREEN3 } }
                  oGroup:bClrText     = { | lEnable | If( lEnable, CLR_BLACK, CLR_MSLIGHTGRAY ) }
                  oGroup:nClrBoxIn    = CLR_MSGREEN3
                  oGroup:nClrBoxOut   = CLR_MSGREEN3

                  DeleteObject( oGroup:hBrushSel )
                  DeleteObject( oGroup:hBrushUnSel )
                  DeleteObject( oGroup:hBack )
                  oGroup:hBrushUnSel  = oDlg:hBack
                  oGroup:hBack        = oDlg:hBack

                  for each oBtn in oGroup:aControls
                     if oBtn:IsKindOf( "TRBTN" )
                        oBtn:oFont:End()
                        oBtn:SetFont( oRb:oFont )

                        oBtn:nHeight        = 80
                        oBtn:bClrText       = { || CLR_BLACK }
                        oBtn:bClrGradNormal = { | lPressed | If( lPressed, { { 1, CLR_MSGREEN1, CLR_MSGREEN1 } },;
                                                                           { { 1, CLR_MSGREEN2, CLR_MSGREEN2 } } ) }
                        oBtn:aClrGradUnder = { || { { 1, CLR_MSGREEN3, CLR_MSGREEN3 } } }
                        oBtn:aClrGradBack  = { { 1, CLR_MSGREEN1, CLR_MSGREEN1 } }
                        oBtn:nClrBoxIn     = CLR_MSGRAY
                        oBtn:nClrBoxOut    = CLR_MSGRAY
                        oBtn:Refresh()
                     endif
                  next
                  oGroup:Refresh()

               endif
            next
         next

      case nTheme == RB_THEME_ORANGE
         oRb:nClrPaneRB    = CLR_MSORANGE
         oRb:nClrBoxOut    = CLR_MSLIGHTGRAY
         oRb:nClrBoxIn     = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelOut = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelIn  = CLR_MSLIGHTGRAY
         oRb:aGrad         = { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
         oRb:aGradFld      = { | nOpt | If( nOpt == oRb:nStart, { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } },;
                                                                { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } } ) }
         oRb:aGradHigh     = { { 1, CLR_BLACK, CLR_BLACK } }
         oRb:aGradOver     = { { 1, RGB( 0, 114, 198 ), RGB( 0, 114, 198 ) } }

         AFill( oRb:aClrTabTxt, { | oSelf, nPrompt | If( nPrompt == oSelf:nOption, CLR_MSBLUE, CLR_WHITE ) } )

         DeleteObject( oRb:hBmpBrushEx )
         DeleteObject( oRb:hBrushEx )
         oRb:hBmpBrushEx = GradientBmp( oRb, oRb:nRight - oRb:nRightMargin - 3, oRb:nBottom - oRb:nTopMargin + 1, oRb:aGrad )
         oRb:hBrushEx    = CreatePatternBrush( oRb:hBmpBrushEx )

         for each oDlg in oRb:aDialogs

            oDlg:hBack = oRb:hBrushEx
            oDlg:Refresh()

            for each oGroup in oDlg:aControls
               if oGroup:IsKindOf( "TRBGROUP" )
                  oGroup:oFont:End()
                  oGroup:SetFont( oRb:oFont )

                  oGroup:nHeight      = 100
                  oGroup:nClrBoxIn    = CLR_LIGHTGRAY
                  oGroup:aGradCaption = { { 1, CLR_LIGHTGRAY, CLR_LIGHTGRAY } }
                  oGroup:bClrText     = { | lEnable | If( lEnable, CLR_BLACK, CLR_DARKGRAY ) }
                  oGroup:nClrBoxIn    = CLR_MSORANGE // CLR_LIGHTGRAY
                  oGroup:nClrBoxOut   = CLR_MSORANGE // CLR_LIGHTGRAY

                  DeleteObject( oGroup:hBrushSel )
                  DeleteObject( oGroup:hBrushUnSel )
                  DeleteObject( oGroup:hBack )
                  oGroup:hBrushUnSel  = oDlg:hBack
                  oGroup:hBack        = oDlg:hBack

                  for each oBtn in oGroup:aControls
                     if oBtn:IsKindOf( "TRBTN" )
                        oBtn:oFont:End()
                        oBtn:SetFont( oRb:oFont )

                        oBtn:nHeight        = 80
                        oBtn:bClrText       = { || CLR_BLACK }
                        oBtn:bClrGradNormal = { | lPressed | If( lPressed, { { 1, CLR_MSGRAY, CLR_MSGRAY } },;
                                                                           { { 1, CLR_MSGRAY, CLR_MSGRAY } } ) }
                        oBtn:aClrGradUnder = { || { { 1, CLR_MSGRAY, CLR_MSGRAY } } }
                        oBtn:aClrGradBack  = { { 1, CLR_MSGRAY, CLR_MSGRAY } }
                        oBtn:nClrBoxIn     = CLR_MSGRAY
                        oBtn:nClrBoxOut    = CLR_MSGRAY
                        oBtn:Refresh()
                     endif
                  next
                  oGroup:Refresh()

               endif
            next
         next

      case nTheme == RB_THEME_PURPLE
         oRb:nClrPaneRB    = CLR_MSPURPLE
         oRb:nClrBoxOut    = CLR_MSLIGHTGRAY
         oRb:nClrBoxIn     = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelOut = CLR_MSLIGHTGRAY
         oRb:nClrBoxSelIn  = CLR_MSLIGHTGRAY
         oRb:aGrad         = { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } }
         oRb:aGradFld      = { | nOpt | If( nOpt == oRb:nStart, { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } },;
                                                                { { 1, CLR_MSLIGHTGRAY, CLR_MSLIGHTGRAY } } ) }
         oRb:aGradHigh     = { { 1, CLR_BLACK, CLR_BLACK } }
         oRb:aGradOver     = { { 1, RGB( 0, 114, 198 ), RGB( 0, 114, 198 ) } }

         AFill( oRb:aClrTabTxt, { | oSelf, nPrompt | If( nPrompt == oSelf:nOption, CLR_MSBLUE, CLR_WHITE ) } )

         DeleteObject( oRb:hBmpBrushEx )
         DeleteObject( oRb:hBrushEx )
         oRb:hBmpBrushEx = GradientBmp( oRb, oRb:nRight - oRb:nRightMargin - 3, oRb:nBottom - oRb:nTopMargin + 1, oRb:aGrad )
         oRb:hBrushEx    = CreatePatternBrush( oRb:hBmpBrushEx )

         for each oDlg in oRb:aDialogs

            oDlg:hBack = oRb:hBrushEx
            oDlg:Refresh()

            for each oGroup in oDlg:aControls
               if oGroup:IsKindOf( "TRBGROUP" )
                  oGroup:oFont:End()
                  oGroup:SetFont( oRb:oFont )

                  oGroup:nHeight      = 100
                  oGroup:nClrBoxIn    = CLR_LIGHTGRAY
                  oGroup:aGradCaption = { { 1, CLR_LIGHTGRAY, CLR_LIGHTGRAY } }
                  oGroup:bClrText     = { | lEnable | If( lEnable, CLR_BLACK, CLR_DARKGRAY ) }
                  oGroup:nClrBoxIn    = CLR_MSPURPLE
                  oGroup:nClrBoxOut   = CLR_MSPURPLE

                  DeleteObject( oGroup:hBrushSel )
                  DeleteObject( oGroup:hBrushUnSel )
                  DeleteObject( oGroup:hBack )
                  oGroup:hBrushUnSel  = oDlg:hBack
                  oGroup:hBack        = oDlg:hBack

                  for each oBtn in oGroup:aControls
                     if oBtn:IsKindOf( "TRBTN" )
                        oBtn:oFont:End()
                        oBtn:SetFont( oRb:oFont )

                        oBtn:nHeight        = 80
                        oBtn:bClrText       = { || CLR_BLACK }
                        oBtn:bClrGradNormal = { | lPressed | If( lPressed, { { 1, CLR_MSGRAY, CLR_MSGRAY } },;
                                                                           { { 1, CLR_MSGRAY, CLR_MSGRAY } } ) }
                        oBtn:aClrGradUnder = { || { { 1, CLR_MSGRAY, CLR_MSGRAY } } }
                        oBtn:aClrGradBack  = { { 1, CLR_MSGRAY, CLR_MSGRAY } }
                        oBtn:nClrBoxIn     = CLR_MSGRAY
                        oBtn:nClrBoxOut    = CLR_MSGRAY
                        oBtn:Refresh()
                     endif
                  next
                  oGroup:Refresh()
               endif
            next
         next

   endcase

   oRb:Default()

return nil

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


Muchas gracias.
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
MOISES
 
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am

Re: bug FWH EXCESS RELEASE

Postby cnavarro » Mon Apr 13, 2020 2:02 pm

Moises, quita todas las llamadas a
Code: Select all  Expand view

oBtn:oFont:End()

y

oGroup:oFont:End()
 


El metodo SetFont ya lo hace
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
User avatar
cnavarro
 
Posts: 6520
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: bug FWH EXCESS RELEASE

Postby MOISES » Mon Apr 13, 2020 2:58 pm

Ok, solucionado. Desconocía ese cambio.

Muchas gracias.
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
MOISES
 
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests