range.font and range.border

This commit is contained in:
csh
2023-11-17 16:56:00 +08:00
parent 7283b7ac28
commit 3781bc96e7
32 changed files with 5752 additions and 543 deletions
+445
View File
@@ -0,0 +1,445 @@
Type TSDocxBorder = Class(TSVbaBase)
Uses TSDocxEnumerations;
public
Function Init(borders);
protected
border_;
color_;
color_index_;
public
property ArtStyle read ReadArtStyle write WriteArtStyle;
property ArtWidth read ReadArtWidth write WriteArtWidth;
property Color read ReadColor write WriteColor;
property ColorIndex read ReadColorIndex write WriteColorIndex;
property Inside read ReadInside;
property LineStyle read ReadLineStyle write WriteLineStyle;
property LineWidth read ReadLineWidth write WriteLineWidth;
property Visible read ReadVisible write WriteVisible;
Function WriteVisible(value);virtual;
Function ReadVisible();virtual;
Function WriteLineWidth(value);virtual;
Function ReadLineWidth();virtual;
Function WriteLineStyle(value);virtual;
Function ReadLineStyle();virtual;
Function ReadInside();virtual; // don't complete
Function WriteColorIndex(value);virtual;
Function ReadColorIndex();virtual;
Function WriteColor(value);virtual;
Function ReadColor();virtual;
Function WriteArtWidth(value);virtual;
Function ReadArtWidth();virtual;
Function WriteArtStyle(value);virtual;
Function ReadArtStyle();virtual;
End;
// ============== 实现 ================= //
Function TSDocxBorder.Init(border);
Begin
border_ := border;
color_index_ := TSWdColorIndex();
color_ := TSWdColor();
End;
// property
Function TSDocxBorder.WriteArtStyle(value);virtual;
Begin
case value of
TSDocxEnumerations.wdArtApples():
border_.Val := "apples";
// TSDocxEnumerations.wdArtArchedScallops():
// TSDocxEnumerations.wdArtBabyPacifier():
// TSDocxEnumerations.wdArtBabyRattle():
// TSDocxEnumerations.wdArtBalloons3Colors():
// TSDocxEnumerations.wdArtBalloonsHotAir():
// TSDocxEnumerations.wdArtBasicBlackDashes():
// TSDocxEnumerations.wdArtBasicBlackDots():
// TSDocxEnumerations.wdArtBasicBlackSquares():
// TSDocxEnumerations.wdArtBasicThinLines():
// TSDocxEnumerations.wdArtBasicWhiteDashes():
// TSDocxEnumerations.wdArtBasicWhiteDots():
// TSDocxEnumerations.wdArtBasicWhiteSquares():
// TSDocxEnumerations.wdArtBasicWideInline():
// TSDocxEnumerations.wdArtBasicWideMidline():
// TSDocxEnumerations.wdArtBasicWideOutline():
// TSDocxEnumerations.wdArtBats():
// TSDocxEnumerations.wdArtBirds():
// TSDocxEnumerations.wdArtBirdsFlight():
// TSDocxEnumerations.wdArtCabins():
// TSDocxEnumerations.wdArtCakeSlice():
// TSDocxEnumerations.wdArtCandyCorn():
// TSDocxEnumerations.wdArtCelticKnotwork():
// TSDocxEnumerations.wdArtCertificateBanner():
// TSDocxEnumerations.wdArtChainLink():
// TSDocxEnumerations.wdArtChampagneBottle():
// TSDocxEnumerations.wdArtCheckedBarBlack():
// TSDocxEnumerations.wdArtCheckedBarColor():
// TSDocxEnumerations.wdArtCheckered():
// TSDocxEnumerations.wdArtChristmasTree():
// TSDocxEnumerations.wdArtCirclesLines():
// TSDocxEnumerations.wdArtCirclesRectangles():
// TSDocxEnumerations.wdArtClassicalWave():
// TSDocxEnumerations.wdArtClocks():
// TSDocxEnumerations.wdArtCompass():
// TSDocxEnumerations.wdArtConfetti():
// TSDocxEnumerations.wdArtConfettiGrays():
// TSDocxEnumerations.wdArtConfettiOutline():
// TSDocxEnumerations.wdArtConfettiStreamers():
// TSDocxEnumerations.wdArtConfettiWhite():
// TSDocxEnumerations.wdArtCornerTriangles():
// TSDocxEnumerations.wdArtCouponCutoutDashes():
// TSDocxEnumerations.wdArtCouponCutoutDots():
// TSDocxEnumerations.wdArtCrazyMaze():
// TSDocxEnumerations.wdArtCreaturesButterfly():
// TSDocxEnumerations.wdArtCreaturesFish():
// TSDocxEnumerations.wdArtCreaturesInsects():
// TSDocxEnumerations.wdArtCreaturesLadyBug():
// TSDocxEnumerations.wdArtCrossStitch():
// TSDocxEnumerations.wdArtCup():
// TSDocxEnumerations.wdArtDecoArch():
// TSDocxEnumerations.wdArtDecoArchColor():
// TSDocxEnumerations.wdArtDecoBlocks():
// TSDocxEnumerations.wdArtDiamondsGray():
// TSDocxEnumerations.wdArtDoubleD():
// TSDocxEnumerations.wdArtDoubleDiamonds():
// TSDocxEnumerations.wdArtEarth1():
// TSDocxEnumerations.wdArtEarth2():
// TSDocxEnumerations.wdArtEclipsingSquares1():
// TSDocxEnumerations.wdArtEclipsingSquares2():
// TSDocxEnumerations.wdArtEggsBlack():
// TSDocxEnumerations.wdArtFans():
// TSDocxEnumerations.wdArtFilm():
// TSDocxEnumerations.wdArtFirecrackers():
// TSDocxEnumerations.wdArtFlowersBlockPrint():
// TSDocxEnumerations.wdArtFlowersDaisies():
// TSDocxEnumerations.wdArtFlowersModern1():
// TSDocxEnumerations.wdArtFlowersModern2():
// TSDocxEnumerations.wdArtFlowersPansy():
// TSDocxEnumerations.wdArtFlowersRedRose():
// TSDocxEnumerations.wdArtFlowersRoses():
// TSDocxEnumerations.wdArtFlowersTeacup():
// TSDocxEnumerations.wdArtFlowersTiny():
// TSDocxEnumerations.wdArtGems():
// TSDocxEnumerations.wdArtGingerbreadMan():
// TSDocxEnumerations.wdArtGradient():
// TSDocxEnumerations.wdArtHandmade1():
// TSDocxEnumerations.wdArtHandmade2():
// TSDocxEnumerations.wdArtHeartBalloon():
// TSDocxEnumerations.wdArtHeartGray():
// TSDocxEnumerations.wdArtHearts():
// TSDocxEnumerations.wdArtHeebieJeebies():
// TSDocxEnumerations.wdArtHolly():
// TSDocxEnumerations.wdArtHouseFunky():
// TSDocxEnumerations.wdArtHypnotic():
// TSDocxEnumerations.wdArtIceCreamCones():
// TSDocxEnumerations.wdArtLightBulb():
// TSDocxEnumerations.wdArtLightning1():
// TSDocxEnumerations.wdArtLightning2():
// TSDocxEnumerations.wdArtMapleLeaf():
// TSDocxEnumerations.wdArtMapleMuffins():
// TSDocxEnumerations.wdArtMapPins():
// TSDocxEnumerations.wdArtMarquee():
// TSDocxEnumerations.wdArtMarqueeToothed():
// TSDocxEnumerations.wdArtMoons():
// TSDocxEnumerations.wdArtMosaic():
// TSDocxEnumerations.wdArtMusicNotes():
// TSDocxEnumerations.wdArtNorthwest():
// TSDocxEnumerations.wdArtOvals():
// TSDocxEnumerations.wdArtPackages():
// TSDocxEnumerations.wdArtPalmsBlack():
// TSDocxEnumerations.wdArtPalmsColor():
// TSDocxEnumerations.wdArtPaperClips():
// TSDocxEnumerations.wdArtPapyrus():
// TSDocxEnumerations.wdArtPartyFavor():
// TSDocxEnumerations.wdArtPartyGlass():
// TSDocxEnumerations.wdArtPencils():
// TSDocxEnumerations.wdArtPeople():
// TSDocxEnumerations.wdArtPeopleHats():
// TSDocxEnumerations.wdArtPeopleWaving():
// TSDocxEnumerations.wdArtPoinsettias():
// TSDocxEnumerations.wdArtPostageStamp():
// TSDocxEnumerations.wdArtPumpkin1():
// TSDocxEnumerations.wdArtPushPinNote1():
// TSDocxEnumerations.wdArtPushPinNote2():
// TSDocxEnumerations.wdArtPyramids():
// TSDocxEnumerations.wdArtPyramidsAbove():
// TSDocxEnumerations.wdArtQuadrants():
// TSDocxEnumerations.wdArtRings():
// TSDocxEnumerations.wdArtSafari():
// TSDocxEnumerations.wdArtSawtooth():
// TSDocxEnumerations.wdArtSawtoothGray():
// TSDocxEnumerations.wdArtScaredCat():
// TSDocxEnumerations.wdArtSeattle():
// TSDocxEnumerations.wdArtShadowedSquares():
// TSDocxEnumerations.wdArtSharksTeeth():
// TSDocxEnumerations.wdArtShorebirdTracks():
// TSDocxEnumerations.wdArtSkyrocket():
// TSDocxEnumerations.wdArtSnowflakeFancy():
// TSDocxEnumerations.wdArtSnowflakes():
// TSDocxEnumerations.wdArtSombrero():
// TSDocxEnumerations.wdArtSouthwest():
// TSDocxEnumerations.wdArtStars():
// TSDocxEnumerations.wdArtStars3D():
// TSDocxEnumerations.wdArtStarsBlack():
// TSDocxEnumerations.wdArtStarsShadowed():
// TSDocxEnumerations.wdArtStarsTop():
// TSDocxEnumerations.wdArtSun():
// TSDocxEnumerations.wdArtSwirligig():
// TSDocxEnumerations.wdArtTornPaper():
// TSDocxEnumerations.wdArtTornPaperBlack():
// TSDocxEnumerations.wdArtTrees():
// TSDocxEnumerations.wdArtTriangleParty():
// TSDocxEnumerations.wdArtTriangles():
// TSDocxEnumerations.wdArtTribal1():
// TSDocxEnumerations.wdArtTribal2():
// TSDocxEnumerations.wdArtTribal3():
// TSDocxEnumerations.wdArtTribal4():
// TSDocxEnumerations.wdArtTribal5():
// TSDocxEnumerations.wdArtTribal6():
// TSDocxEnumerations.wdArtTwistedLines1():
// TSDocxEnumerations.wdArtTwistedLines2():
// TSDocxEnumerations.wdArtVine():
// TSDocxEnumerations.wdArtWaveline():
// TSDocxEnumerations.wdArtWeavingAngles():
// TSDocxEnumerations.wdArtWeavingBraid():
// TSDocxEnumerations.wdArtWeavingRibbon():
// TSDocxEnumerations.wdArtWeavingStrips():
// TSDocxEnumerations.wdArtWhiteFlowers():
// TSDocxEnumerations.wdArtWoodwork():
// TSDocxEnumerations.wdArtXIllusions():
// TSDocxEnumerations.wdArtZanyTriangles():
// TSDocxEnumerations.wdArtZigZag():
// TSDocxEnumerations.wdArtZigZagStitch():
end;
border_.Update("first");
End;
Function TSDocxBorder.ReadArtStyle();virtual;
Begin
value := border_.Value("Val");
case value of
"apples": return TSDocxEnumerations.wdArtApples();
end;
End;
Function TSDocxBorder.WriteArtWidth(value);virtual;
Begin
border_.Size := value;
border_.Update("first");
End;
Function TSDocxBorder.ReadArtWidth();virtual;
Begin
return border_.Value("Size");
End;
Function TSDocxBorder.WriteColor(value);virtual;
Begin
border_.Color := color_[value];
border_.Update("first");
End;
Function TSDocxBorder.ReadColor();virtual;
Begin
return color_[border_.Value("Color")];
End;
Function TSDocxBorder.WriteColorIndex(value);virtual;
Begin
color := color_index_[value];
if ifnil(color) then border_.Root().DeleteAttribute("w:color");
else begin
border_.Color := color;
border_.Update("first");
end
End;
Function TSDocxBorder.ReadColorIndex();virtual;
Begin
return color_index_[border_.Value("Color")];
End;
Function TSDocxBorder.WriteLineStyle(value);virtual;
Begin
case value of
TSDocxEnumerations.wdLineStyleDashDot():
border_.Val := "dotDash";
TSDocxEnumerations.wdLineStyleDashDotDot():
border_.Val := "dotDotDash";
TSDocxEnumerations.wdLineStyleDashDotStroked():
border_.Val := "dashDotStroked";
TSDocxEnumerations.wdLineStyleDashLargeGap():
border_.Val := "dashed";
TSDocxEnumerations.wdLineStyleDashSmallGap():
border_.Val := "dashSmallGap";
TSDocxEnumerations.wdLineStyleDot():
border_.Val := "dotted";
TSDocxEnumerations.wdLineStyleDouble():
border_.Val := "double";
TSDocxEnumerations.wdLineStyleDoubleWavy():
border_.Val := "doubleWave";
TSDocxEnumerations.wdLineStyleEmboss3D():
border_.Val := "threeDEmboss";
TSDocxEnumerations.wdLineStyleEngrave3D():
border_.Val := "threeDEngrave";
TSDocxEnumerations.wdLineStyleInset():
border_.Val := "inset";
TSDocxEnumerations.wdLineStyleNone():
border_.Val := "none";
TSDocxEnumerations.wdLineStyleOutset():
border_.Val := "outset";
TSDocxEnumerations.wdLineStyleSingle():
border_.Val := "single";
TSDocxEnumerations.wdLineStyleSingleWavy():
border_.Val := "wave";
TSDocxEnumerations.wdLineStyleThickThinLargeGap():
border_.Val := "thickThinLargeGap";
TSDocxEnumerations.wdLineStyleThickThinMedGap():
border_.Val := "thickThinMediumGap";
TSDocxEnumerations.wdLineStyleThickThinSmallGap():
border_.Val := "thickThinSmallGap";
TSDocxEnumerations.wdLineStyleThinThickLargeGap():
border_.Val := "thinThickLargeGap";
TSDocxEnumerations.wdLineStyleThinThickMedGap():
border_.Val := "thinThickMediumGap";
TSDocxEnumerations.wdLineStyleThinThickSmallGap():
border_.Val := "thinThickSmallGap";
TSDocxEnumerations.wdLineStyleThinThickThinLargeGap():
border_.Val := "thinThickThinLargeGap";
TSDocxEnumerations.wdLineStyleThinThickThinMedGap():
border_.Val := "thinThickThinMediumGap";
TSDocxEnumerations.wdLineStyleThinThickThinSmallGap():
border_.Val := "thinThickThinSmallGap";
TSDocxEnumerations.wdLineStyleTriple():
border_.Val := "triple";
end;
border_.Update("first");
End;
Function TSDocxBorder.ReadLineStyle();virtual;
Begin
value := border_.Value("Val");
case value of
"dotDash":
return TSDocxEnumerations.wdLineStyleDashDot();
"dotDotDash":
return TSDocxEnumerations.wdLineStyleDashDotDot();
"dashDotStroked":
return TSDocxEnumerations.wdLineStyleDashDotStroked();
"dashed":
return TSDocxEnumerations.wdLineStyleDashLargeGap();
"dashSmallGap":
return TSDocxEnumerations.wdLineStyleDashSmallGap();
"dotted":
return TSDocxEnumerations.wdLineStyleDot();
"double":
return TSDocxEnumerations.wdLineStyleDouble();
"doubleWave":
return TSDocxEnumerations.wdLineStyleDoubleWavy();
"threeDEmboss":
return TSDocxEnumerations.wdLineStyleEmboss3D();
"threeDEngrave":
return TSDocxEnumerations.wdLineStyleEngrave3D();
"inset":
return TSDocxEnumerations.wdLineStyleInset();
"none":
return TSDocxEnumerations.wdLineStyleNone();
"outset":
return TSDocxEnumerations.wdLineStyleOutset();
"single":
return TSDocxEnumerations.wdLineStyleSingle();
"wave":
return TSDocxEnumerations.wdLineStyleSingleWavy();
"thickThinLargeGap":
return TSDocxEnumerations.wdLineStyleThickThinLargeGap();
"thickThinMediumGap":
return TSDocxEnumerations.wdLineStyleThickThinMedGap();
"thickThinSmallGap":
return TSDocxEnumerations.wdLineStyleThickThinSmallGap();
"thinThickLargeGap":
return TSDocxEnumerations.wdLineStyleThinThickLargeGap();
"thinThickMediumGap":
return TSDocxEnumerations.wdLineStyleThinThickMedGap();
"thinThickSmallGap":
return TSDocxEnumerations.wdLineStyleThinThickSmallGap();
"thinThickThinLargeGap":
return TSDocxEnumerations.wdLineStyleThinThickThinLargeGap();
"thinThickThinMediumGap":
return TSDocxEnumerations.wdLineStyleThinThickThinMedGap();
"thinThickThinSmallGap":
return TSDocxEnumerations.wdLineStyleThinThickThinSmallGap();
"triple":
return TSDocxEnumerations.wdLineStyleTriple();
end;
End;
Function TSDocxBorder.WriteLineWidth(value);virtual;
Begin
border_.Size := value;
border_.Update("first");
End;
Function TSDocxBorder.ReadLineWidth();virtual;
Begin
return border_.Value("Size");
End;
Function TSDocxBorder.WriteVisible(value);virtual;
Begin
v := value ? "single" : "nil";
border_.Update("first");
End;
Function TSDocxBorder.ReadVisible();virtual;
Begin
value := border_.Value("Val");
return value = "nil" ? false : true;
End;
+190
View File
@@ -0,0 +1,190 @@
Type TSDocxBorderRange = Class(TSDocxBorder)
Uses TSDocxEnumerations;
public
Function Init(arr, borderType);
private
Function GetBorderObjectByNode(node);
Function GetBorder(arr, hash);
Function CallFunction(fname, value);overload;
Function CallFunction(fname);overload;
Function SplitRun();
private
range_arr_;
border_type_;
split_flag_;
public
Function WriteVisible(value);override;
Function ReadVisible();override;
Function WriteLineWidth(value);override;
Function ReadLineWidth();override;
Function WriteLineStyle(value);override;
Function ReadLineStyle();override;
Function WriteColorIndex(value);override;
Function ReadColorIndex();override;
Function WriteColor(value);override;
Function ReadColor();override;
Function WriteArtWidth(value);override;
Function ReadArtWidth();override;
Function WriteArtStyle(value);override;
Function ReadArtStyle();override;
End;
// ============== 实现 ================= //
Function TSDocxBorderRange.Init(arr, borderType);
Begin
range_arr_ := arr;
border_type_ := borderType;
split_flag_ := false;
class(TSDocxBorder).Init(nil);
End;
Function TSDocxBorderRange.SplitRun();
Begin
if split_flag_ then return;
class(TSWdCommon).SplitRangeRun(range_arr_);
self.Parent.SetRangeArr(range_arr_);
split_flag_ := true;
End;
Function TSDocxBorderRange.GetBorder(arr, hash);
Begin
if arr["entirety"] then
begin
if not ifnil(hash[arr["entirety"]]) then nil;
hash[arr["entirety"]] := true;
border := GetBorderObjectByNode(arr["entirety"]);
end
else begin
trun := arr["trun"];
if not ifObj(trun.Root()) then return nil;
border := new TSDocxBorder(self.Application, self.Creator, self.Parent);
border.Init(trun.rPr.Bdr);
end
return border;
End;
Function TSDocxBorderRange.GetBorderObjectByNode(node);
Begin
name := node.GetName();
if name = "w:p" then
begin
obj := TOfficeObj("TParagraph");
obj.Init(node);
paragraph_obj := new TSDocxParagraph(self.Application, self.Creator, self.Parent);
paragraph_obj.Init(nil, obj, nil);
return paragraph_obj.Borders(border_type_);
end
else if name = "w:tbl" then
begin
obj := TOfficeObj("TTable");
obj.Init(node);
table_obj := new TSDocxTable(self.Application, self.Creator, self.Parent);
table_obj.Init(nil, obj);
return table_obj.Borders(border_type_);
end
else if name = "w:tc" then
begin
cell_obj := new TSDocxCell(self.Application, self.Creator, self.Parent);
cell_obj.Init(node);
return cell_obj.Borders(border_type_);
end
End;
Function TSDocxBorderRange.CallFunction(fname, value);overload;
Begin
SplitRun();
hash := array();
for i:=0 to length(range_arr_)-1 do
begin
border := GetBorder(range_arr_[i], hash);
if ifnil(border) then continue;
pf := FindFunction(fname, border);
pf.Do(value);
end
End;
Function TSDocxBorderRange.CallFunction(fname);overload;
Begin
hash := array();
ret := nil;
for i:=0 to length(range_arr_)-1 do
begin
border := GetBorder(range_arr_[i], hash);
if ifnil(border) then continue;
pf := FindFunction(fname, border);
r := pf.Do();
if ifnil(ret) then ret := r;
if ret <> r then return TSDocxEnumerations.WdUnderline();
end
return ret;
End;
// property
Function TSDocxBorderRange.WriteVisible(value);override;
Begin
CallFunction("WriteVisible", value);
End;
Function TSDocxBorderRange.ReadVisible();override;
Begin
return CallFunction("ReadVisible");
End;
Function TSDocxBorderRange.WriteLineWidth(value);override;
Begin
CallFunction("WriteLineWidth", value);
End;
Function TSDocxBorderRange.ReadLineWidth();override;
Begin
return CallFunction("ReadLineWidth");
End;
Function TSDocxBorderRange.WriteLineStyle(value);override;
Begin
CallFunction("WriteLineStyle", value);
End;
Function TSDocxBorderRange.ReadLineStyle();override;
Begin
return CallFunction("ReadLineStyle");
End;
Function TSDocxBorderRange.WriteColorIndex(value);override;
Begin
CallFunction("WriteColorIndex", value);
End;
Function TSDocxBorderRange.ReadColorIndex();override;
Begin
return CallFunction("ReadColorIndex");
End;
Function TSDocxBorderRange.WriteColor(value);override;
Begin
CallFunction("WriteColor", value);
End;
Function TSDocxBorderRange.ReadColor();override;
Begin
return CallFunction("ReadColor");
End;
Function TSDocxBorderRange.WriteArtWidth(value);override;
Begin
CallFunction("WriteArtWidth", value);
End;
Function TSDocxBorderRange.ReadArtWidth();override;
Begin
return CallFunction("ReadArtWidth");
End;
Function TSDocxBorderRange.WriteArtStyle(value);override;
Begin
CallFunction("WriteArtStyle", value);
End;
Function TSDocxBorderRange.ReadArtStyle();override;
Begin
return CallFunction("ReadArtStyle");
End;
+187
View File
@@ -0,0 +1,187 @@
Type TSDocxBorderTable = Class(TSDocxBorder)
Uses TSDocxEnumerations;
public
Function Init(table, borderType);
private
Function CallFunction(pf, value);overload;
Function CallFunction(pf);overload;
public
Function WriteVisible(value);override;
Function ReadVisible();override;
Function WriteLineWidth(value);override;
Function ReadLineWidth();override;
Function WriteLineStyle(value);override;
Function ReadLineStyle();override;
Function WriteColorIndex(value);override;
Function ReadColorIndex();override;
Function WriteColor(value);override;
Function ReadColor();override;
Function WriteArtWidth(value);override;
Function ReadArtWidth();override;
Function WriteArtStyle(value);override;
Function ReadArtStyle();override;
private
table_;
border_type_;
cell_border_; // 对角线只需要处理cell
End;
// ============== 实现 ================= //
Function TSDocxBorderTable.Init(table, borderType);
Begin
table_ := table;
border_type_ := borderType;
cell_border_ := false;
case border_type_ of
TSDocxEnumerations.wdBorderBottom():
border_ := table_.TblPr.Borders.Bottom;
TSDocxEnumerations.wdBorderHorizontal():
border_ := table_.TblPr.Borders.InsideH;
TSDocxEnumerations.wdBorderLeft():
border_ := table_.TblPr.Borders.Left;
TSDocxEnumerations.wdBorderRight():
border_ := table_.TblPr.Borders.Right;
TSDocxEnumerations.wdBorderTop():
border_ := table_.TblPr.Borders.Top;
TSDocxEnumerations.wdBorderVertical():
border_ := table_.TblPr.Borders.InsideV;
TSDocxEnumerations.wdBorderDiagonalDown(),
TSDocxEnumerations.wdBorderDiagonalUp():
cell_border_ := true;
end;
End;
Function TSDocxBorderTable.CallFunction(pf, value);overload;
Begin
// 对角线时候只需要处理cell
if cell_border_ then
begin
for r:=1 to table_.Rows() do
begin
for c:=1 to table_.Cols() do
begin
cell_obj := new TSDocxCell(self.Application, self.Creator, self.Parent);
cell_obj.Init(nil, table_, r, c);
border := cell_obj.Borders(border_type_);
fun := FindFunction(pf, border);
fun.Do(value);
end
end
end
else begin
##pf(value);
end
End;
Function TSDocxBorderTable.CallFunction(pf);overload;
Begin
ret := nil;
cur := nil;
if cell_border_ then
begin
for r:=1 to table_.Rows() do
begin
for c:=1 to table_.Cols() do
begin
cell_obj := new TSDocxCell(self.Application, self.Creator, self.Parent);
cell_obj.Init(nil, table_, r, c);
border := cell_obj.Borders(border_type_);
fun := FindFunction(pf, border);
cur := fun.Do();
if ifnil(ret) then ret := cur;
if ret <> cur then return TSDocxEnumerations.wdUndefined();
end
end
end
else begin
ret := ##pf();
end
return ret;
End;
// property
Function TSDocxBorderTable.WriteVisible(value);override;
Begin
if cell_border_ then CallFunction("WriteVisible", value);
else CallFunction(ThisFunction(class(TSDocxBorder).WriteVisible), value);
End;
Function TSDocxBorderTable.ReadVisible();override;
Begin
if cell_border_ then return CallFunction("ReadVisible");
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadVisible));
End;
Function TSDocxBorderTable.WriteLineWidth(value);override;
Begin
if cell_border_ then CallFunction("WriteLineWidth", value);
else CallFunction(ThisFunction(class(TSDocxBorder).WriteLineWidth), value);
End;
Function TSDocxBorderTable.ReadLineWidth();override;
Begin
if cell_border_ then return CallFunction("ReadLineWidth");
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadLineWidth));
End;
Function TSDocxBorderTable.WriteLineStyle(value);override;
Begin
if cell_border_ then CallFunction("WriteLineStyle", value);
else CallFunction(ThisFunction(class(TSDocxBorder).WriteLineStyle), value);
End;
Function TSDocxBorderTable.ReadLineStyle();override;
Begin
if cell_border_ then return CallFunction("ReadLineStyle");
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadLineStyle));
End;
Function TSDocxBorderTable.WriteColorIndex(value);override;
Begin
if cell_border_ then CallFunction("WriteColorIndex", value);
else CallFunction(ThisFunction(class(TSDocxBorder).WriteColorIndex), value);
End;
Function TSDocxBorderTable.ReadColorIndex();override;
Begin
if cell_border_ then return CallFunction("ReadColorIndex");
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadColorIndex));
End;
Function TSDocxBorderTable.WriteColor(value);override;
Begin
if cell_border_ then CallFunction("WriteColor", value);
else CallFunction(ThisFunction(class(TSDocxBorder).WriteColor), value);
End;
Function TSDocxBorderTable.ReadColor();override;
Begin
if cell_border_ then return CallFunction("ReadColor");
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadColor));
End;
Function TSDocxBorderTable.WriteArtWidth(value);override;
Begin
if cell_border_ then CallFunction("WriteArtWidth", value);
else CallFunction(ThisFunction(class(TSDocxBorder).WriteArtWidth), value);
End;
Function TSDocxBorderTable.ReadArtWidth();override;
Begin
if cell_border_ then return CallFunction("ReadArtWidth");
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadArtWidth));
End;
Function TSDocxBorderTable.WriteArtStyle(value);override;
Begin
if cell_border_ then CallFunction("WriteArtStyle", value);
else CallFunction(ThisFunction(class(TSDocxBorder).WriteArtStyle), value);
End;
Function TSDocxBorderTable.ReadArtStyle();override;
Begin
if cell_border_ then return CallFunction("ReadArtStyle");
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadArtStyle));
End;
+98
View File
@@ -0,0 +1,98 @@
Type TSDocxBorders = Class(TSVbaBase)
public
Function Operator[](index);virtual;
Function GetBorder(index);virtual;
public
Function ApplyPageBordersToAllSections();
Function Item(Index);virtual;
property AlwaysInFront read ReadAlwaysInFront write WriteAlwaysInFront;
property Count read ReadCount;
property DistanceFrom read ReadDistanceFrom write WriteDistanceFrom;
property DistanceFromBottom read ReadDistanceFromBottom write WriteDistanceFromBottom;
property DistanceFromLeft read ReadDistanceFromLeft write WriteDistanceFromLeft;
property DistanceFromRight read ReadDistanceFromRight write WriteDistanceFromRight;
property DistanceFromTop read ReadDistanceFromTop write WriteDistanceFromTop;
property Enable read ReadEnable write WriteEnable;
property EnableFirstPageInSection read ReadEnableFirstPageInSection write WriteEnableFirstPageInSection;
property EnableOtherPagesInSection read ReadEnableOtherPagesInSection write WriteEnableOtherPagesInSection;
property HasHorizontal read ReadHasHorizontal;
property HasVertical read ReadHasVertical;
property InsideColor read ReadInsideColor write WriteInsideColor;
property InsideColorIndex read ReadInsideColorIndex write WriteInsideColorIndex;
property InsideLineStyle read ReadInsideLineStyle write WriteInsideLineStyle;
property InsideLineWidth read ReadInsideLineWidth write WriteInsideLineWidth;
property JoinBorders read ReadJoinBorders write WriteJoinBorders;
property OutsideColor read ReadOutsideColor write WriteOutsideColor;
property OutsideColorIndex read ReadOutsideColorIndex write WriteOutsideColorIndex;
property OutsideLineStyle read ReadOutsideLineStyle write WriteOutsideLineStyle;
property OutsideLineWidth read ReadOutsideLineWidth write WriteOutsideLineWidth;
property Shadow read ReadShadow write WriteShadow;
property SurroundFooter read ReadSurroundFooter write WriteSurroundFooter;
property SurroundHeader read ReadSurroundHeader write WriteSurroundHeader;
Function WriteSurroundHeader();
Function ReadSurroundHeader();
Function WriteSurroundFooter();
Function ReadSurroundFooter();
Function WriteShadow();
Function ReadShadow();
Function WriteOutsideLineWidth();
Function ReadOutsideLineWidth();
Function WriteOutsideLineStyle();
Function ReadOutsideLineStyle();
Function WriteOutsideColorIndex();
Function ReadOutsideColorIndex();
Function WriteOutsideColor();
Function ReadOutsideColor();
Function WriteJoinBorders();
Function ReadJoinBorders();
Function WriteInsideLineWidth();
Function ReadInsideLineWidth();
Function WriteInsideLineStyle();
Function ReadInsideLineStyle();
Function WriteInsideColorIndex();
Function ReadInsideColorIndex();
Function WriteInsideColor();
Function ReadInsideColor();
Function ReadHasVertical();
Function ReadHasHorizontal();
Function WriteEnableOtherPagesInSection();
Function ReadEnableOtherPagesInSection();
Function WriteEnableFirstPageInSection();
Function ReadEnableFirstPageInSection();
Function WriteEnable();
Function ReadEnable();
Function WriteDistanceFromTop();
Function ReadDistanceFromTop();
Function WriteDistanceFromRight();
Function ReadDistanceFromRight();
Function WriteDistanceFromLeft();
Function ReadDistanceFromLeft();
Function WriteDistanceFromBottom();
Function ReadDistanceFromBottom();
Function WriteDistanceFrom();
Function ReadDistanceFrom();
Function ReadCount();
Function WriteAlwaysInFront();
Function ReadAlwaysInFront();
End;
// ============== 实现 ================= //
Function Operator TSDocxBorders.[](index);virtual;
Begin
border_obj := new TSDocxBorder(self.Application, self.Creator, self);
border_obj.Init(GetBorder(index));
return border_obj;
End;
// function
Function TSDocxBorders.Item(Index);virtual;
Begin
return self[Index];
End;
// property
+43
View File
@@ -0,0 +1,43 @@
Type TSDocxBordersCell = Class(TSDocxBorders)
Uses TSDocxEnumerations;
public
Function Init(cell);
Function GetBorder(index);override;
private
cell_;
End;
// ============== 实现 ================= //
Function TSDocxBordersCell.Init(cell);
Begin
cell_ := cell;
End;
Function TSDocxBordersCell.GetBorder(index);override;
Begin
obj := cell_.TcPr.Borders;
case index of
TSDocxEnumerations.wdBorderBottom():
border := obj.Bottom;
TSDocxEnumerations.wdBorderDiagonalDown():
border := obj.tl2br;
TSDocxEnumerations.wdBorderDiagonalUp():
border := obj.tr2bl;
TSDocxEnumerations.wdBorderHorizontal():
border := obj.InsideH;
TSDocxEnumerations.wdBorderLeft():
border := obj.Left;
TSDocxEnumerations.wdBorderRight():
border := obj.Right;
TSDocxEnumerations.wdBorderTop():
border := obj.Top;
TSDocxEnumerations.wdBorderVertical():
border := obj.InsideV;
end;
return border;
End;
+39
View File
@@ -0,0 +1,39 @@
Type TSDocxBordersParagraph = Class(TSDocxBorders)
Uses TSDocxEnumerations;
public
Function Init(Paragraph);
Function GetBorder(index);override;
private
paragraph_; // TOfficeObj("TParagraph")
End;
// ============== 实现 ================= //
Function TSDocxBordersParagraph.Init(paragraph);
Begin
paragraph_ := paragraph;
End;
Function TSDocxBordersParagraph.GetBorder(index);override;
Begin
obj := paragraph_.pPr.Bdr;
case index of
TSDocxEnumerations.wdBorderBottom():
border := obj.Bottom;
TSDocxEnumerations.wdBorderLeft():
border := obj.Left;
TSDocxEnumerations.wdBorderRight():
border := obj.Right;
TSDocxEnumerations.wdBorderTop():
border := obj.Top;
TSDocxEnumerations.wdBorderHorizontal():
border := obj.Between;
else
raise "段落不支持该边框类型";
end;
return border;
End;
+33
View File
@@ -0,0 +1,33 @@
Type TSDocxBordersRange = Class(TSDocxBorders)
public
Function Init(arr);
Function Operator[](index);override;
private
range_arr_;
public
Function Item(Index);override;
End;
// ============== 实现 ================= //
Function TSDocxBordersRange.Init(arr);
Begin
range_arr_ := arr;
End;
Function Operator TSDocxBordersRange.[](index);override;
Begin
border_obj := new TSDocxBorderRange(self.Application, self.Creator, self.Parent);
border_obj.Init(range_arr_, index);
return border_obj;
End;
// function
Function TSDocxBordersRange.Item(Index);override;
Begin
return self[Index];
End;
+24
View File
@@ -0,0 +1,24 @@
Type TSDocxBordersTable = Class(TSDocxBorders)
public
Function Init(table);
Function Operator[](index);override;
private
table_;
End;
// ============== 实现 ================= //
Function TSDocxBordersTable.Init(table);
Begin
table_ := table;
End;
Function Operator TSDocxBordersTable.[](index);override;
Begin
border_table_obj := new TSDocxBorderTable(self.Application, self.Creator, self.Parent);
border_table_obj.Init(table_, index);
return border_table_obj;
End;