Subrayar palabra dentro de frase en Foxypreviewer

171 views
Skip to first unread message

Alejandro Garcia G.

unread,
Oct 15, 2015, 12:32:54 PM10/15/15
to Comunidad de Visual Foxpro en Español
Saludos

Tengo una carta que se toma el texto en un campo memo de una tabla, parte del cuerpo del texto debe ir subrayado, otra parte en negrilla, el resto en texto normal al momento de imprimir, imprimo este campo justificado. Utilizo el Foxypreviewer, pero no se como hacer para realizar esto, ¿pueden colaborar?.

Ejemplo:

"Esta es la frase que debo subrayar y esta otra solo colocarla en negrilla, el resto del texto normal."

Algo así.

francisco prieto

unread,
Oct 15, 2015, 2:14:28 PM10/15/15
to publicesvfoxpro
Bueno, a mi se me ocurre con el uso de un Richtextbox...

Esta rutina resalta en rojo una palabra.

LPARAMETERS cTexto
LOCAL lnPosSelIni,lnPosSelLong,lnLargo,lnPosCar,lnCoincide,lnPrimerPos
* Esta otra copción es para resaltar y colorear las coincidencias 
* Reestablece el color negro por si habia frases resaltadas 
Thisform.ResetColor()
 
*Guarda la posición y la longitud del texto que está seleccionado 
lnPosSelIni=ThisForm.oleMemo.SelStart 
lnPosSelLong=ThisForm.oleMemo.SelLength 

*Guarda la longitud del texto a buscar 
lnLargo=Len(cTexto) 
 
*Busca con Find la cadena. En la variable Guardamos la posición donde se encontró 
lnPosCar=ThisForm.oleMemo.Find(cTexto) 
lnCoincide=0 
DO While lnPosCar > 0 
    lnCoincide=lnCoincide+1 
    IF lnCoincide=1
        lnPrimerPos=lnPosCar
    ENDIF
             
    With ThisForm.oleMemo
        *Asignamos la variable anterior a la propiedad SelStart del RichTextBox 
        .SelStart = lnPosCar
 
        *Establecemos en SelLength el tamaño de la cadena nuevamente 
        .SelLength = lnLargo
 
        *Esto le asigna el color de resalte que aplicará al texto encontrado en el Richtextbox 
        .SelColor = RGB(255,0,0) 
 
        *Ejecuta nuevamente el método Find hasta el final, es decir hasta que lnPosCar = 0 
        lnPosCar=ThisForm.oleMemo.Find(cTexto,(lnPosCar+lnLargo)) 
    ENDWITH  
    IF LASTKEY()=-2
        EXIT
    ENDIF
ENDDO
 
* Seteamos las propiedades SelStart y Sellength 
IF lnCoincide=0
    ThisForm.oleMemo.SelStart = lnPosSelIni 
ELSE
    ThisForm.oleMemo.SelStart = lnPrimerPos 
ENDIF
ThisForm.oleMemo.SelLength = lnPosSelLong 
 
* Retorna las veces que se encontró la cadena en el Richtextbox 
RETURN (lnCoincide)

Paso tambien el resetcolor

LOCAL lnPosIni
WITH ThisForm.oleMemo
    lnPosIni = .SelStart 
    .SelStart = 0 
    .SelLength = Len(.Text) 
    .SelColor = RGB(0,0,0) 
    .SelStart = lnPosIni 
ENDWITH  

Saludos,

Pancho
Córdoba
Argentina

Alejandro Garcia G.

unread,
Oct 15, 2015, 2:35:24 PM10/15/15
to Comunidad de Visual Foxpro en Español
Gracias por responder Francisco, probare para ver como me va.


Alejandro Garcia G.

unread,
Oct 15, 2015, 2:57:36 PM10/15/15
to Comunidad de Visual Foxpro en Español
Francisco, disculpa, mirando la documentación del Foxy, hay un ejemplo de como hacerlo, es mas sencillo de lo que pensaba lo probe y me funciono.

MIrra, dentro del reporte, en donde se imprime el dato, lo selecciono y en propiedades coloco lo siguiente: <TF>, eso prepara el campo para recibir instrucciones como  si fuer HTML, luego en los datos del campo a imprimir, lo que deseo resaltar lo incluyo dentro de las siguientes notaaciones:

Negrillas: <b> </b>
Cursiva:  <i> </i>
Surayado: <u> </u>
Tachado: <s> </s>

Y listo me funciono perfecto.


Alejandro Garcia G.

unread,
Oct 15, 2015, 2:59:11 PM10/15/15
to Comunidad de Visual Foxpro en Español
Se me olvidaa comentr, como ese campo lo tengo justificado coloque primero <FJ> y luego <TF>
Reply all
Reply to author
Forward
0 new messages