range.font and range.border
This commit is contained in:
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user