Проблемы с TfrRichView

отредактировано 16:13 Раздел: FastReport 2.xx VCL
1.При печати отчета содержащего frRichView со шрифтом Times New Roman 9 и менее внизу страницы остается пустая область, хотя на экране страница заполнена полностью . Как побороть?
2.Когда ожидать у frRichView выравнивания по ширине (Justify)?

Комментарии

  • отредактировано 16:13
    2) не скоро
    1) попробуйте изменить FR_Rich.pas:

    procedure TfrRichView.ShowRich(Render: Boolean);
    var
    Range: TFormatRange;
    LogX, LogY, mm: Integer;
    EMF: TMetafile;
    EMFCanvas: TMetafileCanvas;
    BMP: TBitmap;
    re: TRichEdit;
    begin
    if Render then
    re := RichEdit else
    re := SRichEdit;
    if FillColor = clNone then
    re.Color := clWhite else
    re.Color := FillColor;
    FillChar(Range, SizeOf(TFormatRange), 0);
    with Range do
    begin
    if Render then
    hdc := Canvas.Handle else
    hdc := GetDC(0);
    if Render then
    { if IsPrinting then
    begin
    if FillColor = clNone then
    SetBkMode(hdc, Transparent);
    LogX := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX);
    LogY := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY);
    rc := Rect(DRect.Left * 1440 div LogX, DRect.Top * 1440 div LogY,
    DRect.Right * 1440 div LogX, DRect.Bottom * 1440 div LogY);
    end
    else}
    begin
    LogX := Screen.PixelsPerInch;
    LogY := LogX;
    rc := Rect(0, 0, Round((SaveDX - SaveGX * 2) * 1440 / LogX),
    Round((SaveDY - SaveGY * 2) * 1440 / LogY));

    EMF := TMetafile.Create;
    EMF.Width := SaveDX - SaveGX * 2;
    EMF.Height := SaveDY - SaveGY * 2;
    EMFCanvas := TMetafileCanvas.Create(EMF, 0);
    EMFCanvas.Brush.Style := bsClear;
    hdc := EMFCanvas.Handle;
    end
    else
    begin
    LogX := Screen.PixelsPerInch;
    LogY := LogX;
    rc := Rect(0, 0, Round((DX - GapX * 2) * 1440 / LogX),
    Round((DY - GapY * 2) * 1440 / LogY));
    end;
    hdcTarget := hdc;
    rcPage := rc;
    LastChar := CharFrom;
    chrg.cpMax := -1;
    chrg.cpMin := LastChar;
    mm := SetMapMode(hdc, MM_TEXT);
    LastChar := re.Perform(EM_FORMATRANGE, Integer(Render), Integer(@Range));
    SetMapMode(hdc, mm);
    end;
    re.Perform(EM_FORMATRANGE, 0, 0);
    if not Render then
    ReleaseDC(0, Range.hdc)
    else //if not IsPrinting then
    begin
    EMFCanvas.Free;
    if DocMode <> dmDesigning then
    Canvas.StretchDraw(DRect, EMF)
    else
    begin
    BMP := TBitmap.Create;
    BMP.Width := DRect.Right - DRect.Left + 1;
    BMP.Height := DRect.Bottom - DRect.Top + 1;
    BMP.Canvas.StretchDraw(Rect(0, 0, BMP.Width, BMP.Height), EMF);
    Canvas.Draw(DRect.Left, DRect.Top, BMP);
    BMP.Free;
    end;
    EMF.Free;
    end;
    end;

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.