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