From f2517821861d8051c89592bfebf4afbeb6334ce5 Mon Sep 17 00:00:00 2001 From: csh Date: Mon, 25 Nov 2024 09:54:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E8=BE=B9=E6=A1=86=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- range/Advanced/TSPdfCellRange.tsf | 33 ++++++++++++++++++++----------- range/basic/TSPdfBordersRange.tsf | 17 ++++++++++++++-- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/range/Advanced/TSPdfCellRange.tsf b/range/Advanced/TSPdfCellRange.tsf index 2032d72..b11de3f 100644 --- a/range/Advanced/TSPdfCellRange.tsf +++ b/range/Advanced/TSPdfCellRange.tsf @@ -268,22 +268,26 @@ begin begin if tbl_pr_.TblBorders.Top then begin - tc_pr_unit_decorator_.TcBorders.Top.Copy(tbl_pr_.TblBorders.Top); + if not tc_pr_unit_decorator_.TcBorders.Top then + tc_pr_unit_decorator_.TcBorders.Top.Copy(tbl_pr_.TblBorders.Top); range.Top := true; end if tbl_pr_.TblBorders.InsideH and {self.}VMerge <> parent_.Rows()-1 then begin - tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH); + if not tc_pr_unit_decorator_.TcBorders.Bottom then + tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH); range.Bottom := true; end if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then begin - tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); + if not tc_pr_unit_decorator_.TcBorders.Right then + tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); range.Right := true; end if tbl_pr_.TblBorders.Bottom and {self.}VMerge = parent_.Rows()-1 then begin - tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); + if not tc_pr_unit_decorator_.TcBorders.Bottom then + tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); range.Bottom := true; end end @@ -291,29 +295,34 @@ begin begin if tbl_pr_.TblBorders.Bottom then begin - tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); + if not tc_pr_unit_decorator_.TcBorders.Bottom then + tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); range.Bottom := true; end if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then begin - tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); + if not tc_pr_unit_decorator_.TcBorders.Right then + tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); range.Right := true; end end else begin if tbl_pr_.TblBorders.Bottom and {self.}VMerge = parent_.Rows()-1 then begin - tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); + if not tc_pr_unit_decorator_.TcBorders.Bottom then + tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); range.Bottom := true; end if tbl_pr_.TblBorders.InsideH and {self.}VMerge <> parent_.Rows()-1 then begin - tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH); + if not tc_pr_unit_decorator_.TcBorders.Bottom then + tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH); range.Bottom := true; end if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then begin - tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); + if not tc_pr_unit_decorator_.TcBorders.Right then + tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); range.Right := true; end end @@ -322,7 +331,8 @@ begin begin if tbl_pr_.TblBorders.Left then begin - tc_pr_unit_decorator_.TcBorders.Left.Copy(tbl_pr_.TblBorders.Left); + if not tc_pr_unit_decorator_.TcBorders.Left then + tc_pr_unit_decorator_.TcBorders.Left.Copy(tbl_pr_.TblBorders.Left); range.Left := true; end end @@ -330,7 +340,8 @@ begin begin if tbl_pr_.TblBorders.Right then begin - tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.Right); + if not tc_pr_unit_decorator_.TcBorders.Right then + tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.Right); range.Right := true; end end diff --git a/range/basic/TSPdfBordersRange.tsf b/range/basic/TSPdfBordersRange.tsf index 8b3a7cf..8732b14 100644 --- a/range/basic/TSPdfBordersRange.tsf +++ b/range/basic/TSPdfBordersRange.tsf @@ -28,16 +28,29 @@ end; function TSPdfBordersRange.Do();override; begin // println("Left = {}, Top = {}, Right = {}, Bottom = {}, Tl2Br = {}, Tr2Bl = {}", Left, Top, Right, Bottom, Tl2Br, Tr2Bl); + borders := {self.}TcPr.TcBorders; if {self.}TcPr.Shd.Fill and {self.}TcPr.Shd.Fill <> "auto" then begin [r, g, b] := TSColorToolKit.HexToRGB({self.}TcPr.Shd.Fill); {self.}TSPage.PdfPage.SetRGBFill(r/255, g/255, b/255); - {self.}TSPage.PdfPage.Rectangle({self.}EndX, {self.}EndY - {self.}DynamicHeight, {self.}Width, {self.}DynamicHeight); + x := {self.}EndX; + y := {self.}EndY - {self.}DynamicHeight; + w := {self.}Width; + h := {self.}DynamicHeight; + tmp := borders.Left.Sz ? borders.Left.Sz / 2 : 0.25; + x += tmp; + w -= tmp; + w -= borders.Right.Sz ? borders.Right.Sz / 2 : 0.25; + tmp := borders.Bottom.Sz ? borders.Bottom.Sz / 2 : 0.25; + y += tmp; + h -= tmp; + h -= borders.Top.Sz ? borders.Top.Sz / 2 : 0.25; + + {self.}TSPage.PdfPage.Rectangle(x, y, w, h); {self.}TSPage.PdfPage.Fill(); {self.}TSPage.PdfPage.SetRGBFill(0, 0, 0); {self.}Left := true; end - borders := {self.}TcPr.TcBorders; if {self.}Left then {self.}DrawLine(borders.Left, {self.}EndX, {self.}EndY, {self.}EndX, {self.}EndY - {self.}DynamicHeight); if {self.}Top then