Los Says que muestran los colores no funcionan (solucionado)

Post Reply
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Los Says que muestran los colores no funcionan (solucionado)

Post by mastintin »

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

Re: Los Says que muestran los colores no funcionan

Post by cnavarro »

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

Image

Code: Select all

   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
http://forums.fivetechsupport.com/viewt ... 16#p163898
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.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Post by mastintin »

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: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Post by mastintin »

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
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Los Says que muestran los colores no funcionan

Post by Antonio Linares »

Manuel,

Prueba a hacer con cada SAY:

oSay:lTransparent := .F.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Post by mastintin »

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

// 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: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Post by mastintin »

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


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


#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: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Los Says que muestran los colores no funcionan

Post by mastintin »

Con esto se resuelve el problema ...

Code: Select all


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
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Los Says que muestran los colores no funcionan

Post by Antonio Linares »

Manuel,

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

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

Re: Los Says que muestran los colores no funcionan

Post by Antonio Linares »

Manuel,

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

Ya he actualizado el respositorio
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply