Page 1 of 1

tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Sun Feb 05, 2017 1:24 pm
by JoseAlvarez
Saludos a todos amigos foristas.

Un cliente me esta pidiendo la posibilidad de poder cambiar el tipo de fuente y su tamaño asi como el color de fondo en los dialogos a su gusto desde una opcion de configuracion dentro del mismo software que estamos negociando su desarrollo. Se que dentro del .rc puedo hacerlo, pero la cuestion es que el cliente quiere que dentro del menu pueda hacerlo el cuando quiera y las veces que quiera. Otra cosa importante es que el tamaño de los dialogos no debe verse afectado.

Alguna idea de por donde comenzar?

Gracias de antemano por la ayuda-

Un abrazo a todos.

Re: tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Sun Feb 05, 2017 10:35 pm
by cnavarro

Re: tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Tue Feb 07, 2017 1:29 pm
by karinha
Las colores del dialog(boton: Cores), puede ser asi?

Image

Saludos.

Re: tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Tue Feb 07, 2017 1:30 pm
by karinha
Direct link:

http://i.imgur.com/fnG7AFX.png

saludos.

Re: tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Wed Feb 08, 2017 7:08 pm
by JoseAlvarez
Hola !
Gracias cNavarro. Estoy siguien el hilo que me diste y hay bastante de donde sacar. Muchisímas Gracias!

Karinha, gracias por atender mi solicitud. Esa imagen que muestras es justo lo que me gustaria hacer. que el usuario pueda seleccionar sus colores asi.

lo mismo me piden con los tipos de letra.

Agradecería cualquier idea de tu parte.

Mil Gracias a ambos por su atención. :)

Re: tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Thu Feb 09, 2017 11:59 am
by karinha
Haga asi:

En el MENU PRINCIPAL inicie el archivo: FUNDO.INI cambie para FONDO.INI.

Code: Select all  Expand view

   // cPathPleno := CURDRIVE() + ":\" + GETCURDIR()
   cPathPleno := "\" + GETCURDIR()

   // Para Carregar a Ultima Tela Salva no Arquivo .INI chamar FundoWnd()
   IF FILE( "
FUNDO.INI" )
      FUNDOWND() // llama el fondo.
   ELSE  // crea FUNDO.INI o FONDO.INI
      NOME_ARQ := FCREATE("
FUNDO.INI")

      NREGISTRO := "
[MAIN]"                                                  ;
                   + CRLF                                    +               ;
                   "
Tipo=1"                                  +               ;
                   + CRLF                                    +               ;
                   "
Style=BRICKS"                            +               ;
                   + CRLF                                    +               ;
                   "
Cor=14286847"                            +               ;
                   + CRLF                                    +               ;
                   "
File="+ALLTRIM(cPathPleno)+"\ARANHA.BMP" +               ;
                   + CRLF+CRLF                               +               ;
                   "
[LOGO]"                                  +               ;
                   + CRLF                                    +               ;
                   "
File=.\Logo.bmp"                         +               ;
                   + CRLF                                    +               ;
                   "
Row=10"                                  +               ;
                   + CRLF                                    +               ;
                   "
Col=10"                                  +               ;
                   + CRLF+CRLF                               +               ;
                   "
[THANKS]"                                +               ;
                   + CRLF                                    +               ;
                   "
Special Thanks = "+"Ednaldo Alves Rolim"                +;
                   + CRLF                                                   +;
                   "
Propriet rio.. = "+"JoÆo Santos-kapiabafwh@gmail.com"   +;
                   + CRLF                                    +               ;
                   "
Meu Site:..... = "+"Visite: www.fivewin.com.br"         +;
                   + CRLF+CRLF                                              +;
                   "
Autor......... = "+"JoÆo Santos-kapiabafwh@gmail.com"

      FWRITE( NOME_ARQ, NREGISTRO )
      FCLOSE( NOME_ARQ )

      FUNDOWND() // Chamada ao fundo de tela Escolhida Pelo Usu rio. Muito Bom.

   ENDIF


Code: Select all  Expand view

Function FundoWnd( nOption, oWin, cWStyle, nWCor )

    LOCAL oIni, oBrush, oBmp
    LOCAL nTipo, cStyle, nCor, cFile, cLogo, nRow, nCol, lSelect
    LOCAL cDiretor := GetPvProfString( "Settings", "SaveDir", FilePath(), ".\FUNDO.INI" )
    LOCAL cMascara := "*.BMP"

    DEFAULT nOption := 0, oWin := oWnd:oWndClient

    IF nOption < 0 .AND. nOption > 4
        RETURN NIL
    ENDIF

    //-> Carrega
    INI oIni FILE ".\Fundo.ini"
        GET nTipo    SECTION "MAIN" ENTRY "Tipo"  OF oIni DEFAULT 1
        GET cStyle   SECTION "MAIN" ENTRY "Style" OF oIni DEFAULT "Bricks"
        GET nCor     SECTION "MAIN" ENTRY "Cor"   OF oIni DEFAULT  nRGB(   0,   0, 255 )
        GET cFile    SECTION "MAIN" ENTRY "File"  OF oIni DEFAULT ".\Fundo.bmp"

        GET cLogo    SECTION "LOGO" ENTRY "File"  OF oIni DEFAULT ".\Logo.bmp"
        GET nRow     SECTION "LOGO" ENTRY "Row"   OF oIni DEFAULT 10
        GET nCol     SECTION "LOGO" ENTRY "Col"   OF oIni DEFAULT 10
    ENDINI

    IF nOption == 0
        lSelect := .F.

     ELSEIF nOption == 1
        nTipo   := 1
        lSelect := .T.

     ELSEIF nOption == 2
        cStyle  := cWStyle
        nTipo   := 2
        lSelect := .F.

     ELSEIF nOption == 3
        nCor    := nWCor
        nTipo   := 3
        lSelect := .F.

     ELSEIF nOption == 4
        nTipo   := 3
        lSelect := .T.

    ENDIF

    //---- Cria o Brush
    //
    IF nTipo == 1

        IF lSelect
            // Modelo Antigo - Deu Uns Pauzinhos... troquei e funcionou.
            // cFile := cGetFile( "*.BMP", "Selecione o Arquivo Bitmap (.BMP)" )
            //-> Assim Pega do Diret¢rio Corrente em C:\...
            //cFile :=  cGetFile( cMascara, "Selecione o Arquivo Bitmap (.BMP)", 1, cDiretor, .T. )
            //-> Assim Pega em Rede -> Para Todas as M quinas.
            cFile := SubStr( cGetFile( "*.BMP", "Selecione o Arquivo Bitmap (.BMP)" ), 3 )
        ENDIF

        IF Empty( cFile )
           Return Nil
        ENDIF

        DEFINE BRUSH oBrush FILE cFile
        SET BRUSH OF oWin TO oBrush
 
     ELSEIF nTipo == 2

        DEFINE BRUSH oBrush STYLE ( cStyle )

     ELSEIF nTipo == 3

        IF lSelect
            nCor := ChooseColor()
        ENDIF

        DEFINE BRUSH oBrush COLOR nCor

    ENDIF

    //---- Estabelece o Brush da Janela
    //
    IF nTipo != 1

        SET BRUSH OF oWin TO oBrush

    ENDIF

    IF nOption != 0

        // Grava no Arquivo INI as Modifica‡äes
        INI oIni FILE ".\Fundo.ini"

            SET SECTION "MAIN" ENTRY "Tipo"  OF oIni TO nTipo
            SET SECTION "MAIN" ENTRY "Style" OF oIni TO cStyle
            SET SECTION "MAIN" ENTRY "Cor"   OF oIni TO nCor
            SET SECTION "MAIN" ENTRY "File"  OF oIni TO cFile

            SET SECTION "LOGO" ENTRY "File"  OF oIni TO cLogo
            SET SECTION "LOGO" ENTRY "Row"   OF oIni TO nRow
            SET SECTION "LOGO" ENTRY "Col"   OF oIni TO nCol

            SET SECTION "THANKS" ENTRY "Special Thanks" ;
                OF oIni TO "Ednaldo Rolim - ednaldorolim@uol.com.br - My Friend"
            SET SECTION "THANKS" ENTRY "Autor..." ;
                OF oIni TO "JoÆo Santos   - kapiabafwh@gmail.com "
            SET SECTION "THANKS" ENTRY "Meu Site:....." ;
                OF oIni TO "Visite: www.fivewin.com.br"

        ENDINI

    ENDIF

RETURN NIL
 

Re: tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Thu Feb 09, 2017 12:00 pm
by karinha
En el dialog, haga asi:

Code: Select all  Expand view

FUNCTION AGENDTEL( DeOndeVem )

   FIELD AGE_CODIGO    // Se usa si aqui se forman los indices

   LOCAL nCor, oIni, oBrush

   //-> Pega a Cor no .INI - Colores en el archivo FUNDO.INI
   INI oIni FILE ".\Fundo.ini"
      GET nCor SECTION "MAIN" ENTRY "Cor" OF oIni DEFAULT nCor
   ENDINI

   DEFINE BRUSH  oBrush COLOR VAL(nCor)  // Colores de dialog aqui.
   DEFINE CURSOR oCurDedo RESOURCE "Dedo"
   DEFINE ICON   oIco NAME "ICONE04"

   DEFINE FONT oFnt   NAME "Ms Sans Serif" SIZE 0, -14 BOLD //UnderLine
   DEFINE FONT oFont  NAME "Ms Sans Serif" SIZE 0, -12 BOLD //UnderLine
 
   DEFINE DIALOG oDlg RESOURCE "DLG_AGENDA_TELEFONICA"                 ;
          TITLE cTitleDial + " :: Hoje: " + DTOC( Date() )             ;
          BRUSH oBrush TRANSPARENT ICON  oIco


   // cambiar el color en tiempo real.
   REDEFINE BUTTON oBtns[13] ID 13000 OF oDlg ;
            ACTION ( SET_COLOR( oDlg ) )

   oBtns[13]:cToolTip := OemToAnsi( "Trocar a Cor da Tela Alt+R " )

   ACTIVATE DIALOG oDlg CENTERED
 


Code: Select all  Expand view

//---------------------TROCA A COR EM TEMPO REAL----------------------------//
FUNCTION SET_COLOR( oDlg )

   LOCAL oIni, oBrush, oBmp
   LOCAL nTipo, cStyle, nCor := 0, cFile, cLogo, nRow, nCol, lSelect

   oDlg:SetColor( oDlg:nClrText, nCor := ChooseColor( oDlg:nClrPane ) )

   // Grava no Arquivo INI as Modifica‡äes
   INI oIni FILE ".\Fundo.ini"

       SET SECTION "MAIN" ENTRY "Cor"   OF oIni TO nCor

   ENDINI

   oDlg:Refresh()
   oDlg:SetFocus()

RETURN NIL
 


Saludos.

Re: tipo tamaño de letra y color de dialog definidpor el usuario

PostPosted: Fri Feb 10, 2017 12:48 am
by JoseAlvarez
solucionado lo del color. Gracias nuevamente cNavarro y Joao.