Page 1 of 1
Los Says que muestran los colores no funcionan (solucionado)
Posted: Sun Aug 17, 2014 3:41 pm
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 .
Re: Los Says que muestran los colores no funcionan
Posted: Sun Aug 17, 2014 5:50 pm
by cnavarro
Manuel, llevo unas horas mirando y tampoco lo consigo
Lo máximo que he podido ver es:
Code: Select all | Expand
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
Re: Los Says que muestran los colores no funcionan
Posted: Sun Aug 17, 2014 9:07 pm
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.
Re: Los Says que muestran los colores no funcionan
Posted: Mon Aug 18, 2014 8:56 am
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 ...
Re: Los Says que muestran los colores no funcionan
Posted: Mon Aug 18, 2014 12:38 pm
by Antonio Linares
Manuel,
Prueba a hacer con cada SAY:
oSay:lTransparent := .F.
Re: Los Says que muestran los colores no funcionan
Posted: Mon Aug 18, 2014 1:10 pm
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 | Expand
// 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
Re: Los Says que muestran los colores no funcionan
Posted: Tue Aug 19, 2014 10:41 am
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 | Expand
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
#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 ...
Re: Los Says que muestran los colores no funcionan
Posted: Tue Aug 19, 2014 2:19 pm
by mastintin
Con esto se resuelve el problema ...
Code: Select all | Expand
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 )
.....
Re: Los Says que muestran los colores no funcionan
Posted: Thu Aug 21, 2014 12:32 pm
by Antonio Linares
Manuel,
Actualizado FWH con tus cambios, muchas gracias
Re: Los Says que muestran los colores no funcionan
Posted: Fri Aug 22, 2014 3:45 am
by Antonio Linares
Manuel,
He conseguido solucionar los colores evitando tenr que usar BtnFlats
Ya he actualizado el respositorio