bug FWH EXCESS RELEASE [resuelto]

Post Reply
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

bug FWH EXCESS RELEASE [resuelto]

Post by MOISES »

Hola:

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

Code: Select all

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: 824
Joined: Wed Aug 22, 2007 10:09 am

Re: bug FWH EXCESS RELEASE

Post by MOISES »

??
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: bug FWH EXCESS RELEASE

Post by Antonio Linares »

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
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

Re: bug FWH EXCESS RELEASE

Post by MOISES »

Claro, aquí va:

Code: Select all

#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
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: bug FWH EXCESS RELEASE

Post by cnavarro »

Moises, quita todas las llamadas a

Code: Select all

oBtn:oFont:End()

y 

oGroup:oFont:End()
 
El metodo SetFont ya lo hace
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

Re: bug FWH EXCESS RELEASE

Post by MOISES »

Ok, solucionado. Desconocía ese cambio.

Muchas gracias.
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Post Reply