FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda con RICHEDIT5 Aplicar color al Focus
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Sat Aug 27, 2022 06:50 PM
Hola Amigos.

Sigo molestando con el tema, pero ahora con otro requerimiento.

Como puedo aplicar color al Focus en la zona donde se encuentra escribiendo el usuario.

Trate de aplicar lo que encontré en el foro, pero nada.

Muchos Saludos.

Antonio

Codigo:
Code (fw): Select all Collapse
              TMultiGet():lClrFocus :=  .T.
              TMultiGet():nClrFocus := nRGB( 197, 205, 255 )  // default is nRGB( 235, 235, 145 )

                // Ingreso Texto Memo                                  Ancho/Alto
                @  198,395 SAY "Observación:" SIZE 80,10 PIXEL OF oFld:aDialogs[1]       FONT oFont1    COLORS RGB(80, 28, 14)      TRANSPARENT

                @  210,395 RICHEDIT5 oRich VAR cTxt OF oFld:aDialogs[1] PIXEL SIZE 210, 70  FONT oFont2   HIGHLIGHT   // Texto RTF
FWH 22.10 - HARBOUR - PELLES C
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Sat Aug 27, 2022 07:32 PM
Antonio:
Creo que como lo hiciste estaría bien si el control fuera un MultiGet, pero estas usando un control RICHEDIT5
Intuyo que podrías cambiarle el color al momento del tomar el foco
Code (fw): Select all Collapse
oRich:bGotFocus := {|| (oRich:SetTextColor(nRGB( 197, 205, 255 )), oRich:SetBkGndColor(nRGB( 235, 235, 145 )))}

Esos dos metodos cambian el color de texto y fondo respectivamente...
No se si es lo que estas buscando
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Sat Aug 27, 2022 10:28 PM
Hola Amigo Cersar.

Como estas?

Lo que busco es que al acceder a escribir el texto, el fondo tome un color, tal como lo hace un GET.

Aplique lo que me indicaste, pero arrojo un error.

Muchas gracias.

Antonio.

Error:
Code (fw): Select all Collapse
   Time from start: 0 hours 0 mins 7 secs 
   Error occurred at: 27/08/2022, 18:23:38
   Error description: Error BASE/1005  No existe la variable de instancia: BGOTFOCUS
   Args:
     [   1] = L   .F.
     [   2] = B   {|| ... }
FWH 22.10 - HARBOUR - PELLES C
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Sun Aug 28, 2022 01:32 PM
Antonio, lo pusiste debajo de la definicion del richedit2?
Code (fw): Select all Collapse
// Ingreso Texto Memo                                  Ancho/Alto
@  198,395 SAY "Observación:" SIZE 80,10 PIXEL OF oFld:aDialogs[1]       FONT oFont1    COLORS RGB(80, 28, 14)      TRANSPARENT

@  210,395 RICHEDIT5 oRich VAR cTxt OF oFld:aDialogs[1] PIXEL SIZE 210, 70  FONT oFont2   HIGHLIGHT   // Texto RTF
oRich:bGotFocus := {|| (oRich:SetTextColor(nRGB( 197, 205, 255 )), oRich:SetBkGndColor(nRGB( 235, 235, 145 )))}

Y te da ese error?
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Sun Aug 28, 2022 02:11 PM
cmsoft wrote:Antonio, lo pusiste debajo de la definicion del richedit2?
Code (fw): Select all Collapse
// Ingreso Texto Memo                                  Ancho/Alto
@  198,395 SAY "Observación:" SIZE 80,10 PIXEL OF oFld:aDialogs[1]       FONT oFont1    COLORS RGB(80, 28, 14)      TRANSPARENT

@  210,395 RICHEDIT5 oRich VAR cTxt OF oFld:aDialogs[1] PIXEL SIZE 210, 70  FONT oFont2   HIGHLIGHT   // Texto RTF
oRich:bGotFocus := {|| (oRich:SetTextColor(nRGB( 197, 205, 255 )), oRich:SetBkGndColor(nRGB( 235, 235, 145 )))}

Y te da ese error?


Hola Cesar.

Muchas gracias.

Cuando lo puse arriba, da el error que describo.

Al ponerlo debajo de la linea como indicas, no da error, pero no causa ningun cambio en el color del Focus, es como que no existiera,

Muchos saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Mon Aug 29, 2022 11:51 AM
El efecto lo debería hacer cuando tengo texto o escribes sobre el control.
Deberia ponerte en el color que pones el texto y el background del texto
Prueba este ejemplo y ve si te hace lo que te muestro:
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "richedi5.ch"

FUNCTION Main()

   local oChild, oGet, oRich, cTxt, nCiud:=0
   

   DEFINE DIALOG oChild TITLE "Antonio"  FROM 05,10 TO 23,120   
   @  00,00 SAY "Numero:" SIZE 80,10 PIXEL OF oChild   COLORS RGB(80, 28, 14)      

   @  00,100 GET oGet VAR nCiud OF oChild PIXEL SIZE 70, 12  right
   @  20,00 SAY "Observación:" SIZE 80,10 PIXEL OF oChild   COLORS RGB(80, 28, 14)    

   @  20,100 RICHEDIT5 oRich VAR cTxt FILE 'ANTONIO.RTF' OF oChild PIXEL SIZE 200, 100  
   oRich:bGotFocus := {|| (oRich:SelectAll(),oRich:SetTextColor(nRGB( 255, 0, 0 )), oRich:SetBkGndColor(nRGB( 0, 255, 0 )))}  
   oRich:bLostFocus := {|| (oRich:SetTextColor(nRGB( 0, 0, 0 )), oRich:SetBkGndColor(nRGB( 255, 255, 255 )))}              

   ACTIVATE DIALOG oChild 
   
RETURN NIL
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Mon Aug 29, 2022 01:42 PM
cmsoft wrote:El efecto lo debería hacer cuando tengo texto o escribes sobre el control.
Deberia ponerte en el color que pones el texto y el background del texto
Prueba este ejemplo y ve si te hace lo que te muestro:
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "richedi5.ch"

FUNCTION Main()

   local oChild, oGet, oRich, cTxt, nCiud:=0
   

   DEFINE DIALOG oChild TITLE "Antonio"  FROM 05,10 TO 23,120   
   @  00,00 SAY "Numero:" SIZE 80,10 PIXEL OF oChild   COLORS RGB(80, 28, 14)      

   @  00,100 GET oGet VAR nCiud OF oChild PIXEL SIZE 70, 12  right
   @  20,00 SAY "Observación:" SIZE 80,10 PIXEL OF oChild   COLORS RGB(80, 28, 14)    

   @  20,100 RICHEDIT5 oRich VAR cTxt FILE 'ANTONIO.RTF' OF oChild PIXEL SIZE 200, 100  
   oRich:bGotFocus := {|| (oRich:SelectAll(),oRich:SetTextColor(nRGB( 255, 0, 0 )), oRich:SetBkGndColor(nRGB( 0, 255, 0 )))}  
   oRich:bLostFocus := {|| (oRich:SetTextColor(nRGB( 0, 0, 0 )), oRich:SetBkGndColor(nRGB( 255, 255, 255 )))}              

   ACTIVATE DIALOG oChild 
   
RETURN NIL


Buen dia Amigo Cesar.

Muchas gracias por responder.

1. Probe tu codigo: Funciono Perfecto.
Code (fw): Select all Collapse
       @  20,00 SAY "Observación:" SIZE 80,10 PIXEL OF oChild   COLORS RGB(80, 28, 14)

       @  20,100 RICHEDIT5 oRich VAR cTxt FILE 'ANTONIO.RTF' OF oChild PIXEL SIZE 200, 100
       oRich:bGotFocus := {|| (oRich:SelectAll(),oRich:SetTextColor(nRGB( 255, 0, 0 )), oRich:SetBkGndColor(nRGB( 0, 255, 0 )))}
       oRich:bLostFocus := {|| (oRich:SetTextColor(nRGB( 0, 0, 0 )), oRich:SetBkGndColor(nRGB( 255, 255, 255 )))}


2. Copie tu linea a mi Folderex y no fonciono:
Code (fw): Select all Collapse
                @  210,395 RICHEDIT5 oRich VAR cTxt FILE ''ANTONIO.RTF' OF oFld:aDialogs[1] PIXEL SIZE 210, 70  FONT oFont2   // Texto RTF
                oRich:bGotFocus := {|| (oRich:SelectAll(),oRich:SetTextColor(nRGB( 255, 0, 0 )), oRich:SetBkGndColor(nRGB( 0, 255, 0 )))}
            oRich:bLostFocus := {|| (oRich:SetTextColor(nRGB( 0, 0, 0 )), oRich:SetBkGndColor(nRGB( 255, 255, 255 )))}


3. Asi defino el Dialog y Folderex:
Code (fw): Select all Collapse
    DEFINE DIALOG oDlg SIZE 1230,640 PIXEL TRUEPIXEL FONT oFont6 STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
            oDlg:lTransparent := .F.

   @ 15, 05 FOLDEREX oFld SIZE 1220,620 OF oDlg PIXEL ROUND 5 ;
     PROMPT  "&Administración","&Evaluación 1er Parte", "&Evaluación 2da Parte" , "&FIC. MEDICA";
        TAB HEIGHT 40   FONT oFont8

          oFld:aDialogs[1]:lTransparent   := .F.
            oFld:aDialogs[2]:lTransparent   := .F.
            oFld:aDialogs[3]:lTransparent   := .F.

Muchos Saludos.
FWH 22.10 - HARBOUR - PELLES C
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Mon Aug 29, 2022 05:27 PM
Buenas tardes
Vamos por partes, un tema es cambiar el color al control cuando obtiene el foco ( algo parecido a lo que obtenemos al aplicar la function SetGetColorFocus( <nColor> ) ), y otro tema es cambiar el color del fondo al texto que escribimos ( que lo podemos hacer tantas cuantas veces necesitemos para dar la apariencia que queremos a nuestra composición )
Si usamos esta solución:
Code (fw): Select all Collapse
      oRich:bGotFocus := {|| (oRich:SelectAll(),oRich:SetTextColor(nRGB( 255, 0, 0 )), oRich:SetBkGndColor(nRGB( 0, 255, 0 )))}
       oRich:bLostFocus := {|| (oRich:SetTextColor(nRGB( 0, 0, 0 )), oRich:SetBkGndColor(nRGB( 255, 255, 255 )))}

y el control no tiene texto, será difícil para el usuario saber en qué control está el foco
Además si modificaras el texto y necesitaras a unas palabras cambiarle el fondo, no sé qué efecto obtendrías.
Yo para el objetivo que buscas haría
Code (fw): Select all Collapse
   oRich:bGotFocus  := { || SendMessage( oRich:hWnd, EM_SETBKGNDCOLOR, 0, nRGB( 0, 255, 0 ) ), oRich:GoTop() }
   oRich:bLostFocus := { || SendMessage( oRich:hWnd, EM_SETBKGNDCOLOR, 0, nRGB( 255, 255, 255 ) ), oRich:GoTop() }

En cuanto a los posibles errores o problemas de implementación, lo vemos también si describes si lo que obtienes al aplicarlo a un FolderEx es un error o que no obtienes el efecto deseado y qué es lo que te ocurre
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
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Mon Aug 29, 2022 07:43 PM
cnavarro wrote:Buenas tardes
Vamos por partes, un tema es cambiar el color al control cuando obtiene el foco ( algo parecido a lo que obtenemos al aplicar la function SetGetColorFocus( <nColor> ) ), y otro tema es cambiar el color del fondo al texto que escribimos ( que lo podemos hacer tantas cuantas veces necesitemos para dar la apariencia que queremos a nuestra composición )
Si usamos esta solución:
Code (fw): Select all Collapse
      oRich:bGotFocus := {|| (oRich:SelectAll(),oRich:SetTextColor(nRGB( 255, 0, 0 )), oRich:SetBkGndColor(nRGB( 0, 255, 0 )))}
       oRich:bLostFocus := {|| (oRich:SetTextColor(nRGB( 0, 0, 0 )), oRich:SetBkGndColor(nRGB( 255, 255, 255 )))}

y el control no tiene texto, será difícil para el usuario saber en qué control está el foco
Además si modificaras el texto y necesitaras a unas palabras cambiarle el fondo, no sé qué efecto obtendrías.
Yo para el objetivo que buscas haría
Code (fw): Select all Collapse
   oRich:bGotFocus  := { || SendMessage( oRich:hWnd, EM_SETBKGNDCOLOR, 0, nRGB( 0, 255, 0 ) ), oRich:GoTop() }
   oRich:bLostFocus := { || SendMessage( oRich:hWnd, EM_SETBKGNDCOLOR, 0, nRGB( 255, 255, 255 ) ), oRich:GoTop() }

En cuanto a los posibles errores o problemas de implementación, lo vemos también si describes si lo que obtienes al aplicarlo a un FolderEx es un error o que no obtienes el efecto deseado y qué es lo que te ocurre


Hola Cristóbal.

Muchas gracias por su ayuda, por toda su explicación.

El cliente me había solicitado que al tomar el foco, este lo hiciera con color, pero hoy en la mañana después de intentarlo, le explique a mi cliente, que el usar esta tipo de ingreso en escritura libre, le permite texto enriquecido, el echo que pusiera color a algún párrafo, este severia afectado por el color del fondo, que el blanco si era el mas optimo.

Muchas gracias por todo.

Saludos

Antonio

A modo de prueba, aplique estas líneas para ver que produce: Como resultado, nada, fondo blanco y letras negras.
Code (fw): Select all Collapse
                @  210,395 RICHEDIT5 oRich VAR cTxt  OF oFld:aDialogs[1] PIXEL SIZE 210, 70  FONT oFont2   // Texto RTF
                oRich:bGotFocus  := { || SendMessage( oRich:hWnd, EM_SETBKGNDCOLOR, 0, nRGB( 0, 255, 0 ) ), oRich:GoTop() }
            oRich:bLostFocus := { || SendMessage( oRich:hWnd, EM_SETBKGNDCOLOR, 0, nRGB( 255, 255, 255 ) ), oRich:GoTop() }
FWH 22.10 - HARBOUR - PELLES C
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Mon Aug 29, 2022 09:14 PM

Muchas gracias Cristobal por la corrección, creo que eso es lo que Antonio buscaba, y no lo que yo le indiqué.
Tiene alguna funcionalidad diferenciada en el Folder?

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Tue Aug 30, 2022 12:43 AM
cmsoft wrote:Muchas gracias Cristobal por la corrección, creo que eso es lo que Antonio buscaba, y no lo que yo le indiqué.
Tiene alguna funcionalidad diferenciada en el Folder?

Estimado Cesar, nada que agradecer, muy al contrario, agradecerte toda la ayuda que brindas a la comunidad, mostrando tu calidad humana y amplios conocimientos.
En principio, a falta de que haga alguna prueba sobre el tema lo único que se me ocurre en cuanto a su implementación en los folderex:
1.- No esté correctamente implementado por parte de Antonio ( me extraña que solo salga el texto con letras en negro y fondo blanco, por lo que he de entender o que el texto no tiene formato RTF, o que no se aplica el metodo Colorize para indicar al control que aplique la estética adecuada )
2.- Probar si es un problema de la data lTransparent de los dialogs que crea el control TFOLDEREX, o algo parecido.
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
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Ayuda con RICHEDIT5 Aplicar color al Focus
Posted: Tue Aug 30, 2022 04:44 PM
cnavarro wrote:
cmsoft wrote:Muchas gracias Cristobal por la corrección, creo que eso es lo que Antonio buscaba, y no lo que yo le indiqué.
Tiene alguna funcionalidad diferenciada en el Folder?

Estimado Cesar, nada que agradecer, muy al contrario, agradecerte toda la ayuda que brindas a la comunidad, mostrando tu calidad humana y amplios conocimientos.
En principio, a falta de que haga alguna prueba sobre el tema lo único que se me ocurre en cuanto a su implementación en los folderex:
1.- No esté correctamente implementado por parte de Antonio ( me extraña que solo salga el texto con letras en negro y fondo blanco, por lo que he de entender o que el texto no tiene formato RTF, o que no se aplica el metodo Colorize para indicar al control que aplique la estética adecuada )
2.- Probar si es un problema de la data lTransparent de los dialogs que crea el control TFOLDEREX, o algo parecido.
Saludos


Buen día Cristóbal y Cesar.

Es destacable lo que brinda Cesar, su capacidad humana como dice ud. es tremenda, dedicar tanto tiempo a ayudarnos a quienes lo necesitamos, es muy valorable y de profundo agradecimiento, se que hay una lista enorme de compañeros que hacen los mismo, de los que también estoy profundamente agradecido, soy de los que esta aprendiendo de nuestros maestros, en lo particular, para mi siempre Cesar esta dispuesto a dedicar su tiempo a escribir código y resolver mis problemas, al igual que Francisco J. Alegría P., Mr. Roa, Maestro Antonio, João Santos, de la misma forma mis agradecimientos para ud. Cristóbal y para todos los compañeros que siempre están presente.

Infinitas gracias para todos.

En lo relacionado a mi problema, lo mencione que puede se un problema en el Folderex, me refiero a la implementación en mi código, ya que es mi primera vez que la uso, y fue una decisión que tome por una consulta técnica que realice en el foro y pensé que era la mejor forma de manejar un numero grande de Gets.

De esto nace mi duda y responsabilidad del porque no veo el resultado que se espera al aplicar sus líneas recomendadas.


Muchos Saludos
Antonio
FWH 22.10 - HARBOUR - PELLES C

Continue the discussion