Color en checkbox no editable

Color en checkbox no editable

Postby José Luis Sánchez » Tue May 12, 2020 5: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: Select all  Expand view  RUN

   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

Image

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.

Image

¿ Alguien sabe como hacer esto ?

Saludos,
José Luis
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: Color en checkbox no editable

Postby Rick Lipkin » Wed May 13, 2020 8: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: Select all  Expand view  RUN

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
User avatar
Rick Lipkin
 
Posts: 2666
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Color en checkbox no editable

Postby JESUS MARIN » Thu May 14, 2020 7:19 am

Buenos días José Luis.
Prueba, si lo deseas este ejemplo. Por si te puede inspirar algo.

Code: Select all  Expand view  RUN

# 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
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: Color en checkbox no editable

Postby mgsoft » 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
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: Color en checkbox no editable

Postby José Luis Sánchez » Thu May 14, 2020 3: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,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: Color en checkbox no editable

Postby jgabri » Thu May 14, 2020 3: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
jgabri
 
Posts: 19
Joined: Mon Jan 14, 2019 11:43 am

Re: Color en checkbox no editable

Postby José Luis Sánchez » Fri May 15, 2020 3: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:

Image

El código es muy sencillo:

Code: Select all  Expand view  RUN

   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,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 45 guests