Ayuda con RICHEDIT5 Aplicar color al Focus

Ayuda con RICHEDIT5 Aplicar color al Focus

Postby remtec » Sat Aug 27, 2022 6: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: Select all  Expand view  RUN

              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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby cmsoft » Sat Aug 27, 2022 7: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: Select all  Expand view  RUN

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
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby remtec » 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: Select all  Expand view  RUN


   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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby cmsoft » Sun Aug 28, 2022 1:32 pm

Antonio, lo pusiste debajo de la definicion del richedit2?
Code: Select all  Expand view  RUN

// 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?
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby remtec » Sun Aug 28, 2022 2:11 pm

cmsoft wrote:Antonio, lo pusiste debajo de la definicion del richedit2?
Code: Select all  Expand view  RUN

// 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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby cmsoft » 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: Select all  Expand view  RUN
#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
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby remtec » Mon Aug 29, 2022 1: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: Select all  Expand view  RUN
#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: Select all  Expand view  RUN

       @  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: Select all  Expand view  RUN

                @  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: Select all  Expand view  RUN

    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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby cnavarro » Mon Aug 29, 2022 5: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: Select all  Expand view  RUN

      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: Select all  Expand view  RUN

   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
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby remtec » Mon Aug 29, 2022 7: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: Select all  Expand view  RUN

      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: Select all  Expand view  RUN

   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: Select all  Expand view  RUN

                @  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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby cmsoft » Mon Aug 29, 2022 9: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?
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby cnavarro » 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
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ayuda con RICHEDIT5 Aplicar color al Focus

Postby remtec » Tue Aug 30, 2022 4: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
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 90 guests