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.