Delphi TRichEdit页面设置

时间:2016-12-23 07:21:48

标签: delphi trichedit page-setup

我有一个定义页面设置的RTF文档:

(...}\paperw16840\paperh11907\margl794\margt709\margr794\margb983\viewkind4\\uc1\trowd\....)

在我的应用中,我使用TRichEdit来显示文档。

TRichEdit的{​​{1}}为TPanel,正在使用ParentAlign=alClient

我将Panel AlignWithMargins=True设置为Width(1123像素),我看到它等于页面的宽度,如MSWord所示(比例= 100%) )。

将RichEdit 16840 * PixelsPerInch/1440设置为Margins(53像素),RichEdit的794 * PixelsPerInch/1440小于它必须的值,或者边距大于它们必须的(与MSWord相比)。

没有边框,没有其他边距,除了我在代码中设置的内容:

Width

function pixelsOf(prop : string) : integer;
var
  i,j,l : integer;
begin
  result := -1;
  l := length(prop);
  i := pos(prop,s);
  if i > 0 then begin
    j := i+l;
    while s[j] in ['0'..'9'] do inc(j);
    result := round(strToIntDef(copy(s,i+l,j-i-l),-1)*PixelsPerInch/1440);
  end;
end;

paperW := pixelsOf('\paperw'); // pixelsOf() calcs twips*pixelsPerInch/1440 PanelPreview.Width := paperW; Lm := pixelsOf('\margl'); RichEdit1.Margins.Left := Lm; Rm := pixelsOf('\margr'); RichEdit1.Margins.Right := Rm; Tm := pixelsOf('\margt'); RichEdit1.Margins.Top := Tm; 的值给出了正确的Panel宽度(与MSWord相比),但paperWLm的值提供了更大的边距,因此RichEdit变得更窄。

如何计算正确的边距,以便RichEdit与MSWord具有相同的布局?

这可能会有所帮助。我注意到了:

  1. Rm在左侧留下大约10个像素的空间(渲染在此空间之后开始)。是否有一个参数可以解决除margins.left以外的其他问题?
  2. TRichedit不会将任何表格宽度超过其宽度(MSword可以 这调整了边距)。因此,TRichedit将所有内容都转移 在其边缘之外。
  3. 上面的结果是左边距似乎比必须宽,如果它是卷绕器,则截断表的右边。

    查看图片enter image description here

0 个答案:

没有答案