Page 2 of 2
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Thu Dec 29, 2022 1:02 am
by nanoespinoza
Estimado Cristobal:
Dos temas más:
1) Al usar la cláusula BARBUTTON aparece un menú flotante que solo se visualiza al pasar el ratón por la parte superior del control RICHEDIT5. ¿Hay alguna forma de que ese ButtonBar se vea de forma permanente?
2) Le anexo la captura de pantalla, sobre como se ve el menú contextual.
Saludos
Fernando Espinoza A.
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Thu Dec 29, 2022 2:57 am
by cnavarro
Fernando, ya veo
En relación al tema del menu, quise entender que el texto RTF a mostrar lo tienes guardado en una base de datos, y que lees el campo y su contenido lo muestras en el control, es así ?. En cualquier caso, ponme el trozo de código que utilizas para leer y mostrar el RTF en el control, y vemos como solucionar tu problema.
En cuanto al tema de la buttonbar, te he de decir, que su comportamiento actual considero que es el correcto para este tipo de control. Puedes no activar la buttonbar y hacerla fuera del control. Tienes un ejemplo de funcionalidad en el ejemplo TestRtf5.prg, y, si necesitas ayuda para implementar la funcionalidad de los botones, en la clase aparece la construcción de la misma, por lo que podrías copiar el código y asignar esa buttonbar al contenedor que consideres ( que contendrá en su area cliente el control RTF también, evidentemente ). Espero haberme explicado, pero en cualquier caso, te ayudaría a implementarla si tienes algún problema.
Si te estás haciendo la pregunta de ¿y por qué no dejarla fija dentro del control?, te explico mi punto de vista: cuando pones una buttonbar, ocupa una parte del area cliente ( oTop ) de un contenedor ( windows, dialog, etc. ), pero esto es un control, y no distinguirá que su nTop es debajo de la buttonbar, es decir, sería complicado decirle que solo puede empezar a escribir a partir del oBar:nBottom.
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Thu Dec 29, 2022 3:07 am
by nanoespinoza
cnavarro wrote:Fernando, ya veo
En relación al tema del menu, quise entender que el texto RTF a mostrar lo tienes guardado en una base de datos, y que lees el campo y su contenido lo muestras en el control, es así ?. En cualquier caso, ponme el trozo de código que utilizas para leer y mostrar el RTF en el control, y vemos como solucionar tu problema.
En cuanto al tema de la buttonbar, te he de decir, que su comportamiento actual considero que es el correcto para este tipo de control. Puedes no activar la buttonbar y hacerla fuera del control. Tienes un ejemplo de funcionalidad en el ejemplo TestRtf5.prg, y, si necesitas ayuda para implementar la funcionalidad de los botones, en la clase aparece la construcción de la misma, por lo que podrías copiar el código y asignar esa buttonbar al contenedor que consideres ( que contendrá en su area cliente el control RTF también, evidentemente ). Espero haberme explicado, pero en cualquier caso, te ayudaría a implementarla si tienes algún problema.
Estimado Cristóbal:
1) Efectivamente el texto RTF lo tengo guardado en una .dbf, el código que uso es este:
Para definir el control:
Code: Select all | Expand
REDEFINE RICHEDIT5 oRtf VAR cObserv ID 8502 OF oFld:aDialogs[nFld] FONT oFontCR FILE cObserv ;
BARBUTTON MESSAGE "Observaciones sobre el partido"
oRtf:cToolTip:={"Observaciones sobre el partido","SicefWin "+cVersSW,2,CLR_WHITE,CLR_GREEN}
oRtf:SetLangOptions(.T.) // Activa el corrector ortográfico
Lo activo en el ON INIT del diálogo, así:
Code: Select all | Expand
ACTIVATE DIALOG oDlgALIN CENTERED ON INIT ( oDlgALIN:SetIcon(oApp:cIcono), Ocultar(GLOC,GVIS,oGet), oGet[1]:SetColor(CLR_RED,CLR_LBLUE), oGet[166]:SetColor(CLR_RED,CLR_LBLUE), ;
IF(!lEvtPrg, (CargaBarra2(oFld:aDialogs[nFld]), oRtf:LoadRTF(cObserv), ;
oRtf:SetFontName("Segoe UI"), oRtf:SetFontSize(10), oFld:aDialogs[nFld]:oBar:=NIL, oFld:aDialogs[nFld]:oTop:=NIL, oBar:Move(24,10), ;
oRtf:bChange:={ || (RefreshBtnBar_Obs(oBar), IF( oRtf:IsModify(), cObserv:=oRtf:SaveAsRTF(), )) }, Eval( oRtf:bChange )), ;
(oBut[1]:Disable(), oBut[2]:Disable(), oBut[4]:Disable(), oBut[5]:Disable())), ;
IF(!Empty(cPlnTctL) .AND. cPlnTctL<>"N/D" .AND. Rat("1-",cPlnTctL)<>0, oBut[21]:cTitle(" Táctica ..."+CRLF+" ya elegida"), ), ;
IF(!Empty(cPlnTctV) .AND. cPlnTctV<>"N/D" .AND. Rat("1-",cPlnTctV)<>0, oBut[22]:cTitle(" Táctica ..."+CRLF+" ya elegida"), ), ;
IF(GLOC=0, oRad[1]:aItems[2]:Disable(), ), IF(GVIS=0, oRad[2]:aItems[2]:Disable(), ), ;
oLbx[1]:SetFocus(), CtrlBloqueo(2) )
2) Sobre la buttonbar, entendido, lo implementaré por fuera con la ayuda de TestRtf5.prg.
Saludos
Fernando Espinoza A.
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Thu Dec 29, 2022 3:10 am
by cnavarro
Fernando, la linea
Code: Select all | Expand
IF(!lEvtPrg, (CargaBarra2(oFld:aDialogs[nFld]), oRtf:LoadRTF(cObserv), ;
Prueba a ponerla así, y me comentas
Code: Select all | Expand
IF(!lEvtPrg, (CargaBarra2(oFld:aDialogs[nFld]), oRtf:LoadRTF(cObserv), oRtf:cFileName := "", ;
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Thu Dec 29, 2022 3:15 am
by cnavarro
Por cierto Fernando, muchas Felicidades por tu cumpleaños, estás hecho un chaval.
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Thu Dec 29, 2022 4:33 am
by nanoespinoza
cnavarro wrote:Por cierto Fernando, muchas Felicidades por tu cumpleaños, estás hecho un chaval.
La foto es bien vieja, pero el espíritu de niño, se mantiene.
Funcionó bien con su aporte. Gracias.
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Thu Dec 29, 2022 4:03 pm
by nanoespinoza
Estimado Cristobal:
Un tema final sobre el comportamiento del corrector ortográfico en RICHEDIT5; si bien es cierto este me marca la mayoría de palabras con error o hace correcciones automáticas, como eliminar letras repetidas, sucede que esta característica no se activa de entrada al abrir el Control.
Uso: oRtf:SetLangOptions( .T. ) desde el ON INIT del dialogo para activar esta caractrística, al abrir el menú contextual con el botón derecho del ratón, me aparece marcado Set Spellcheck, pero las palabras mal escritas no se marcan; tengo que hacer lo siguiente; 1) desmarcar el Set Spellcheck, 2) volverlo a marcarlo; y desde ahí, me empieza a marcar las palabras mal escritas conforme voy escribiendo, lo ya mal escrito, no se marca, solo lo hace, sí recorro el texto y hago una corrección de lo escrito.
Saludos
Fernando Espinoza A.
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Fri Dec 30, 2022 8:21 am
by Antonio Linares
Fernando,
Has probado asi ?
( oRtf:SetLangOptions( .T. ), oRtf:SetLangOptions( .F. ), oRtf:SetLangOptions( .T. ) ) desde el ON INIT del dialogo ?
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Fri Dec 30, 2022 11:48 pm
by nanoespinoza
Antonio Linares wrote:Fernando,
Has probado asi ?
( oRtf:SetLangOptions( .T. ), oRtf:SetLangOptions( .F. ), oRtf:SetLangOptions( .T. ) ) desde el ON INIT del dialogo ?
Estimado Antonio:
n
Su propuesta resuelve el problema, colocando esa repetición en el ON INIT y agregando oRtf:lSpell:=.T. en la definición del control RICHEDIT5 (esto para que salga chequeado en el menú contrextual -popup-). Lo que no se resuelve es que igualmente se debe recorrer el texto, para que se marquen los errores previos, los errores nuevos se marcan ya directamente.
Sería interesante que se complemente más esta clase.
Saludos
Fernando Espinoza A.
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Sun Jan 01, 2023 7:59 am
by Antonio Linares
Fernando,
Antes de hacer esas tres llamadas haz lo siguiente:
oRtf:SelectAll()
Re: Que cambios de hacer para pasar de RichEdit a la RICHEDIT5
Posted: Sun Jan 01, 2023 9:11 pm
by nanoespinoza
Antonio Linares wrote:Fernando,
Antes de hacer esas tres llamadas haz lo siguiente:
oRtf:SelectAll()
Estimado Antonio:
Probé su sugerencia y por ahí algunas más, buscando los métodos que tiene la clase, pero al momento no hay solución.
Saludos
Fernando Espinoza A.