FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Color en checkbox no editable
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Color en checkbox no editable
Posted: Tue May 12, 2020 05:16 PM
Hola a todos,
en el Puchero https://github.com/JoseluisSanchez/puchero tengo un formulario de recetas donde determinados campos se calculan de manera automática. Estos campos son GET no editables y los pongo en color haciendo lo siguiente:

Code (fw): Select all Collapse
   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
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Re: Color en checkbox no editable
Posted: Wed May 13, 2020 08:29 PM
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 (fw): Select all Collapse
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
Posts: 199
Joined: Wed Jan 02, 2019 08:36 AM
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 07:19 AM
Buenos días José Luis.
Prueba, si lo deseas este ejemplo. Por si te puede inspirar algo.

Code (fw): Select all Collapse
# 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)
Jesús Marín
deumare@gmail.com
Posts: 422
Joined: Mon Aug 17, 2009 12:18 PM
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 11:12 AM

José Luis,

¿Podrías decirnos como pones el título del diálogo en azul?

Muchas gracias.

Saludos,



Eduardo
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 03:18 PM

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,

Posts: 29
Joined: Mon Jan 14, 2019 11:43 AM
Re: Color en checkbox no editable
Posted: Thu May 14, 2020 03:57 PM

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

Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Color en checkbox no editable
Posted: Fri May 15, 2020 03:41 PM
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 (fw): Select all Collapse
   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,

Continue the discussion