Cuál es la mejor manera de cambiar el fondo de los dialogos

Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby nanoespinoza » Tue Jul 18, 2017 4:18 pm

Estimados

Estoy intentando en mis aplicaciones cambiar el color del fondo de los dialogos; intente primero usando BRUSH; al principio parecía ir bien, pero como tengo combos que hacen cambiar el estado de algunos controles de los dialogos (de ENABLE a DISABLE), esto hace que el pintado sea fatal, en lugar de desabilitarse se borran por completo y es necesario poner un Refresh() al dialogo que genera un parpadeo molestoso en cada transición. También hay problemas al actualizar el estado de los CHECKBOX en un editor de registros, esto igual genera un error de pintado de los controles; que con el brush por omisión no se presenta.

Y la otro opción que identifico, es usando el Gradient, estoy probando recién. Parece más estético y fácil de implementar, pero tengo un problema con el control URLLINK, que no me muestra el texto del link.

En resumen, me gustaría conocer sus opiniones y experiencias sobre este tema y saber cual consideran la mejor opción para esta implementación. De ser posible algún ejemplo.

Saludos

Fernando Espinoza A.
nanoespinoza
 
Posts: 135
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby karinha » Tue Jul 18, 2017 5:14 pm

Muestra como haces con el URLLINK porfa. Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby nanoespinoza » Tue Jul 18, 2017 5:52 pm

Karinha

Lo hago así, definido desde recursos con PellesC;

Code: Select all  Expand view
    REDEFINE URLLINK ID 111 URL "mailto:nanoespinoza@hotmail.com" OF oDlgAC TOOLTIP "E-mail de Nano Informática" ;
        CLRINIT CLR_BLUE CLROVER CLR_RED CLRVISIT CLR_GREEN
 


Y el gradiente lo aplico en el ON INIT del dialogo

Code: Select all  Expand view
ACTIVATE DIALOG oDlgAC CENTERED ON INIT ;
         (GradientBrush( oDlgAC, { {0.52, nRGB(75,144,223), nRGB(41,85,145) }, { 0.6, nRGB(24,61,118), nRGB(50,95,158) } } ), .F. )
 

Saludos
nanoespinoza
 
Posts: 135
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby karinha » Tue Jul 18, 2017 5:54 pm

Que tal?

Image

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby cnavarro » Tue Jul 18, 2017 6:06 pm

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby karinha » Tue Jul 18, 2017 6:56 pm

cnavarro wrote:También puedes mirar este hilo

viewtopic.php?f=3&t=33363&p=197298&hilit=SetDlgGradient#p197337


master el problema con Gradient, és que URLLINK, no aparece en el diálogo:

Image

Saludos
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby karinha » Tue Jul 18, 2017 6:58 pm

Code: Select all  Expand view

#include "FiveWin.ch"
#include "URLLink.ch"

#define COLOR_BTNFACE  15

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

function Main()

   local nColor := GetSysColor( COLOR_BTNFACE )
   local oDlg, oFont, oFnt1, oFnt2, oBmp

   DEFINE FONT oFont NAME GetSysFont() SIZE 0, -12
   DEFINE FONT oFnt1 NAME "ARIAL" SIZE 0, -20 BOLD
   DEFINE FONT oFnt2 NAME "ARIAL" SIZE 0, -14 BOLD

   DEFINE DIALOG oDlg RESOURCE "Main" FONT oFont ;
          GRADIENT( GradDlgs( "GreenBlue" ) )

          /* ;
          COLORS CLR_BLACK, CLR_YELLOW */


   REDEFINE BITMAP oBmp ID 301 OF oDlg RESOURCE "Fivewin"

   oBmp:cToolTip := "Logotipo de Fivewin"

   REDEFINE SAY ID 101 PROMPT "FW/FWH/FW++/FWC3" FONT oFnt1 ;
            COLOR CLR_BLACK, nColor OF oDlg

   REDEFINE SAY ID 102 PROMPT "Fivetech © 1993-2017" FONT oFnt2 ;
            COLOR CLR_MAGENTA, nColor OF oDlg

   REDEFINE SAY ID 103 ;
            PROMPT "La mejor librería para crear con CA-Clipper " + ;
                   "auténticas aplicaciones Windows. Es muy fácil " + ;
                   "de usar y los resultados son excelentes. " + ;
                   "Visite la página oficial de Fivewin:" ;
            FONT oFont OF oDlg

   REDEFINE URLLINK ID 104 URL "www.fivetechsoft.com" OF oDlg ;
            TOOLTIP "Sitio oficial de FiveTech"

   REDEFINE SAY ID 105 ;
            PROMPT "Fivewin para Harbour le ofrece el poder de " + ;
                   "los 32 bits. Además, ya está disponible FW " + ;
                   "para el nuevo compilador C3. " + ;
                   "Contacte con nosotros enviando un e-mail a:" ;
            FONT oFont OF oDlg

   REDEFINE URLLINK ID 106 URL "mailto:alinares@fivetechsoft.com" OF oDlg ;
            TOOLTIP "E-mail de FiveTech"

   REDEFINE BUTTON ID 201 ACTION ( oDlg:End() )

   oDlg:lHelpIcon := .f.

   ACTIVATE DIALOG oDlg CENTER ;
            VALID ( oFont:End(), oFnt1:End(), oFnt2:End(), .t. )

return nil

//----------------------------------------------------------------------------//
// Using:

// GradDlgs( "BlueGreen" )

//----------------------------------------------------------------------------//
// Gradient for Dialogs: Thanks to Rick Lipkin
//----------------------------------------------------------------------------//

Function GradDlgs( cTheme )

   local aGrad    := {}
   DEFAULT cTheme := ""

   if Valtype( cTheme ) == "C"
      cTheme  := Upper( cTheme )
      Do Case
         Case cTheme = Upper( "SolidWhite" )
            aGrad := { { 0.50, nRGB( 255, 255, 255 ), nRGB( 255, 255, 255 ) } }
         Case cTheme = Upper( "BlueGreen" )
            aGrad := { { 1.00, 14671839, 7419904 }, { 1.00, 7419904, 14671839 } }
         Case cTheme = Upper( "SolidGreenBlue" )
            aGrad := { { 0.01, 9994298, 9994298 },{ 0.01, 9994298, 9994298 } }
         Case cTheme = Upper( "SolidDarkBlue" )
            aGrad := { { 0.50,4720905,4720905 },{ 0.50,4720905,4720905 } }
         Case cTheme = Upper( "SolidBlue" )
            aGrad := { { 0.01, 16711680, 16711680 },{ 0.01, 16711680, 16711680 } }
         Case cTheme = Upper( "DarkBlue" )
            aGrad := { { 0.0, 8388608, 13619151 },{ 0.0, 13619151, 8388608 } }
         Case cTheme = Upper( "LightGreen" )
            aGrad := { { .50, nRGB(210,235,216), nRGB( 255, 255, 255 ) } }
         Case cTheme = Upper( "LightBlue" )
            aGrad := { { .50, nRGB( 201, 217, 237 ), nRGB( 231, 242, 255 ) } }
         Case cTheme = Upper( "LightGrey" )
            aGrad := { { .50, nRGB( 216, 216, 216 ), nRGB( 255, 255, 255 ) } }
         Case cTheme = Upper( "Standard" )
            aGrad := { { .50, nRGB( 236, 233, 216 ), nRGB( 255, 255, 255 ) } }
         Case cTheme = Upper( "DarkGrey" )
            aGrad := { { 0.87, 16777215, 11513775 },{ 0.87,11513775, 16777215 } }
         Case cTheme = Upper( "SolidGrey" )
            aGrad := { { .50, nRGB( 233, 233, 233 ), nRGB( 233, 233, 233 ) } }
         Case cTheme = Upper( "SolidChoral" )
            aGrad := { { 0.01,8388736,8388736 },{ 0.01,8388736,8388736 } }
         Case cTheme = Upper( "LightYellow" )
            aGrad := { { 0.01,8440801,16777215 },{ 0.75,16777215,8440801 } }
         Case cTheme = Upper( "GreenBlue" )
            aGrad := { { .50, nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) } }
         //Case cTheme = ""
      EndCase
   else
      if Valtype( cTheme ) == "A"
         aGrad   := cTheme
      endif
   endif
   if !Empty( aGrad )
      SetDlgGradient( aGrad )
   endif
Return nil
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby karinha » Tue Jul 18, 2017 7:03 pm

Asi, funciona:

Code: Select all  Expand view

   DEFINE DIALOG oDlg RESOURCE "Main" FONT oFont ;
          COLORS( nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) )  // "GreenBlue"
 


Saludos
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby nanoespinoza » Wed Jul 19, 2017 12:59 am

Karinha

He copiado la función GradGlgs(), pero me resulta igual; con cual de los gradientes te funciona?

Saludos

Fernando Espinoza A.
nanoespinoza
 
Posts: 135
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby nanoespinoza » Wed Jul 19, 2017 2:11 am

karinha wrote:
cnavarro wrote:También puedes mirar este hilo

viewtopic.php?f=3&t=33363&p=197298&hilit=SetDlgGradient#p197337


master el problema con Gradient, és que URLLINK, no aparece en el diálogo:

Image

Saludos


Esto es exactamente lo que me sucede; los links no aparecen; el código que uso este momento el siguiente:

Code: Select all  Expand view

STATIC FUNCTION Acerca()
LOCAL oSay[4], oBtmp[4], oDlgAC, oBut, oFnt, oFnt1, oFnt2, oFnt3, cTipoLic
IF(cUsuario="Administrador", IF(lTipoUsr, cTipoLic:="Profesional", cTipoLic:="Profesional (modo consulta)"), cTipoLic:="Consulta")
DEFINE FONT oFnt NAME GetSysFont() SIZE 0,-11
DEFINE FONT oFnt1 NAME "Times New Roman" SIZE 9,12 BOLD
DEFINE FONT oFnt2 NAME "Times New Roman" SIZE 24,54 WEIGHT 120 BOLD
DEFINE FONT oFnt3 NAME "Times New Roman" SIZE 0,-14 BOLD
DEFINE DIALOG oDlgAC OF oVent RESOURCE "ACERCA" TITLE "Acerca de SicefWin" FONT oFnt TRANSPARENT ;
   COLOR nRGB( 192, 192, 192 ),nRGB( 45, 121, 147 )   //GRADIENT GradDlgs("SolidWhite") //COLORS ( nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) )
    REDEFINE IMAGE oBtmp[1] ID 100 OF oDlgAC FILE ".\bitmaps\LogoSicefWin.png" ADJUST
    REDEFINE SAY oSay[1] ID 101 OF oDlgAC RAISED SHADOW FONT oFnt2 ;
        COLOR RGB(255,0,0),RGB(nRGBRed(oDlgAC:nClrPane),nRGBGreen(oDlgAC:nClrPane),nRGBBlue(oDlgAC:nClrPane))
    REDEFINE SAY oSay[2] PROMPT "Versión "+cVersSW ID 102 OF oDlgAC FONT oFnt3
    REDEFINE SAY oSay[3] PROMPT "Versión "+cTipoLic ID 105 OF oDlgAC COLOR RGB(0,0,255)
    REDEFINE SAY oSay[4] PROMPT "Software licenciado a:"+CRLF+cEmpresa ID 106 OF oDlgAC COLOR RGB(0,0,255)

    REDEFINE ICON oBtmp[2] ID 121 OF oDlgAC RESOURCE "CORREO" TRANSPARENT
    REDEFINE URLLINK ID 111 URL "mailto:nanoespinoza@hotmail.com" OF oDlgAC TOOLTIP "E-mail de Nano Informática" ;
        CLRINIT CLR_BLUE CLROVER CLR_RED CLRVISIT CLR_GREEN TRANSPARENT
    REDEFINE ICON oBtmp[3] ID 122 OF oDlgAC RESOURCE "WordPress" TRANSPARENT
    REDEFINE URLLINK ID 112 URL "mifutbolecuador.wordpress.com" OF oDlgAC TOOLTIP "Mi blog del Fútbol Ecuatoriano" ;
        CLRINIT CLR_BLUE CLROVER CLR_RED CLRVISIT CLR_GREEN

    //REDEFINE IMAGE oBtmp[4] ID 123 OF oDlgAC FILE ".\Bitmaps\Mundiales.jpg" ADJUST TRANSPARENT
    REDEFINE XIMAGE oBtmp[4] ID 123 OF oDlgAC FILE ".\Bitmaps\Mundiales.png"
    REDEFINE FLATBTN oBut ID 1 OF oDlgAC ACTION oDlgAC:End() COLOR CLR_WHITE,CLR_GREEN
        oBut:cToolTip="Cierra ventana"
        oBut:SetFont(oFnt1)   // Agregado en Mar-2015
    oDlgAC:bKeyDown = { | nKey, nFlags | If( nKey != NIL, oDlgAC:End(), ) }   // Quiero q con cualquier tecla salga
    oDlgAC:lHelpIcon:= .F.
ACTIVATE DIALOG oDlgAC CENTERED RESIZE16 ON INIT (oDlgAC:SetIcon(oApp:cIcono), Centra(oDlgAC), .F. )
oFnt:End()
oFnt1:End()
oFnt2:End()
oFnt3:End()
RETU .T.
*FDF Acerca
 


Dentro de PellesC uso los controles Text para definir el control URLLINK; está correcto o debe usar un "CUSTOM CONTROL".

Saludos
nanoespinoza
 
Posts: 135
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby cnavarro » Wed Jul 19, 2017 4:42 pm

Si defines el gradient en el brush del dialogo, parece que si funciona
Ejemplo enviado por Mr Rao

Code: Select all  Expand view


function Main()

   local nColor := GetSysColor( COLOR_BTNFACE )
   local oDlg, oFont, oFnt1, oFnt2, oBmp, oBrush
   local oUrl1

   DEFINE FONT oFont NAME GetSysFont() SIZE 0, -12
   DEFINE FONT oFnt1 NAME "ARIAL" SIZE 0, -20 BOLD
   DEFINE FONT oFnt2 NAME "ARIAL" SIZE 0, -14 BOLD
   
   DEFINE BRUSH oBrush GRADIENT { { 1, nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) } } //{{1,CLR_YELLOW,CLR_GRAY}}

   DEFINE DIALOG oDlg RESOURCE "Main" FONT oFont BRUSH oBrush

   REDEFINE BITMAP oBmp ID 301 OF oDlg RESOURCE "Fivewin"

   oBmp:cToolTip := "Logotipo de Fivewin"

   REDEFINE SAY ID 101 PROMPT "FW/FWH/FW++/FWC3" FONT oFnt1 ;
            COLOR CLR_BLACK, nColor OF oDlg

   REDEFINE SAY ID 102 PROMPT "Fivetech © 1993-2004" FONT oFnt2 ;
            COLOR CLR_MAGENTA, nColor OF oDlg

   REDEFINE SAY ID 103 ;
            PROMPT "La mejor librería para crear con CA-Clipper " + ;
                   "auténticas aplicaciones Windows. Es muy fácil " + ;
                   "de usar y los resultados son excelentes. " + ;
                   "Visite la página oficial de Fivewin:" ;
            FONT oFont OF oDlg COLOR CLR_BLACK, nColor

   REDEFINE URLLINK oUrl1 ID 104 URL "www.fivetechsoft.com" OF oDlg ;
            TOOLTIP "Sitio oficial de FiveTech" CLRINIT CLR_BLUE
   oUrl1:lTransparent   := .T.

   REDEFINE SAY ID 105 ;
            PROMPT "Fivewin para Harbour le ofrece el poder de " + ;
                   "los 32 bits. Además, ya está disponible FW " + ;
                   "para el nuevo compilador C3. " + ;
                   "Contacte con nosotros enviando un e-mail a:" ;
            FONT oFont OF oDlg COLOR CLR_BLACK, nColor

   REDEFINE URLLINK ID 106 URL "mailto:alinares@fivetechsoft.com" OF oDlg ;
            TOOLTIP "E-mail de FiveTech"

   REDEFINE BUTTON ID 201 ACTION ( oDlg:End() )

   oDlg:lHelpIcon := .f.
   
   ACTIVATE DIALOG oDlg CENTER ;
            VALID ( oFont:End(), oFnt1:End(), oFnt2:End(), .t. )

return nil

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


 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby karinha » Wed Jul 19, 2017 5:17 pm

Very good Master!!

Image

Regardas, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby cnavarro » Wed Jul 19, 2017 5:28 pm

Joao, seguiremos intentando entre todos que no se quede ningún tema sin solución
Saludos
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby karinha » Wed Jul 19, 2017 5:37 pm

Bueno se URLLINK pueda recibir el COLOR como un SAY ó GET.

Code: Select all  Expand view

   REDEFINE URLLINK ID 106 URL "mailto:alinares@fivetechsoft.com" OF oDlg ;
            TOOLTIP "E-mail de FiveTech" COLORS CLR_YELLOW, CLR_BLACK TRANSPARENT
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cuál es la mejor manera de cambiar el fondo de los dialogos

Postby nanoespinoza » Thu Jul 20, 2017 2:45 am

cnavarro wrote:Si defines el gradient en el brush del dialogo, parece que si funciona
Ejemplo enviado por Mr Rao

Code: Select all  Expand view


function Main()

   local nColor := GetSysColor( COLOR_BTNFACE )
   local oDlg, oFont, oFnt1, oFnt2, oBmp, oBrush
   local oUrl1

   DEFINE FONT oFont NAME GetSysFont() SIZE 0, -12
   DEFINE FONT oFnt1 NAME "ARIAL" SIZE 0, -20 BOLD
   DEFINE FONT oFnt2 NAME "ARIAL" SIZE 0, -14 BOLD
   
   DEFINE BRUSH oBrush GRADIENT { { 1, nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) } } //{{1,CLR_YELLOW,CLR_GRAY}}

   DEFINE DIALOG oDlg RESOURCE "Main" FONT oFont BRUSH oBrush

   REDEFINE BITMAP oBmp ID 301 OF oDlg RESOURCE "Fivewin"

   oBmp:cToolTip := "Logotipo de Fivewin"

   REDEFINE SAY ID 101 PROMPT "FW/FWH/FW++/FWC3" FONT oFnt1 ;
            COLOR CLR_BLACK, nColor OF oDlg

   REDEFINE SAY ID 102 PROMPT "Fivetech © 1993-2004" FONT oFnt2 ;
            COLOR CLR_MAGENTA, nColor OF oDlg

   REDEFINE SAY ID 103 ;
            PROMPT "La mejor librería para crear con CA-Clipper " + ;
                   "auténticas aplicaciones Windows. Es muy fácil " + ;
                   "de usar y los resultados son excelentes. " + ;
                   "Visite la página oficial de Fivewin:" ;
            FONT oFont OF oDlg COLOR CLR_BLACK, nColor

   REDEFINE URLLINK oUrl1 ID 104 URL "www.fivetechsoft.com" OF oDlg ;
            TOOLTIP "Sitio oficial de FiveTech" CLRINIT CLR_BLUE
   oUrl1:lTransparent   := .T.

   REDEFINE SAY ID 105 ;
            PROMPT "Fivewin para Harbour le ofrece el poder de " + ;
                   "los 32 bits. Además, ya está disponible FW " + ;
                   "para el nuevo compilador C3. " + ;
                   "Contacte con nosotros enviando un e-mail a:" ;
            FONT oFont OF oDlg COLOR CLR_BLACK, nColor

   REDEFINE URLLINK ID 106 URL "mailto:alinares@fivetechsoft.com" OF oDlg ;
            TOOLTIP "E-mail de FiveTech"

   REDEFINE BUTTON ID 201 ACTION ( oDlg:End() )

   oDlg:lHelpIcon := .f.
   
   ACTIVATE DIALOG oDlg CENTER ;
            VALID ( oFont:End(), oFnt1:End(), oFnt2:End(), .t. )

return nil

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


 


Efectivamente funciona, se logra ver los links; pero toca sacrificar la TRANSPARENCIA de los demás controles :(.

En esa circunstancia, al momento me decidí a volver al color estándar para diálogos donde tenga la clase URLLINK y tambipen donde estén CHECKBOX.

Saludos

Fernando Espinoza A.
nanoespinoza
 
Posts: 135
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 11 guests