Page 1 of 1

New: Print/Display RichText

PostPosted: Fri Mar 25, 2022 3:27 am
by nageswaragunupudi
From the next version onwards, the same methods/commands which we have been using all along for display/print multi-line text, will display/print RichText also, without any additional coding by the programmer.
Code: Select all  Expand view

oWnd:SayText( cText, aRect, ... )
oPrn:SayText( cText, aRect, ... )
@ r,c PRINT TO oPrn TEXT cText SIZE w,h INCHES/CM/MM
 


samples\rtfprn.prg
Code: Select all  Expand view

#include "fivewin.ch"

function Main()

   local oPrn, cText, cRtf, oFont, oBold

   cText := MEMOREAD( "rtfprn.prg" )
   cRtf  := MEMOREAD( "testrtf.rtf" )

   PRINT oPrn PREVIEW

   DEFINE FONT oFont NAME "LUCIDA CONSOLE" SIZE 0,-10 OF oPrn
   DEFINE FONT oBold NAME "ARIAL" SIZE 0,-20 OF oPrn

   PAGE

      oPrn:Say( 0.5, 0.8, "Rich Text", oBold,,,,, "INCHES" )
      oPrn:Box( 0.8, 0.8, 5.2, 7.2,,,, "INCHES" )
      @ 1, 1 PRINT TO oPrn TEXT cRtf  SIZE 6,4 INCHES

      oPrn:Say( 5.5, 0.8, "Normal Text", oBold,,,,, "INCHES" )
      oPrn:Box( 5.8, 0.8, 10.2, 7.2,,,, "INCHES" )
      @ 6, 1 PRINT TO oPrn TEXT cText SIZE 6,4 INCHES FONT oFont

   ENDPAGE
   ENDPRINT

   RELEASE FONT oFont, oBold

return nil
 

Same syntax is used for both normal text and rich text.

Image

Re: New: Print/Display RichText

PostPosted: Fri Mar 25, 2022 3:33 am
by nageswaragunupudi
Display RichText in any rectangular area of a window/dialog/control, by using the same method oWnd:SayText( cRichText, aRect )
Code: Select all  Expand view

   oWnd:bPainted := <|hDC|
      local oRect := oWnd:GetCliAreaRect()
      oRect += { 60, 60, -60, -60 }
      oWnd:SayText( cRtf, oRect:aRect )
      oRect += { -20, -20, 20, 20 }
      oWnd:Box( oRect:nTop, oRect:nLeft, oRect:nBottom, oRect:nRight )
      return nil
      >
 


Image

Re: New: Print/Display RichText

PostPosted: Fri Mar 25, 2022 9:36 pm
by cmsoft
Excelente!!! Muy buen aporte!
Felicitaciones!

Re: New: Print/Display RichText

PostPosted: Mon Mar 28, 2022 7:02 pm
by TimStone
I will greatly appreciate this capability.

Will this also work automatically in PREVIEW mode ?

Do we have an ETA for the next version ?

Thanks so much for all the effort on this capability.

Re: New: Print/Display RichText

PostPosted: Tue Mar 29, 2022 4:02 am
by nageswaragunupudi
Will this also work automatically in PREVIEW mode ?

Yes

Do we have an ETA for the next version ?

Early April 22.

Re: New: Print/Display RichText

PostPosted: Tue Mar 29, 2022 8:42 am
by Silvio.Falconi
Could you also bring in the justification of the paragraphs?

Re: New: Print/Display RichText

PostPosted: Mon Jun 20, 2022 5:38 am
by nageswaragunupudi
Silvio.Falconi wrote:Could you also bring in the justification of the paragraphs?

Richtext allows formatting paragraphs with justification.

Re: New: Print/Display RichText

PostPosted: Mon Jun 20, 2022 5:38 am
by nageswaragunupudi
From the next version it is possible to split across pages.

Re: New: Print/Display RichText

PostPosted: Mon Jun 20, 2022 6:12 am
by Detlef
That's great news.
Many thanks for this excellent development.

Re: New: Print/Display RichText

PostPosted: Fri Jul 01, 2022 5:51 pm
by nageswaragunupudi
We were able to split normal text across pages. From ver 22.06, it is possible to split rich text also with the same syntax.

Sample:
Code: Select all  Expand view
#include "fivewin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oPrn, oLarg, oFont, oPen, nLastRow
   local cNotes   := HB_MEMOREAD( "c:\fwh\samples\test.rtf" )

   PRINT oPrn PREVIEW

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14 OF oPrn
   DEFINE FONT oLarg NAME "TAHOMA" SIZE 0,-40 BOLD OF oPrn
   DEFINE PEN oPen WIDTH 1 OF oPrn

   PAGE

      oPrn:Box( 0.9, 0.9, 7.6, 7.1, oPen, nil, ;
         { "MAIN" + CRLF + "REPORT", oLarg }, ;
         "INCHES" )

      oPrn:Say( 7.9, 1.00, "Notes: ( Normal Text or Rich Text )", ;
         oFont, 6.0, nil, nil, nil, "INCHES" )

      @ 8.5, 1.0 PRINT TO oPrn TEXT @cNotes SIZE 6.0, 1.5 INCHES ;
         LASTROW nLastRow

      oPrn:Box( 8.40, 0.90, nLastRow + 0.1, 7.10, oPen, nil, nil, "INCHES" )

   ENDPAGE

   do while .not. Empty( cNotes )

      PAGE

      @ 1.0, 1.0 PRINT TO oPrn TEXT @cNotes SIZE 6.0, 9.0 INCHES ;
         LASTROW nLastRow

      oPrn:Box( 0.90, 0.90, nLastRow + 0.1, 7.10, oPen, nil, nil, "INCHES" )

      ENDPAGE

   enddo

   ENDPRINT

   RELEASE FONT oFont, oLarg
   RELEASE PEN oPen

return nil

//----------------------------------------------------------------------------//
 


Image

Re: New: Print/Display RichText

PostPosted: Fri Jul 01, 2022 10:38 pm
by cmsoft
Excelente aporte Mr. Rao. Creo que con esto se pueden generar y combinar para hacer reportes personalizados de alta calidad!

Aprovecho para consultarle sobre algo que se consultó en este hilo:
viewtopic.php?f=6&t=41905&start=15
Hay alguna posibilidad que al leer un archivo .rtf también se pueda traer el encabezado y pie de página?
Desde ya muchas gracias

Re: New: Print/Display RichText

PostPosted: Sat Jul 02, 2022 5:17 am
by nageswaragunupudi
Hay alguna posibilidad que al leer un archivo .rtf también se pueda traer el encabezado y pie de página?

Need some time please.