Page 1 of 2
A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 5:42 pm
by ukoenig
Hello,
I'm looking for a simple way to print with
richedi5 a memofield on two pages
I Added a print-button to the sample-collector for printing samples.
Just a textsplitting is needed ( max 2 pages nothing special )
I couln't find any sample.
One page printing of imported topics
Code: Select all | Expand
STATIC FUNCTION PRINTTOPIC( lPreview, oTCode, cTopic, cTAuthor, cTLink )
LOCAL oPrn
LOCAL aRTF := { 0, 100 } // { nFrom, nTop }
DEFINE FONT oBold NAME "Arial" SIZE 0,-56 BOLD
DEFINE FONT oMono NAME "Arial" SIZE 0,-12
DEFAULT lPreview := .f.
IF lPreview
PRINT oPrn NAME "FWH SAMPLE FILE" PREVIEW
ELSE
PRINT oPrn NAME "FWH SAMPLE FILE"
ENDIF
IF EMPTY( oPrn:hDC )
MsgStop( "Printer not ready!" )
RETURN NIL
ENDIF
PAGE
CURSORWAIT()
oPrn:InchSay( 0.40, 0.95, cTopic, oBold )
oPrn:InchSay( 0.50, 0.95, cTAuthor, oBold )
oPrn:InchSay( 0.60, 0.95, cTLink, oBold )
// nFrom := REPrintBox5( ::hWnd, hDC, ::IsSelection(), ;
// nTop, nLeft, nRight, nBottom, nFrom )
aRTF := REPrintBox5( oTCode:hWnd, If( lPreview, oPrn:hDCOut, oPrn:hDC ), ;
oTCode:IsSelection(), ;
aRTF[ 2 ] + 500, 500, 3500, aRTF[ 2 ] + 5500, aRTF[ 1 ] )
CursorArrow()
ENDPAGE
ENDPRINT
oBold:End()
oMono:End()
RETURN NIL

regards
Uwe

Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 7:17 pm
by cnavarro
Uwe
I do not know if I have understood your question correctly, but you can insert a page break in your text when you need it
Also you have methods and data for you editor
Code: Select all | Expand
DATA lShowPageBreak
METHOD HidePageBreak()
METHOD ShowPageBreak()
METHOD PageSetup( nTop, nLeft, nRight, nBottom )
Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 8:20 pm
by ukoenig
Christobal,
I scanned the complete forum and found 42 topics about richedit
but NO infos about a textbreak during printing to a new page
Do You mean to count the lines and include a pagebreak on a defined position
BEFORE printing ?

regards
Uwe

Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 8:25 pm
by cnavarro
This is a old method of richedit ( and also for richedit5 )
viewtopic.php?f=16&t=6594&p=29464&hilit=PageBreak#p29464That's why I have not mentioned it
Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 8:30 pm
by cnavarro
ukoenig wrote:Christobal,
Do You mean to count the lines and include a pagebreak on a defined position
BEFORE printing ?
regards
Uwe

Uwe
Explain the reason for your question in the firts topic
I think I have not understood your needs well
Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 8:41 pm
by ukoenig
Cristobal,
I counted
60 lines of possible code printing the first page.
That means for topics > 60 lines in size I need a second page for printing.
It is just a textsplitting I need.
I noticed a maximum of possible 2 pages a topic might need for printing.
No problem on other printings I've done before but richedit is different.
regards
Uwe

Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 8:46 pm
by cnavarro
ukoenig wrote:Cristobal,
I counted
60 lines of possible code printing the first page.
That means for topics > 60 lines in size I need a second page for printing.
It is just a textsplitting I need.
I noticed a maximum of possible 2 pages a topic might need for printing.
No problem on other printings I've done before but richedit is different.
regards
Uwe

Now I think I understand what you mean
Are you looking for an automatic way to format the printout in the required pages of the RichEdit5 control text?
Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 8:51 pm
by ukoenig
Cristobal,
Yes that is what I mean. 90 % of the topic-code is small in size and only 1 page is needed
but I would like to cover bigger text as well.
Now I think I understand what you mean
Are you looking for an automatic way to format the printout in the required pages of the RichEdit5 control text?
regards
Uwe

Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Thu Feb 22, 2018 8:57 pm
by cnavarro
Ok
You have
Code: Select all | Expand
oRTF:LastLineVisible()
//and
oRTF:GetLineCount()
//after
oRTF:GotoLine( nLine ) // calculate line from LastLineVisible and GetLineCount and insert PageBreak
Please, If I can help you with anything, tell me
Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Sat Feb 24, 2018 5:45 pm
by ukoenig
Cristobal,
printing on multiple pages works but I didn't use pagebreak.
Next I want to show colored keywords.
I think it is not tested showing / refresh a new text on xbrowse row-change.
Adding
HIGHLIGHT is giving a terrible effect :
the complete dialog is < fllckering / refreshed > on row-change and the display slows down.
I think using it on a standalonetext it doesn't matter but not for a fast text-changing with xBrowse.
@ 40, 625 RICHEDIT5 oTCode VAR cTCode OF oDlg SIZE 600, 410 ; // w h
FONT oFont PIXEL HSCROLL
HIGHLIGHT
with my next release I can include the normal and a version with activated highlight
maybe there is another solution possible
NO bad effects using :
Colorize( nStart, nEnd, nColor )regards
Uwe

Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Sat Feb 24, 2018 5:52 pm
by Marc Venken
Did you look at this ? Seems to work for Xbrowse
Compile in samples
Code: Select all | Expand
#include "FiveWin.ch"
#include "RichEdit.ch"
function Main()
local cTitle:="Test"
local cResult, oMemo
Public cShowstr:=""
Public oDlg
REQUEST DBFCDX
USE clients via "DBFCDX" NEW
DEFINE FONT oFont NAME "Courier New" SIZE 8,15
DEFINE FONT oBold NAME "Courier New" BOLD SIZE 8,15
DEFINE DIALOG oDlg FROM 5,10 TO 50, 200 font oFont TITLE "Test Color"
@ 10, 10 XBROWSE oBrw OF oDlg ;
SIZE 400, 200 PIXEL ;
COLUMNS 'Name', 'Adress', 'Notes' ;
ALIAS 'CLIENTS' NOBORDER
WITH OBJECT oBrw
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS
:bChange := { || oSay:refresh(),showmemo() }
:CreateFromCode()
END
@ 10,460 SAY oSay PROMPT clients->notes SIZE 200,200 PIXEL OF oDlg COLOR CLR_BLACK update //TRANSPARENT
ACTIVATE DIALOG oDlg CENTERED
close all
Return nil
function showmemo()
Local cStr:=""
local cChange:= "FiveWin" // Word that we will look for
local cInto:= "\cf2 FiveWin \cf1" // Put Word in Color
cText = alltrim(clients->notes)
cStr += "{\rtf1\ansi\deff0"
cStr += "{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}"
cstr = cStr + cText
cStr += "}"
cShowStr = StrTran( cStr, cChange, cInto ) // --> "Harbour Power"
hDLL = LoadLibrary( 'riched20.dll' )
@ 250,900 RICHEDIT oMemo VAR cShowstr of oDlg PIXEL SIZE 300,400
return NIL
Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Sat Feb 24, 2018 6:06 pm
by ukoenig
Marc,
thank You I will ckeck it
It is number
4 position of the browser.
All what we need is coloring the filtertext inside the memo
The result importing from the FWH-sample direcory
1085 files and
12 files filtering the keyword
richeditdone in just 5 minutes time
I tested the function but doesn't work
in xbrowse included
:bChange := { || SHOWMEMO(oTCode, ALLTRIM(cTCode), ALLTRIM(cTFilter)), ;
...
...
@ 40, 625 RICHEDIT5 oTCode VAR cTCode OF oDlg SIZE 600, 410 ; // w h
FONT oFont PIXEL HSCROLL // HIGHLIGHT ( bad )
// -----------------
FUNCTION SHOWMEMO(oTCode, cTCode, cTFilter)
LOCAL cStr :="", cChange := cTFilter // Word that we will look for
LOCAL cInto := "\cf2 " + cTFilter + " \cf1" // Put Word in Color
cStr += "{\rtf1\ansi\deff0"
cStr += "{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}"
cstr = cStr + cTCode
cStr += "}"
cShowStr = StrTran( cStr, cChange, cInto )
oTCode:SetText( cShowStr )
RETURN NIL
regards
Uwe

Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Sun Feb 25, 2018 4:43 am
by cnavarro
ukoenig wrote:Cristobal,
printing on multiple pages works but I didn't use pagebreak.
Next I want to show colored keywords.
I think it is not tested showing / refresh a new text on xbrowse row-change.
Adding
HIGHLIGHT is giving a terrible effect :
the complete dialog is < fllckering / refreshed > on row-change and the display slows down.
I think using it on a standalonetext it doesn't matter but not for a fast text-changing with xBrowse.
@ 40, 625 RICHEDIT5 oTCode VAR cTCode OF oDlg SIZE 600, 410 ; // w h
FONT oFont PIXEL HSCROLL
HIGHLIGHT
with my next release I can include the normal and a version with activated highlight
maybe there is another solution possible
NO bad effects using :
Colorize( nStart, nEnd, nColor )regards
Uwe

Please try with this code
Code: Select all | Expand
#include "FiveWin.ch"
#include "RichEdi5.ch"
Static oDlg
Static oBrw
Static oMemo
function Main()
local cTitle:="Test"
local cResult
local oFont, oBold
local oSay
REQUEST DBFCDX
USE clients via "DBFCDX" NEW
DEFINE FONT oFont NAME "Courier New" SIZE 8,15
DEFINE FONT oBold NAME "Courier New" BOLD SIZE 8,15
DEFINE DIALOG oDlg FROM 5,10 TO 50, 170 font oFont TITLE "Test Color"
@ 10, 10 XBROWSE oBrw OF oDlg ;
SIZE 350, 200 PIXEL ;
COLUMNS 'Name', 'Adress', 'Notes' ;
ALIAS 'CLIENTS' NOBORDER
WITH OBJECT oBrw
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } }
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS
:bChange := { || oSay:refresh(),showmemo() }
:CreateFromCode()
END
@ 10,370 SAY oSay PROMPT clients->notes SIZE 200, 80 PIXEL OF oDlg COLOR CLR_BLACK update //TRANSPARENT
ACTIVATE DIALOG oDlg CENTERED ON INIT showmemo()
close all
Return nil
function showmemo()
Local cStr := ""
local cChange := "FiveWin" // Word that we will look for
local cInto := "\highlight1 FiveWin \highlight0" // Put Word in Color
local cText
local cVar := ""
cText := clients->notes
cStr += "{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang3082{\fonttbl{\f0\fnil\fcharset0 Tahoma;}}"
cStr += "{\colortbl ;\red255\green0\blue0;\red0\green0\blue0;\red128\green64\blue64;\red0\green0\blue128;}"
cStr += "\viewkind4\uc1"
cStr += "\pard\fs20" + if( Empty( cText ), " ", cText )
cStr += "}"
cStr := StrTran( cStr, cChange, cInto )
if hb_Isnil( oMemo )
@ 180,740 RICHEDIT5 oMemo VAR cVar of oDlg PIXEL SIZE 450, 400 HIGHLIGHT
endif
oMemo:LoadRTF( cStr, .F. )
return NIL
Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Sun Feb 25, 2018 9:39 am
by ukoenig
Cristobal ,
thank You very much.
With these changes it looks much better now
It will be next on my todolist.
I would like to add a button to show the sample from the memofield
in fullscreen-mode with a editor.
Just using wordpad or do You have a better idea ?
regards
Uwe

Re: A sample to print with REPrintBox5 a memo on two pages ?
Posted: Sun Feb 25, 2018 10:25 am
by Marc Venken
Uwe,
Maybe a launce for a ceartin application like :
c:\multi\multiedit sample.prg (from browse) ?
Ofcource, a copy paste from a other solution will work also ))
Just a idea.