Los Says que muestran los colores no funcionan (solucionado)

Los Says que muestran los colores no funcionan (solucionado)

Postby mastintin » Sun Aug 17, 2014 3: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 .
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Postby cnavarro » Sun Aug 17, 2014 5:50 pm

Manuel, llevo unas horas mirando y tampoco lo consigo
Lo máximo que he podido ver es:

Image

Code: Select all  Expand view  RUN

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

Re: Los Says que muestran los colores no funcionan

Postby mastintin » Sun Aug 17, 2014 9: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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Postby mastintin » Mon Aug 18, 2014 8: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 ...
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Postby Antonio Linares » Mon Aug 18, 2014 12:38 pm

Manuel,

Prueba a hacer con cada SAY:

oSay:lTransparent := .F.
regards, saludos

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

Re: Los Says que muestran los colores no funcionan

Postby mastintin » Mon Aug 18, 2014 1: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: Select all  Expand view  RUN

// 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

 


Image
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Postby mastintin » 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: Select all  Expand view  RUN


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: Select all  Expand view  RUN


#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 ...
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Postby mastintin » Tue Aug 19, 2014 2:19 pm

Con esto se resuelve el problema ...

Code: Select all  Expand view  RUN


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 )
   .....


 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Postby Antonio Linares » Thu Aug 21, 2014 12:32 pm

Manuel,

Actualizado FWH con tus cambios, muchas gracias :-)
regards, saludos

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

Re: Los Says que muestran los colores no funcionan

Postby Antonio Linares » Fri Aug 22, 2014 3: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42111
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to EasyReport, EasyDialog y EasyPreview

Who is online

Users browsing this forum: No registered users and 4 guests