
I will deploy on test sites tomorow.
Code: Select all
procedure TppDrawRichView.DrawTo(lCanvas: TCanvas; ADrawRect: TRect);
var
lHelper: TRVReportHelper;
lRVStyle: TRVStyle;
PPI: Integer;
begin
lHelper := TRVReportHelperRef.Create(nil);
lRVStyle := TRVStyle.Create(Nil);
try
if not TPPRICHVIEWUSEPRINTERRES then
lRVStyle.TextStyles.PixelsPerInch := TPPRICHVIEWREFCANVASPPI;
SetHelperDefaults(lHelper);
lHelper.RichView.Style := lRVStyle;
FStream.Position := 0;
lHelper.RichView.LoadRVFFromStream(FStream);
lHelper.Init(FCanvasRef, FPageWidth);
lHelper.FormatNextPage(FPageHeight * 2);
if Transparent then begin
lCanvas.CopyMode := cmSrcAnd;
end else begin
lCanvas.CopyMode := cmSrcCopy;
lCanvas.Brush.Style := bsSolid;
lCanvas.Brush.Color := FColor;
lCanvas.FillRect(ADrawRect);
end;
lCanvas.Brush.Style := bsClear;
IntersectClipRect(lCanvas.Handle, ADrawRect.Left, ADrawRect.Top, ADrawRect.Right, ADrawRect.Bottom);
SetMapMode(lCanvas.Handle, MM_ANISOTROPIC);
SetWindowExtEx(lCanvas.Handle, FPageWidth, FPageHeight, Nil);
PPI := lCanvas.Font.PixelsPerInch;
if not TPPRICHVIEWUSEPRINTERRES then
lCanvas.Font.PixelsPerInch := TPPRICHVIEWREFCANVASPPI
[color=blue]else
lCanvas.Font.PixelsPerInch := FCanvasRef.Font.PixelsPerInch;[/color]
SetViewportExtEx(lCanvas.Handle, ADrawRect.Right - ADrawRect.Left, ADrawRect.Bottom - ADrawRect.Top, Nil);
SetViewportOrgEx(lCanvas.Handle, ADrawRect.Left, ADrawRect.Top, Nil);
lHelper.TransparentBackground := FTransparent;
if not Transparent then
lHelper.RichView.Color := Color;
lHelper.DrawPage(1, lCanvas, True, FPageHeight);
lCanvas.Font.PixelsPerInch := PPI;
SetMapMode(lCanvas.Handle, MM_TEXT);
SetViewportOrgEx(lCanvas.Handle, 0, 0, Nil);
SelectClipRgn(lCanvas.Handle, 0);
finally
lHelper.Free;
lRVStyle.Free;
end;
end;
Code: Select all
FHyperlinkStyle := TFontInfo.Create(nil);
FHyperlinkStyle.Style := FHyperlinkStyle.Style + [fsUnderline];
FHyperlinkStyle.Color := clBlue;
FHyperlinkStyle.Jump := True;
FHyperlinkStyle.JumpCursor := crHandPoint;
FHyperlinkStyle.HoverColor := clWhite;
FHyperlinkStyle.HoverBackColor := clBlue;
FHyperlinkStyle.Protection := [rvprModifyProtect, rvprStyleProtect, rvprDoNotAutoSwitch];
Style.TextStyles.Add;
NewStyleNo := Style.TextStyles.Count - 1;
Style.TextStyles[NewStyleNo].Assign(FHyperlinkStyle);
Style.TextStyles[NewStyleNo].Standard := False;
Code: Select all
pi.Assign(Style.ParaStyles[GetItemPara(i)]);
pi.LeftIndent := ListLevel.MarkerIndent;
NewStyleNo := Style.ParaStyles.FindSuchStyle(0, pi, RVAllParaInfoProperties);
if NewStyleNo = -1 then begin
Style.ParaStyles.Add;
NewStyleNo := Style.ParaStyles.Count-1;
Style.ParaStyles[NewStyleNo].Assign(pi);
Style.ParaStyles[NewStyleNo].Standard := False;
end;
GetItem(i).ParaNo := NewStyleNo;
CurParaStyleNo := NewStyleNo;
Well, from your demo my documents are printed wonderfully well. But I couldn't find, what can make it work so bad from my inherited classSergey Tkachenko wrote:Does the problem persist if you save document created by your program and load it in demo?
If yes, please send this document to me.
Code: Select all
PChar(TCustomRVItemInfo(rv.RVData.Items.Objects[5]).Tag)
It's sadly - but "no" for a two times.Sergey Tkachenko wrote:May be data was converted to wrong styles BEFORE calling AssignSource?
May be you loaded/saved document using trichview that is not "allow adding styles dynamically" mode?