FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index EasyReport, EasyDialog y EasyPreview Los Says que muestran los colores no funcionan (solucionado)
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Los Says que muestran los colores no funcionan (solucionado)
Posted: Sun Aug 17, 2014 03:41 PM

Los says que muestran visualmente los colores que usamos en el reporte no funcionan . Boton Fonts -> folder colors ...

Se quedan transparentes y no asignan el color de fondo . He revisado el código y parece que está bien pero no va y no lo localizo . ¿ Puede ser un tema del color de fondo del dialogo ? . No pillo el gazapo y seguro que es tonto .

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Los Says que muestran los colores no funcionan
Posted: Sun Aug 17, 2014 05:50 PM
Manuel, llevo unas horas mirando y tampoco lo consigo
Lo máximo que he podido ver es:



Code (fw): Select all Collapse
   For x = 1 to Len( aColorSay )
       nDefClr := Val( aColors[ x ] )
       REDEFINE SAY aColorSay[ x ] ID 401+(x-1) OF oFld:aDialogs[i] COLORS nDefClr , nDefClr
   Next x


Lo que pretendía es algo parecido a lo que tiene el compañero, en el que todo el Say aparezca relleno con el color correspondiente
viewtopic.php?f=3&t=29016#p163898
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: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Los Says que muestran los colores no funcionan
Posted: Sun Aug 17, 2014 09:07 PM

Se resuelve comentando la linea :

// SetDlgGradient( { { 1, RGB( 199, 216, 237 ), RGB( 237, 242, 248 ) } } )

en la function main() al principio del programa.

Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Los Says que muestran los colores no funcionan
Posted: Mon Aug 18, 2014 08:56 AM

Es un problema con los say cuando se usa manifest o degradados , que no coge los colores de fondo que se asignan ya que el fondo se vuelve transparente .
Seria deseable que en el codigo fivewin pudieramos asignar algo como osay:lOldColors := .t. y esto hiciera que el comportamiento de los say fuera como antiguamente ...

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Los Says que muestran los colores no funcionan
Posted: Mon Aug 18, 2014 12:38 PM

Manuel,

Prueba a hacer con cada SAY:

oSay:lTransparent := .F.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Los Says que muestran los colores no funcionan
Posted: Mon Aug 18, 2014 01:10 PM
Antonio Linares wrote:Manuel,

Prueba a hacer con cada SAY:

oSay:lTransparent := .F.


No funciona , lo he revisado y este comportamiento pasa cuando el say esta colocado dentro de un Folder . Si lo colocamos directamente sobre el dialogo funciona correcto .

Code (fw): Select all Collapse
// esto debe compilarse incluyendo  el manifest ...

function Main()

   local oDlg, i
   local aSay[42]
   local aColors := { "COLOR_SCROLLBAR"      ,;
                      "COLOR_BACKGROUND"     ,;
                      "COLOR_ACTIVECAPTION"  ,;
                      "COLOR_INACTIVECAPTION",;
                      "COLOR_MENU"           ,;
                      "COLOR_WINDOW"         ,;
                      "COLOR_WINDOWFRAME"    ,;
                      "COLOR_MENUTEXT"       ,;
                      "COLOR_WINDOWTEXT"     ,;
                      "COLOR_CAPTIONTEXT"    ,;
                      "COLOR_ACTIVEBORDER"   ,;
                      "COLOR_INACTIVEBORDER" ,;
                      "COLOR_APPWORKSPACE"   ,;
                      "COLOR_HIGHLIGHT"      ,;
                      "COLOR_HIGHLIGHTTEXT"  ,;
                      "COLOR_BTNFACE"        ,;
                      "COLOR_BTNSHADOW"      ,;
                      "COLOR_GRAYTEXT"       ,;
                      "COLOR_BTNTEXT"        ,;
                      "COLOR_INACTIVECAPTIONTEXT",;
                      "COLOR_BTNHIGHLIGHT"   }

   DEFINE DIALOG oDlg FROM 1, 1 TO 46, 130   ;
      TITLE "Colores de Windows"

   @ 10,10 FOLDER oFld PROMPT "1-99", "100-199" OF oDlg  PIXEL SIZE 200,175


   FOR i := 1 TO 21
      @ i, 02 SAY aSay[(2*i)-1] PROMPT STR(i-1,2)+ " "+ aColors[i] OF oFld:aDialogs[ 1 ]
      @ i, 18 SAY aSay[2*i] PROMPT "       " SIZE 30, 8  ;
         COLOR GetSysColor(i-1), GetSysColor(i-1) OF oFld:aDialogs[ 1 ]
         aSay[2*i] :=lTransparent:= .f.
   NEXT
   FOR i := 1 TO 21
      @ i, 44 SAY aSay[(2*i)-1] PROMPT STR(i-1+21,2)+ " "+ aColors[i] OF oDlg
      @ i, 60 SAY aSay[2*i] PROMPT "       " SIZE 30, 8  ;
         COLOR GetSysColor(i-1+21), GetSysColor(i-1+21) OF oDlg

   NEXT

   ACTIVATE DIALOG oDlg

return nil


Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Los Says que muestran los colores no funcionan
Posted: Tue Aug 19, 2014 10:41 AM
Despues de muchos intentos una mejor solucion es usar btnFlat en vez say . Para ello he implementado el methodo redefine en la clase btnflat :

Code (fw): Select all Collapse
METHOD ReDefine( nId, bAction, oWnd,  oFont, ;
                 lUpdate, bWhen, bValid, cPrompt, lBorder,;
                 nClrText, nClrPane, lCancel, lDefault ) CLASS TBtnFlat

 DEFAULT lBorder := .F., ;
         nClrText := CLR_WHITE, nClrPane := CLR_BLUE, ;
         lCancel := .F. , lDefault := .F.

 DEFAULT oWnd := GetWndDefault()

   ::nStyle    = nOR( WS_CHILD, WS_VISIBLE, WS_TABSTOP, If( lDefault, BS_DEFPUSHBUTTON, 0 ) )
   ::nId       = nId
   ::bAction   = bAction
   
   if oFont == nil
      ::GetFont()
   else
      ::SetFont( oFont )
   endif
   
   ::oWnd      = oWnd
   ::lUpdate   = lUpdate
   ::bWhen     = bWhen
   ::bValid    = bValid
   ::cCaption  = cPrompt
   ::lCancel   = lCancel
   ::nClrText  = nClrText
   ::nClrPane  = nClrPane
   ::lBorder   = lBorder
   ::lDefault  = lDefault
   ::lPressed  = .F.
   ::lBtnDown  = .F.
   ::lBtnUp    = .F.
   ::lWorking  = .F.
   ::lTransparent = .F.

   ::nDlgCode  = DLGC_WANTALLKEYS

   ::Register( nOR( CS_VREDRAW, CS_HREDRAW ) )

   oWnd:DefControl( Self )

return Self


y su include correspondiente :

Code (fw): Select all Collapse
#xcommand REDEFINE FLATBTN [<oBtn>] ;
             [ ID <nId> ] ;
             [ ACTION <uAction,...> ] ;
             [ <of:OF, WINDOW, DIALOG> <oWnd> ] ;
             [ VALID <uValid> ] ;
             [ WHEN <uWhen> ] ;
             [ <lUpdate: UPDATE> ] ;
             [ PROMPT <cPrompt> ] ;
             [ COLOR <nClrText>, <nClrPane> ] ;
             [ FONT <oFont> ] ;
             [ <lNoBorder: NOBORDER> ] ;
             [ <lCancel: CANCEL> ] ;
             [ <lDefault: DEFAULT> ] ;
          => ;
         [ <oBtn> := ] TBtnFlat():Redefine( <nId>,;
           [{|Self|<uAction>}],  <oWnd>, <oFont>,  <.lUpdate.>,<{uWhen}>, <{uValid}>,;
            <cPrompt>, !<.lNoBorder.>, <nClrText>, <nClrPane>, <.lCancel.>,  <.lDefault.> )

He hecho un pequeño test y funciona bien con los recursos button ...
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Los Says que muestran los colores no funcionan
Posted: Tue Aug 19, 2014 02:19 PM
Con esto se resuelve el problema ...

Code (fw): Select all Collapse
function GeneralSettings()

   ......

   FOR n=1 TO 30
        REDEFINE FLATBTN aColorSay[n ] PROMPT "" ID (400+n) OF oFld:aDialogs[i] COLOR SetColor( aColors[n ], nDefClr ), SetColor( aColors[n ], nDefClr ) ;
   ACTION .t.

   next

//   REDEFINE SAY aColorSay[1 ] PROMPT "" ID 401 OF oFld:aDialogs[i] COLORS SetColor( aColors[1 ], nDefClr ), SetColor( aColors[1 ], nDefClr )
//   REDEFINE SAY aColorSay[2 ] PROMPT "" ID 402 OF oFld:aDialogs[i] COLORS SetColor( aColors[2 ], nDefClr ), SetColor( aColors[2 ], nDefClr )
   .....
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Los Says que muestran los colores no funcionan
Posted: Thu Aug 21, 2014 12:32 PM

Manuel,

Actualizado FWH con tus cambios, muchas gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Los Says que muestran los colores no funcionan
Posted: Fri Aug 22, 2014 03:45 AM

Manuel,

He conseguido solucionar los colores evitando tenr que usar BtnFlats :-)

Ya he actualizado el respositorio

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion