我有一个定义页面设置的 RTF 文档:
(...}\paperw16840\paperh11907\margl794\margt709\margr794\margb983\viewkind4\\uc1\trowd\....)
在我的应用程序中,我使用 aTRichEdit
来显示文档。
TRichEdit
有 aTPanel
作为它的,Parent
并且正在使用Align=alClient
and AlignWithMargins=True
。
我将面板设置Width
为16840 * PixelsPerInch/1440
(1123 像素),我看到它等于页面的宽度,如 MSWord 中所示(比例 = 100%)。
将 RichEdit 的值设置Margins
为794 * PixelsPerInch/1440
(53 像素),Width
RichEdit 的值小于它必须的值,或者边距大于它们必须的值(与 MSWord 相比)。
没有边框,没有其他边距,除了我在代码中设置的:
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;
的值paperW
给出了正确的面板宽度(与 MSWord 相比),但 和 的值Lm
给出了Rm
更大的边距,因此 RichEdit 变得更窄。
如何计算正确的边距以使 RichEdit 具有与 MSWord 相同的布局?
这可能会有所帮助。我注意到:
TRichedit
在左侧留出大约 10 像素的空间(在此空间之后开始渲染)。除了 margins.left 之外,是否有可以解决此问题的参数?TRichedit
不会呈现任何比其宽度更宽的表格(MSword 这样做会调整边距)。因此,TRichedit 翻译了其边缘之外的所有内容。
上面的结果是左边距看起来比必须的要宽,如果它是卷绕器,它会截断表格的右侧。