simple problem (i think)

General TRichView support forum. Please post your questions here
Post Reply
ibr_ozdemir
Posts: 5
Joined: Wed Jan 04, 2006 11:13 am

simple problem (i think)

Post by ibr_ozdemir »

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.
Sergey Tkachenko
Site Admin
Posts: 17310
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

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.

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;
Post Reply