报表上的打印字段对齐未对齐

时间:2014-04-29 14:27:07

标签: delphi devexpress delphi-xe2 pascal

我有以下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,如果重要的话。

由于

2 个答案:

答案 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字体,但就我所关注的情况而言,这是一个丑陋的解决方法,尤其是需要遵守标准化字体的情况。