查找使用eDocEngine生成的表的结尾

时间:2011-07-19 13:03:19

标签: delphi pdf-generation

我们有几个报告使用Gnostice's eDocEngine将单独的表输出到PDF中,如果数据正确地适合单元格,这些报告都可以正常工作。

问题是当数据包装时它会改变行高,使表更大。这意味着当我们输出下一个表时,它会重叠并破坏报告输出。目前我们使用变通方法,例如测试字符串长度,以查看是否将换行或向下一个表添加一个常量,添加一个空格,以防顶部表增长一点。

我希望能够做的是在调用EndTable获取表格高度或底部以便我可以相应地调整后续表格。

我们正在使用Delphi 2007,eDocEngine 2.5

1 个答案:

答案 0 :(得分:0)

Type TExposeProtectedeDocEngine = Class (TgtCustomDocumentEngine)
    public
        function GetTableBottom: Double;
        function GetTableTop: Double;
        Function GetTableHeight: Double;
End;

{ TExposeProtectedeDocEngine }

function TExposeProtectedeDocEngine.GetTableTop: Double;
begin
    if Assigned(FTableItem) then
    begin
        Result := FTableItem.Y;
    end
    else
        Result := 0;
end;

function TExposeProtectedeDocEngine.GetTableHeight: Double;
var
  i: Integer;
begin
    Result := 0;
    if Assigned(FTableItem) then
    begin
        for i := 0 to FTableItem.RowHeights.Count - 1 do
            Result := Result + Int64(FTableItem.RowHeights[i]);
    end;
end;

function TExposeProtectedeDocEngine.GetTableBottom: Double;
begin
    Result := GetTableHeight + GetTableTop;
end;

function GetPreviousTableBottom(Engine : TgtCustomDocumentEngine): Double;
begin
    Result := TExposeProtectedeDocEngine(Engine).GetTableBottom;
end;