我有以下PrintValue代码,它在报告中打印一行(tbasedxreportlink)。它在标题中的一行打印两个字段,标题和m。问题是m从不直线排列多行。它总是打印在整个地方。
如何让它与右边对齐,甚至打印十进制对齐。
印刷数据
Caption One 4,685.33
Caption 2 4.99
Caption three 74,586.88
Caption 4 58.66
代码
procedure PrintValue(Caption, Value: string);
var
m: string;
s: string;
begin
m := FormatFloat(',0.00 ;(,0.00);0.00 ', StrToFloat(Value));
s := Format('%-24s %15s', [Caption, m]);
AReportLink.PrinterPage.PageHeader.LeftTitle.Add(s);
end;
报告中使用的字体是Segoe UI,如果重要的话。
由于
答案 0 :(得分:0)
最简单的方法是使用等宽(固定宽度)字体,例如Courier New或Lucida Console
答案 1 :(得分:0)
我发现没有简单的方法来格式化字符串以获得所需的效果。主要原因是使用LeftTitle,CenterTitle或RightTitle'盒子的简单性。 - 它们只允许插入简单的字符串文本。没有什么可以不提及True Type Font问题。
为了解决这个问题,我在屏幕上添加了一个tPanel,并删除了我需要在网格打印上显示的所有屏幕字段。我添加了一个tdxCustomContainerReportLink来链接到该面板。然后我使用tdxCompositionReportLink将网格和tdxCustomContainerReportLink(面板)作为单个项目打印,当按下打印按钮时,通过覆盖当前链接代码:
procedure TFrmViewAcct.dxBarBtnPrintClick(Sender: TObject);
begin
dxCmpntPrtrDetail.CurrentLink := dxCmpntPrtrDetailLink2;
inherited;
end;
因此,它打印网格信息,然后打印面板上的内容。问题解决了,你可以看到这个解决方案如何灵活。
是的,我可以轻松地更改为True Type字体,但就我所关注的情况而言,这是一个丑陋的解决方法,尤其是需要遵守标准化字体的情况。