Colores en RADIO no funciona?

Post Reply
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Colores en RADIO no funciona?

Post by karinha »

Buenas...

Colores en RADIO no funciona?

Code: Select all

   REDEFINE RADIO oRadMenu VAR nOpcBuscaClie ID 201, 202, 203, 204, 205,     ;
      206 OF oDlgInd UPDATE

   // oRadMenu:aItems[3]:Disable()  // DESABILITA O RADIO
   oRadMenu:aItems[1]:cTooltip := "Cliente "
   oRadMenu:aItems[2]:cTooltip := "Código  "
   oRadMenu:aItems[3]:cTooltip := "Fantasia"
   oRadMenu:aItems[4]:cTooltip := "C.n.p.j."
   oRadMenu:aItems[5]:cTooltip := "C.p.f.  "
   oRadMenu:aItems[6]:cTooltip := "Endereço"

   // nao funciona - No Funciona - color in radio
   oRadMenu:aItems[1]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[2]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[3]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[4]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[5]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[6]:SetColor( CLR_CYAN, CLR_WHITE )

   oRadMenu:SetFont( oFnt )
 
Saludos.
João Santos - São Paulo - Brasil
User avatar
jvtecheto
Posts: 357
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Colores en RADIO no funciona?

Post by jvtecheto »

Tiene razon Joao

lo he comprobado y en REDEFINE no funciona.
sin embargo funciona si lo creas desde CODIGO .

Es raro que nadie se haya dado cuenta hasta ahora.

Saludos.

Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Colores en RADIO no funciona?

Post by Antonio Linares »

Joao,

Tienes que hacerlo desde la claúsula ON INIT del diálogo:

ACTIVATE DIALOG oDlgInd ON INIT ChangeColors( oRadMenu )

...

function ChangeColors( oRadMenu )

oRadMenu:aItems[1]:SetColor( CLR_CYAN, CLR_WHITE )
oRadMenu:aItems[2]:SetColor( CLR_CYAN, CLR_WHITE )
oRadMenu:aItems[3]:SetColor( CLR_CYAN, CLR_WHITE )
oRadMenu:aItems[4]:SetColor( CLR_CYAN, CLR_WHITE )
oRadMenu:aItems[5]:SetColor( CLR_CYAN, CLR_WHITE )
oRadMenu:aItems[6]:SetColor( CLR_CYAN, CLR_WHITE )

return .T.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores en RADIO no funciona?

Post by karinha »

Amado maestro no funciona. Pídale al súper equipo de FiveTech que vea esto con urgencia. El maestro Navarro necesita trabajar. jajajajajajajajajajajaja.

Muchas gracias y buen trabajo.

Code: Select all

// Radio Buttons management sample - \samples\TESTRAD.PRG y TESTRAD.RC

#include "FiveWin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oDlg, oRadMenu, oBrush, oFont
   local nOption := 2
   local nDTxtColor := 192

   SET _3DLOOK ON

   DEFINE FONT oFont  NAME 'Arial' SIZE 0, -12

   DEFINE DIALOG oDlg RESOURCE "Radios"

   REDEFINE RADIO oRadMenu VAR nOption ID 110, 120, 130, 140, 150 OF oDlg ;
      ON CHANGE MsgBeep()

   AEval( oRadMenu:aItems, { | oRadMenu | oRadMenu:lTransparent := .T., ;
                               oRadMenu:SetFont( oFont ),               ;
                               oRadMenu:nClrText := nDTxtColor } )

   REDEFINE BUTTON ID 100 OF oDlg ACTION oRadMenu:GoNext() ;
      WHEN nOption == 3

   REDEFINE BUTTON ID 102 OF oDlg ACTION oRadMenu:GoPrev()

   ACTIVATE DIALOG oDlg CENTERED         ;
      ON INIT( ChangeColors( oRadMenu ), ;
                             oRadMenu:aItems[ 1 ]:SetText( "Hello" ) )

      // ON INIT oRadMenu:aItems[ 1 ]:SetText( "Hello" )

   SET _3DLOOK OFF

return nil

/*
Joao,

Tienes que hacerlo desde la claúsula ON INIT del diálogo:

ACTIVATE DIALOG oDlgInd ON INIT ChangeColors( oRadMenu )

...
*/

FUNCTION ChangeColors( oRadMenu )

   oRadMenu:aItems[1]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[2]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[3]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[4]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[5]:SetColor( CLR_CYAN, CLR_WHITE )

RETURN( .T. )

/*
regards, saludos

Antonio Linares
www.fivetechsoft.com
*/

//----------------------------------------------------------------------------//

procedure AppSys  // XBase++ requirement

return

//----------------------------------------------------------------------------//
 
Regards, saludos.
João Santos - São Paulo - Brasil
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Colores en RADIO no funciona?

Post by cnavarro »

Joao, pon el .RC que utilizas
Por cierto, tu ejecutable lo estás creando con el MANIFEST en el .RC o sin él?, prueba sin el MANIFEST en el RC
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
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores en RADIO no funciona?

Post by karinha »

cnavarro wrote:Joao, pon el .RC que utilizas
Por cierto, tu ejecutable lo estás creando con el MANIFEST en el .RC o sin él?, prueba sin el MANIFEST en el RC
Maestro:

\samples\TESTRAD.PRG y TESTRAD.RC


Saludos.
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores en RADIO no funciona?

Post by karinha »

Asi, funciona maestro Navarro.

Code: Select all

// Radio Buttons management sample - \SAMPLES\TESTRAD.PRG

#include "FiveWin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oDlg, oRadMenu, oBrush, oFont
   local nOption := 2
   local nDTxtColor := 192

   SET _3DLOOK ON

   DEFINE FONT oFont  NAME 'Arial' SIZE 0, -12

   DEFINE DIALOG oDlg RESOURCE "Radios"

   REDEFINE RADIO oRadMenu VAR nOption ID 110, 120, 130, 140, 150 OF oDlg ;
      ON CHANGE MsgBeep()

   AEval( oRadMenu:aItems, { | oRadMenu | oRadMenu:lTransparent := .T., ;
                               oRadMenu:SetFont( oFont ),               ;
                               oRadMenu:nClrText := nDTxtColor } )

   REDEFINE BUTTON ID 100 OF oDlg ACTION oRadMenu:GoNext() ;
      WHEN nOption == 3

   REDEFINE BUTTON ID 102 OF oDlg ACTION oRadMenu:GoPrev()

   // Asi, funciona maestro Navarro.
   // By: Giovany Vecchi:
   // http://fivewin.com.br/index.php?/topic/28678-colores-no-radio-n%C3%A3o-funciona/
   ACTIVATE DIALOG oDlg CENTERED ON INIT( CTRLS_COLORS( oDlg ),              ;
                                     oRadMenu:aItems[ 1 ]:SetText( "Hello" ) )


      /* // no funciona
      ON INIT( ChangeColors( oRadMenu ), ;
                             oRadMenu:aItems[ 1 ]:SetText( "Hello" ) )
      */

      // ON INIT oRadMenu:aItems[ 1 ]:SetText( "Hello" )

   SET _3DLOOK OFF

return nil
// By: Giovany Vecchy. www.fivewin.com.br
FUNCTION CTRLS_COLORS( f_oDlgContainer )

   LOCAL lc_aCtrls := {}, lc_iFor := 0
   LOCAL lc_aItemsRadio := {}

   lc_aCtrls := f_oDlgContainer:aControls

   FOR lc_iFor := 1 TO Len( lc_aCtrls )

      IF ValType( lc_aCtrls[lc_iFor] ) == "O"

         IF lc_aCtrls[lc_iFor]:ClassName() == "TRADIO"

            aEval( lc_aCtrls[lc_iFor]:oRadMenu:aItems,                 ;
                   {|_oRadId|{ SetWindowTheme( _oRadId:hWnd, "", "" ), ;
                   _oRadId:SetColor( CLR_CYAN, CLR_WHITE ) } } )
                    
         ELSEIF lc_aCtrls[lc_iFor]:ClassName() == "TCHECKBOX"

            // SetWindowTheme( lc_aCtrls[lc_iFor]:hWnd, "", "" )

            // lc_aCtrls[lc_iFor]:SetColor( G_COLOR_SYS( 31 ), G_COLOR_SYS( 1 ) )

         ENDIF

      ENDIF

   NEXT

RETURN NIL

/*
Joao,

Tienes que hacerlo desde la claúsula ON INIT del diálogo:

ACTIVATE DIALOG oDlgInd ON INIT ChangeColors( oRadMenu )

...
*/

FUNCTION ChangeColors( oRadMenu )

   oRadMenu:aItems[1]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[2]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[3]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[4]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[5]:SetColor( CLR_CYAN, CLR_WHITE )

RETURN( .T. )

/*
regards, saludos

Antonio Linares
www.fivetechsoft.com
*/

//----------------------------------------------------------------------------//

procedure AppSys  // XBase++ requirement

return

//----------------------------------------------------------------------------//
 
Gracias,

Regards, Saludos.
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Colores en RADIO no funciona?

Post by karinha »

Asi, funciona maestro Navarro. Ahora, COMPLETO.

Code: Select all

// Radio Buttons management sample - \SAMPLES\TESTRAD.PRG

#include "FiveWin.ch"
#include "Colores.ch"

//----------------------------------------------------------------------------//

function Main()

   local oDlg, oRadMenu, oBrush, oFont
   local nOption := 2
   local nDTxtColor := 192

   SET _3DLOOK ON

   DEFINE FONT oFont  NAME 'Arial' SIZE 0, -12

   DEFINE DIALOG oDlg RESOURCE "Radios"

   REDEFINE RADIO oRadMenu VAR nOption ID 110, 120, 130, 140, 150 OF oDlg ;
      ON CHANGE MsgBeep()

   AEval( oRadMenu:aItems, { | oRadMenu | oRadMenu:lTransparent := .T., ;
                               oRadMenu:SetFont( oFont ),               ;
                               oRadMenu:nClrText := nDTxtColor } )

   REDEFINE BUTTON ID 100 OF oDlg ACTION oRadMenu:GoNext() ;
      WHEN nOption == 3

   REDEFINE BUTTON ID 102 OF oDlg ACTION oRadMenu:GoPrev()

   // Asi, funciona maestro Navarro.
   // By: Giovany Vecchi:
   // http://fivewin.com.br/index.php?/topic/28678-colores-no-radio-n%C3%A3o-funciona/
   ACTIVATE DIALOG oDlg CENTERED ON INIT( CTRLS_COLORS( oDlg ),              ;
                                     oRadMenu:aItems[ 1 ]:SetText( "Hello" ) )


      /* // no funciona
      ON INIT( ChangeColors( oRadMenu ), ;
                             oRadMenu:aItems[ 1 ]:SetText( "Hello" ) )
      */

      // ON INIT oRadMenu:aItems[ 1 ]:SetText( "Hello" )

   SET _3DLOOK OFF

return nil
// By: Giovany Vecchy. www.fivewin.com.br
FUNCTION CTRLS_COLORS( f_oDlgContainer )

   LOCAL lc_aCtrls := {}, lc_iFor := 0
   LOCAL lc_aItemsRadio := {}

   lc_aCtrls := f_oDlgContainer:aControls

   FOR lc_iFor := 1 TO Len( lc_aCtrls )

      IF ValType( lc_aCtrls[lc_iFor] ) == "O"

         IF lc_aCtrls[lc_iFor]:ClassName() == "TRADIO"

            aEval( lc_aCtrls[lc_iFor]:oRadMenu:aItems,                 ;
                   {|_oRadId|{ SetWindowTheme( _oRadId:hWnd, "", "" ), ;
                   _oRadId:SetColor( CLR_CYAN, CLR_WHITE ) } } )
                    
         ELSEIF lc_aCtrls[lc_iFor]:ClassName() == "TCHECKBOX"

            SetWindowTheme( lc_aCtrls[lc_iFor]:hWnd, "", "" )

            lc_aCtrls[lc_iFor]:SetColor( G_COLOR_SYS( 31 ), G_COLOR_SYS( 1 ) )

         ENDIF

      ENDIF

   NEXT

RETURN NIL

/*
Joao,

Tienes que hacerlo desde la claúsula ON INIT del diálogo:

ACTIVATE DIALOG oDlgInd ON INIT ChangeColors( oRadMenu )

...
*/

FUNCTION ChangeColors( oRadMenu )

   oRadMenu:aItems[1]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[2]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[3]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[4]:SetColor( CLR_CYAN, CLR_WHITE )
   oRadMenu:aItems[5]:SetColor( CLR_CYAN, CLR_WHITE )

RETURN( .T. )

/*
regards, saludos

Antonio Linares
www.fivetechsoft.com
*/

//----------------------------------------------------------------------------//

procedure AppSys  // XBase++ requirement

return

//----------------------------------------------------------------------------//

FUNCTION G_COLOR_SYS( f_nTpObj )

   LOCAL cColorRet := nRgb( 0, 0, 0 )
   LOCAL nColorFundo := nRgb( 255, 255, 255 ),        ;
         nColorStaticText := nRgb( 255, 255, 255 ),   ;
         nColorTxtBtnNormal := nRgb( 255, 255, 255 ), ;
         nColorTxtBtnOver := nRgb( 255, 255, 255 ) ,  ;
         nColorTxtBtnDisable := CLR_CYAN
   LOCAL nColorTxtRadioCheckBox := CLR_WHITE
   LOCAL nTheme := 1

   DEFAULT f_nTpObj := 1 // 1-Fundo

   // 2-Static Text
   // 3-Say Text caracter
   // 4-Say Fundo

   IF nTheme == 1 // escuro medio

      nColorFundo := nRgb( 111, 141, 160 ) // ta usando 01

      // nColorFundo := nRgb(45,54,76) // ta usando
      // nColorFundo := CLR_VSTIT

      nColorStaticText    := nRgb( 255, 255, 255 ) // 02
      nColorTxtBtnNormal  := nRgb( 255, 255, 255 )
      nColorTxtBtnOver := CLR_WHITE //nRgb(255,255,255)
      nColorTxtBtnDisable := CLR_HGRAY
      nColorTxtRadioCheckBox := METRO_AZUL6

   ELSEIF nTheme == 2 // windows 10 2019

      nColorFundo := CLR_VSWIN
      nColorStaticText := nRgb( 0, 0, 0 )
      nColorTxtBtnNormal := nRgb( 0, 0, 0 )
      nColorTxtBtnOver := nRgb( 0, 0, 0 )
      nColorTxtBtnDisable := CLR_CYAN
      nColorTxtRadioCheckBox := METRO_AZUL6

   ENDIF

   IF f_nTpObj == 1 // Fundo

      cColorRet := nRgb( 121, 151, 170 ) // ta usando

      // cColorRet := nRgb(53,63,89) // Avast 01
      // cColorRet := nRgb(45,54,76) // Avast 02

      cColorRet := nColorFundo

   ELSEIF f_nTpObj == 2 // Static Text

      cColorRet := nColorStaticText // nRgb(255,255,255)

   ELSEIF f_nTpObj == 3 // Say Text caracter

      cColorRet := nRgb( 0, 0, 0 )

   ELSEIF f_nTpObj == 4 // Say Fundo

      cColorRet := METRO_AZUL14 ///nRgb(0,0,0)

   ELSEIF f_nTpObj == 10 // Buttom Fundo normal

      cColorRet := { { 100,nColorFundo,nColorFundo } } //nRgb(121,151,170) // Este é igual o fundo de tela

      // cColorRet := {{0.3,nRgb(05,05,05),nRgb(71,71,71)},;
      // {0.7,nRgb(61,61,61),nRgb(0,0,0)} }

   ELSEIF f_nTpObj == 11 // Buttom Fundo Over mouse

      cColorRet := { { 100,SetBrightColor( nColorFundo,18 ),;

      SetBrightColor( nColorFundo, 18 ) } } //nRgb(121,151,170) // Este é igual o fundo de tela

   ELSEIF f_nTpObj == 12 // Buttom Fundo disable

      cColorRet := { { 100,nColorFundo,nColorFundo } } //nRgb(121,151,170) // Este é igual o fundo de tela

   ELSEIF f_nTpObj == 13 // Buttom Texto Normal

      cColorRet := nColorTxtBtnNormal

   ELSEIF f_nTpObj == 14 // Buttom Texto OVER

      cColorRet := nColorTxtBtnOver

   ELSEIF f_nTpObj == 15 // Buttom Texto Disable

      cColorRet := nColorTxtBtnDisable

   ELSEIF f_nTpObj == 16 // Buttom Border Normal

      cColorRet := nColorTxtBtnNormal //nRgb(255,255,255)

   ELSEIF f_nTpObj == 17 // Buttom Border over

      cColorRet := nColorTxtBtnOver //nRgb(255,255,255)

   ELSEIF f_nTpObj == 31 // Radio ou CheckBox

      cColorRet := nColorTxtRadioCheckBox

   ENDIF

RETURN cColorRet

FUNCTION SetBrightColor( f_nColorRgb, f_nPercent )

   LOCAL nColorRgbReturn := 0
   LOCAL nRgbRed, nRgbGreen, nRgbBlue

   nRgbRed := nRgbRed( f_nColorRgb )
   nRgbGreen := nRgbGreen( f_nColorRgb )
   nRgbBlue := nRgbBlue( f_nColorRgb )

   IF nRgbRed > 0
      nRgbRed := Int( nRgbRed + ( (nRgbRed/100 ) * f_nPercent ) )
      IF nRgbRed > 255
         nRgbRed := 255
      ENDIF
   ENDIF

   IF nRgbGreen > 0
      nRgbGreen := Int( nRgbGreen + ( (nRgbGreen/100 ) * f_nPercent ) )
      IF nRgbGreen > 255
         nRgbGreen := 255
      ENDIF
   ENDIF

   IF nRgbBlue > 0
      nRgbBlue := Int( nRgbBlue + ( (nRgbBlue/100 ) * f_nPercent ) )
      IF nRgbBlue > 255
         nRgbBlue := 255
      ENDIF
   ENDIF

   nColorRgbReturn := nRgb( nRgbRed, nRgbGreen, nRgbBlue )

RETURN nColorRgbReturn

// Muchas gracias, many thanks, obrigado, Giovany Vecchi. www.fivewin.com.br
 
Regards, saludos.
João Santos - São Paulo - Brasil
Post Reply