Hi
I have problems with printing document. Simply, how can i get a print what RichView shows (i want to page with size value like printer settings, but its changing with richview width).
maybe i couldnt that because its very simple.
simple problem (i think)
-
- Site Admin
- Posts: 17559
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
WYSIWYG editing is not supported.
You can see pages as they will be printed only in TRVPrintPreview component, not in TRichView or TRichViewEdit.
You can set text wrapping width to the value close to the page width, but it will give you only approximate results.
You can see pages as they will be printed only in TRVPrintPreview component, not in TRichView or TRichViewEdit.
You can set text wrapping width to the value close to the page width, but it will give you only approximate results.
Code: Select all
var w, h: Integer;
// rvoClientTextWidth must be excluded from RichViewEdit1.Options.
GetPageSize(RVPrint1, w,h);
RichViewEdit1.MaxTextWidth :=
w-RichViewEdit1.LeftMargin-RichViewEdit1.RightMargin;
RichViewEdit1.Format;
procedure GetPageSize(RVPrint: TRVPrint;
var Width, Height: Integer);
var DC: HDC;
phoX, phoY, phW, phH, lpy, lpx, LM, TM, RM, BM: Integer;
begin
DC := RV_GetPrinterDC; // from PtblRV unit
Width := GetDeviceCaps(DC, HORZRES);
Height := GetDeviceCaps(DC, VERTRES);
lpy := GetDeviceCaps(DC, LOGPIXELSY);
lpx := GetDeviceCaps(DC, LOGPIXELSX);
phoX := GetDeviceCaps(DC, PHYSICALOFFSETX);
phoY := GetDeviceCaps(DC, PHYSICALOFFSETY);
phW := GetDeviceCaps(DC, PHYSICALWIDTH);
phH := GetDeviceCaps(DC, PHYSICALHEIGHT);
LM := MulDiv(RVPrint.LeftMarginMM, 5*lpx, 127)- phoX;
TM := MulDiv(RVPrint.TopMarginMM, 5*lpy, 127)- phoY;
RM := MulDiv(RVPrint.RightMarginMM, 5*lpx, 127)- (phW-(phoX+Width));
BM := MulDiv(RVPrint.BottomMarginMM, 5*lpy, 127)- (phH-(phoY+Height));
if LM<0 then LM := 0;
if TM<0 then TM := 0;
if RM<0 then RM := 0;
if BM<0 then BM := 0;
dec(Width, LM+RM);
dec(Height, TM+BM);
DeleteDC(DC);
DC := GetDC(0);
Width := MulDiv(Width, GetDeviceCaps(DC, LOGPIXELSX), lpx);
Height := MulDiv(Height, GetDeviceCaps(DC, LOGPIXELSY), lpy);
ReleaseDC(0, DC);
end;