修复跨页表格出现空白单元格
This commit is contained in:
parent
9886040fa9
commit
0417669eb2
|
|
@ -10,9 +10,11 @@ public
|
|||
function FirstValidTSPage(): TSPage;
|
||||
function SetVAlign();
|
||||
function IsReComputeByCantSplit(): boolean;
|
||||
function IfRemoveEmptyRectangle(): boolean;
|
||||
|
||||
public
|
||||
VMerge;
|
||||
RemoveFlag;
|
||||
|
||||
private
|
||||
[weakref]parent_: TSPdfTableRange;
|
||||
|
|
@ -105,7 +107,7 @@ function TSPdfCellRange.Do();override;
|
|||
begin
|
||||
for _,region in region_array_ do
|
||||
begin
|
||||
// if length(region.RangeArr) = 0 then continue;
|
||||
if _ = 0 and {self.}RemoveFlag then continue;
|
||||
region.RectangleRange.Do();
|
||||
for _,range in region.RangeArr do
|
||||
range.Do();
|
||||
|
|
@ -218,3 +220,9 @@ begin
|
|||
if {self.}VMerge then return false;
|
||||
return tr_pr_.CantSplit and page_ <> {self.}TSPage;
|
||||
end;
|
||||
|
||||
function TSPdfCellRange.IfRemoveEmptyRectangle(): boolean;
|
||||
begin
|
||||
if length(region_array_) < 2 then return false;
|
||||
return length(region_array_[0].RangeArr) ? false : true;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -55,8 +55,26 @@ end;
|
|||
function TSPdfTableRange.Do();override;
|
||||
begin
|
||||
for _,row in cell_range_array_ do
|
||||
begin
|
||||
flag := nil;
|
||||
for _,range in row do
|
||||
if ifObj(range) then range.Do();
|
||||
begin
|
||||
if ifnil(flag) and ifObj(range) then flag := range.IfRemoveEmptyRectangle();
|
||||
if not ifObj(range) or flag <> range.IfRemoveEmptyRectangle() then
|
||||
begin
|
||||
flag := false;
|
||||
break;
|
||||
end
|
||||
end
|
||||
for _,range in row do
|
||||
begin
|
||||
if ifObj(range) then
|
||||
begin
|
||||
range.RemoveFlag := flag;
|
||||
range.Do();
|
||||
end
|
||||
end
|
||||
end
|
||||
end;
|
||||
|
||||
function TSPdfTableRange.GetCellMatrix(grid_cols: array of GridColUnitDecorator);
|
||||
|
|
|
|||
Loading…
Reference in New Issue