>I use the code below a method called Printit, I can't remember wherw I got it but it works. oleRTF being the control and oleTextRTF being one of it's properties. oleRTF is bound to a form property called Thisform.cText which is waht I use with StrToFile() for saving etc.
>Cheers
>John
>
THis can be simplified a lot by using CLSHEAP
>toRTF="Thisform.oleRTF"
>tcDoc="Thisform.oleRTF.textRTF"
>*-----------------------------------------------
>* Declare some DLLs
>*-----------------------------------------------
>Declare Integer StartDoc in Win32Api ;
>Integer, String
>Declare Integer StartPage in Win32Api integer
>Declare integer EndPage in Win32Api integer
>Declare integer EndDoc in Win32Api integer
>Declare Integer CreateDC in Win32Api ;
>String, String, Integer, Integer
>Declare Integer DeleteDC in Win32Api Integer
>Declare Integer HeapCreate in Win32Api ;
>Integer, Integer, Integer
>Declare Integer HeapDestroy in Win32Api Integer
>Declare Integer HeapAlloc in Win32Api ;
>Integer, Integer, Integer
>Declare Integer HeapFree in Win32APi ;
>Integer, Integer, Integer
>Declare lstrcpy in Win32Api Integer, String
>
>*-----------------------------------------------
>* Choose a printer
>*-----------------------------------------------
>Local lcPrinter
>If PCount() < 2
>lcPrinter = GetPrinter()
>Else
>lcPrinter = tcPrinter
>Endif
>*-----------------------------------------------
>* Print
>*-----------------------------------------------
>Local lnHeap, lnDoc, lcStruct, lnHDC
>If not Empty( lcPrinter )
>lnHDC = CreateDC("WINSPOOL",lcPrinter,0,0)
>lnHeap = HeapCreate(0, 8192, 8192)
>lnDoc = HeapAlloc( lnHeap, 0, Len(tcDoc)+1 )
>lstrcpy( lnDoc, tcDoc )
>lcStruct = ToInt(12)+ToInt(lnDoc)+ToInt(0)
>StartDoc( lnHDC, lcStruct )
>StartPage( lnHDC )
>Thisform.oleRTF.SelPrint( lnHDC )
>EndPage( lnHDC )
>EndDoc( lnHDC )
>DeleteDC( lnHDC )
>HeapFree(lnHeap, 0, lnDoc)
>HeapDestroy(lnHeap)
>Endif
SET CLASSLIB TO CLSHEAP ADDITIVE
oHeap = CREATEOBJ('Heap')
toRTF="Thisform.oleRTF"
tcDoc="Thisform.oleRTF.textRTF"
Declare Integer StartDoc in Win32Api ;
Integer, String
Declare Integer StartPage in Win32Api integer
Declare integer EndPage in Win32Api integer
Declare integer EndDoc in Win32Api integer
Declare Integer CreateDC in Win32Api ;
String, String, Integer, Integer
Declare Integer DeleteDC in Win32Api Integer
Local lcPrinter
If PCount() < 2
lcPrinter = GetPrinter()
Else
lcPrinter = tcPrinter
Endif
Local lnHeap, lnDoc, lcStruct, lnHDC
If not Empty( lcPrinter )
lnHDC = CreateDC("WINSPOOL",lcPrinter,0,0)
lnDoc = HeapAllocString(tcDoc)
=StartDoc( lnHDC, DWORDToNum(12)+DWORDToNum(lnDoc)+DWORDToNum(0) )
=StartPage( lnHDC )
Thisform.oleRTF.SelPrint( lnHDC )
=EndPage( lnHDC )
=EndDoc( lnHDC )
=DeleteDC( lnHDC )
oHeap = NULL
Endif
The RTF control has a couple of properties that might be useful; the TextRTF property contains the control's content, RTF embedded codes and all, SelRTF contains the currently-selected RTF text. You can examine the RTF control in detail through the component gallery.