Page 1 of 1
Color en checkbox no editable
Posted: Tue May 12, 2020 5:16 pm
by José Luis Sánchez
Hola a todos,
en el Puchero
https://github.com/JoseluisSanchez/puchero tengo un formulario de recetas donde _ se calculan de manera automática. _ son GET no editables y los pongo en color haciendo lo siguiente:
Code: Select all
REDEFINE GET aSayEsc[ 9 ] VAR nReAz2 PICTURE "@E 9,999,999.99" ;
ID 27 OF oFld:aDialogs[ 6 ] WHEN .F.
aSayEsc[ 9 ]:lDisColors := .F.
aSayEsc[ 9 ]:nClrTextDis := GetSysColor( 13 )
El resultado es
Ahora quiero hacer lo mismo con unos checkbox que también llevan la clausula WHEN .f para que el usuario no los edite, pero no encuentro la forma. Quiero darles el mismo color por un tema de coherencia del interfaz, pues el gris de control deshabilitado queda un tanto feote.
¿ Alguien sabe como hacer esto ?
Saludos,
José Luis
Re: Color en checkbox no editable
Posted: Wed May 13, 2020 8:29 pm
by Rick Lipkin
Jose
I have had trouble tabbing thru check-boxes and active gets in a mix of controls was confusing to users . I found this simple code which changes the color of the Get when it gets in focus:
Code: Select all
SetGetColorFocus( rgb(209,224,252) ) // turn on color for in focus gets
SetGetColorFocus( CLR_WHITE ) // resets the in-focus back to default ..
may not be exactly what you are looking for ..
Rick Lipkin
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 7:19 am
by JESUS MARIN
Buenos días José Luis.
Prueba, si lo deseas este ejemplo. Por si te puede inspirar algo.
Code: Select all
# INCLUDE "FIVEWIN.CH"
FUNCTION MAIN()
LOCAL oDlg, oFont
LOCAL oCheck, lCheck:=.t.
DEFINE FONT oFont NAME "calibri" SIZE 0,-14
DEFINE DIALOG oDlg FROM 0,0 TO 300,600 PIXEL TITLE "Prueba de color en CheckBox desactivado"
@20,50 CHECKBOX oCheck VAR lCheck PROMPT "Gluten" OF oDlg PIXEL UPDATE FONT oFont SIZE 80,20
@120,10 BUTTON "Desactivar" OF oDlg PIXEL FONT oFont SIZE 50,22 ACTION xDisable(oCheck)
@120,70 BUTTON "Activar" OF oDlg PIXEL FONT oFont SIZE 50,22 ACTION oCheck:Enable()
@120,240 BUTTON "Salir" OF oDlg PIXEL FONT oFont SIZE 50,22 ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER
oFont:End()
RETURN(NIL)
STATIC FUNCTION xDisable(oCheckBox)
LOCAL oWnd := oCheckBox:oWnd
LOCAL oFont := oCheckBox:oFont
LOCAL cCaption := oCheckBox:cCaption
LOCAL nTop := oCheckBox:nTop
LOCAL nLeft := oCheckBox:nLeft
LOCAL nWidth := oCheckBox:nWidth-18 // Los ajustes -18 y -12 dependen del tipo de letra, si es un Dialogo, etc..
LOCAL nHeight := oCheckBox:nHeight-12 // Debería ser calculado para cualquier font. Esto es solo para el ejemplo
oCheckBox:Disable()
@nTop+12,nLeft+18 SAY cCaption OF oWnd SIZE nWidth, nHeight FONT oFont PIXEL
RETURN(NIL)
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 11:12 am
by mgsoft
José Luis,
¿Podrías decirnos como pones el título del diálogo en azul?
Muchas gracias.
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 3:18 pm
by José Luis Sánchez
Rick, thanks but that's not what I'm looking for
Jesús, pues lo de la letra lo veo complicado de calcular, pero me has dado una idea. Tendría que hacerlo con bitmaps, es un trabajazo pero puede quedar bien.
MG, los colores son los de Windows con énfasis en la barra de título, no es cosa de mi programa.
Saludos,
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 3:57 pm
by jgabri
José Luis, pon los checkbox sin texto y a la derecha de cada uno, le pones un say, al say le cambias el color...
Un saludo
Re: Color en checkbox no editable
Posted: Fri May 15, 2020 3:41 pm
by José Luis Sánchez
Al final decidí hacerme mis propios checkbox usando un bitmappara el cuadro y un text para la etiqueta. De esta manera tengo los mismos colores que en los get no editables. Es más frabajo, pero creo que el resultado ha valido la pena:
El código es muy sencillo:
Code: Select all
REDEFINE BITMAP aAler[01] ID 201 OF oFld:aDialogs[ 7 ] ;
RESOURCE IIF(lReEGluten==.t., "16_CHECK_BOX", "16_UNCHECK_BOX") TRANSPARENT UPDATE
REDEFINE SAY aAler[ 16 ] ID 202 OF oFld:aDialogs[ 7 ] COLOR GetSysColor( 13 )
Saludos,