723 lines
22 KiB
Plaintext
723 lines
22 KiB
Plaintext
Type TSDocxParagraphFormat = Class(TSVbaBase)
|
|
Uses TSDocxEnumerations;
|
|
|
|
public
|
|
Function Init(docx, pPr);
|
|
Function Apply();virtual;
|
|
Function ReWrite(pr);virtual;
|
|
|
|
protected
|
|
docx_;
|
|
pr_; // TOfficeObj("TwpPr")
|
|
shading_; // TSDocxShading
|
|
|
|
public
|
|
// Methods
|
|
Function CloseUp();virtual;
|
|
Function IndentCharWidth(Count);virtual;
|
|
Function IndentFirstLineCharWidth(Count);virtual;
|
|
Function OpenOrCloseUp();virtual;
|
|
Function OpenUp();virtual;
|
|
Function Reset();virtual;
|
|
Function Space1();virtual;
|
|
Function Space15();virtual;
|
|
Function Space2();virtual;
|
|
Function TabHangingIndent(Count);virtual;
|
|
Function TabIndent(Count);virtual;
|
|
|
|
// Properties
|
|
property AddSpaceBetweenFarEastAndAlpha read ReadAddSpaceBetweenFarEastAndAlpha write WriteAddSpaceBetweenFarEastAndAlpha;
|
|
property AddSpaceBetweenFarEastAndDigit read ReadAddSpaceBetweenFarEastAndDigit write WriteAddSpaceBetweenFarEastAndDigit;
|
|
property Alignment read ReadAlignment write WriteAlignment;
|
|
property AutoAdjustRightIndent read ReadAutoAdjustRightIndent write WriteAutoAdjustRightIndent;
|
|
property BaseLineAlignment read ReadBaseLineAlignment write WriteBaseLineAlignment;
|
|
property Borders read ReadBorders;
|
|
property CharacterUnitFirstLineIndent read ReadCharacterUnitFirstLineIndent write WriteCharacterUnitFirstLineIndent;
|
|
property CharacterUnitLeftIndent read ReadCharacterUnitLeftIndent write WriteCharacterUnitLeftIndent;
|
|
property CharacterUnitRightIndent read ReadCharacterUnitRightIndent write WriteCharacterUnitRightIndent;
|
|
property CollapsedByDefault read ReadCollapsedByDefault write WriteCollapsedByDefault;
|
|
property DisableLineHeightGrid read ReadDisableLineHeightGrid write WriteDisableLineHeightGrid;
|
|
property Duplicate read ReadDuplicate;
|
|
property FarEastLineBreakControl read ReadFarEastLineBreakControl write WriteFarEastLineBreakControl;
|
|
property FirstLineIndent read ReadFirstLineIndent write WriteFirstLineIndent;
|
|
property HalfWidthPunctuationOnTopOfLine read ReadHalfWidthPunctuationOnTopOfLine write WriteHalfWidthPunctuationOnTopOfLine;
|
|
property HangingPunctuation read ReadHangingPunctuation write WriteHangingPunctuation;
|
|
property Hyphenation read ReadHyphenation write WriteHyphenation;
|
|
property KeepTogether read ReadKeepTogether write WriteKeepTogether;
|
|
property KeepWithNext read ReadKeepWithNext write WriteKeepWithNext;
|
|
property LeftIndent read ReadLeftIndent write WriteLeftIndent;
|
|
property LineSpacing read ReadLineSpacing write WriteLineSpacing;
|
|
property LineSpacingRule read ReadLineSpacingRule write WriteLineSpacingRule;
|
|
property LineUnitAfter read ReadLineUnitAfter write WriteLineUnitAfter;
|
|
property LineUnitBefore read ReadLineUnitBefore write WriteLineUnitBefore;
|
|
property MirrorIndents read ReadMirrorIndents write WriteMirrorIndents;
|
|
property NoLineNumber read ReadNoLineNumber write WriteNoLineNumber;
|
|
property OutlineLevel read ReadOutlineLevel write WriteOutlineLevel;
|
|
property PageBreakBefore read ReadPageBreakBefore write WritePageBreakBefore;
|
|
property ReadingOrder read ReadReadingOrder write WriteReadingOrder;
|
|
property RightIndent read ReadRightIndent write WriteRightIndent;
|
|
property Shading read ReadShading;
|
|
property SpaceAfter read ReadSpaceAfter write WriteSpaceAfter;
|
|
property SpaceAfterAuto read ReadSpaceAfterAuto write WriteSpaceAfterAuto;
|
|
property SpaceBefore read ReadSpaceBefore write WriteSpaceBefore;
|
|
property SpaceBeforeAuto read ReadSpaceBeforeAuto write WriteSpaceBeforeAuto;
|
|
property Style read ReadStyle write WriteStyle;
|
|
property TabStops read ReadTabStops write WriteTabStops;
|
|
property TextboxTightWrap read ReadTextboxTightWrap write WriteTextboxTightWrap;
|
|
property WidowControl read ReadWidowControl write WriteWidowControl;
|
|
property WordWrap read ReadWordWrap write WriteWordWrap;
|
|
Function WriteWordWrap(value);virtual;
|
|
Function ReadWordWrap();virtual;
|
|
Function WriteWidowControl(value);virtual;
|
|
Function ReadWidowControl();virtual;
|
|
Function WriteTextboxTightWrap(value);virtual;
|
|
Function ReadTextboxTightWrap();virtual;
|
|
Function WriteTabStops(value);virtual;
|
|
Function ReadTabStops();virtual;
|
|
Function WriteStyle(value);virtual;
|
|
Function ReadStyle();virtual;
|
|
Function WriteSpaceBeforeAuto(value);virtual;
|
|
Function ReadSpaceBeforeAuto();virtual;
|
|
Function WriteSpaceBefore(value);virtual;
|
|
Function ReadSpaceBefore();virtual;
|
|
Function WriteSpaceAfterAuto(value);virtual;
|
|
Function ReadSpaceAfterAuto();virtual;
|
|
Function WriteSpaceAfter(value);virtual;
|
|
Function ReadSpaceAfter();virtual;
|
|
Function ReadShading();virtual;
|
|
Function WriteRightIndent(value);virtual;
|
|
Function ReadRightIndent();virtual;
|
|
Function WriteReadingOrder(value);virtual;
|
|
Function ReadReadingOrder();virtual;
|
|
Function WritePageBreakBefore(value);virtual;
|
|
Function ReadPageBreakBefore();virtual;
|
|
Function WriteOutlineLevel(value);virtual;
|
|
Function ReadOutlineLevel();virtual;
|
|
Function WriteNoLineNumber(value);virtual;
|
|
Function ReadNoLineNumber();virtual;
|
|
Function WriteMirrorIndents(value);virtual;
|
|
Function ReadMirrorIndents();virtual;
|
|
Function WriteLineUnitBefore(value);virtual;
|
|
Function ReadLineUnitBefore();virtual;
|
|
Function WriteLineUnitAfter(value);virtual;
|
|
Function ReadLineUnitAfter();virtual;
|
|
Function WriteLineSpacingRule(value);virtual;
|
|
Function ReadLineSpacingRule();virtual;
|
|
Function WriteLineSpacing(value);virtual;
|
|
Function ReadLineSpacing();virtual;
|
|
Function WriteLeftIndent(value);virtual;
|
|
Function ReadLeftIndent();virtual;
|
|
Function WriteKeepWithNext(value);virtual;
|
|
Function ReadKeepWithNext();virtual;
|
|
Function WriteKeepTogether(value);virtual;
|
|
Function ReadKeepTogether();virtual;
|
|
Function WriteHyphenation(value);virtual;
|
|
Function ReadHyphenation();virtual;
|
|
Function WriteHangingPunctuation(value);virtual;
|
|
Function ReadHangingPunctuation();virtual;
|
|
Function WriteHalfWidthPunctuationOnTopOfLine(value);virtual;
|
|
Function ReadHalfWidthPunctuationOnTopOfLine();virtual;
|
|
Function WriteFirstLineIndent(value);virtual;
|
|
Function ReadFirstLineIndent();virtual;
|
|
Function WriteFarEastLineBreakControl(value);virtual;
|
|
Function ReadFarEastLineBreakControl();virtual;
|
|
Function ReadDuplicate();virtual;
|
|
Function WriteDisableLineHeightGrid(value);virtual;
|
|
Function ReadDisableLineHeightGrid();virtual;
|
|
Function WriteCollapsedByDefault(value);virtual;
|
|
Function ReadCollapsedByDefault();virtual;
|
|
Function WriteCharacterUnitRightIndent(value);virtual;
|
|
Function ReadCharacterUnitRightIndent();virtual;
|
|
Function WriteCharacterUnitLeftIndent(value);virtual;
|
|
Function ReadCharacterUnitLeftIndent();virtual;
|
|
Function WriteCharacterUnitFirstLineIndent(value);virtual;
|
|
Function ReadCharacterUnitFirstLineIndent();virtual;
|
|
Function ReadBorders(index);virtual;
|
|
Function WriteBaseLineAlignment(value);virtual;
|
|
Function ReadBaseLineAlignment();virtual;
|
|
Function WriteAutoAdjustRightIndent(value);virtual;
|
|
Function ReadAutoAdjustRightIndent();virtual;
|
|
Function WriteAlignment(value);virtual;
|
|
Function ReadAlignment();virtual;
|
|
Function WriteAddSpaceBetweenFarEastAndDigit(value);virtual;
|
|
Function ReadAddSpaceBetweenFarEastAndDigit();virtual;
|
|
Function WriteAddSpaceBetweenFarEastAndAlpha(value);virtual;
|
|
Function ReadAddSpaceBetweenFarEastAndAlpha();virtual;
|
|
|
|
End;
|
|
|
|
|
|
// ============== 实现 ================= //
|
|
Function TSDocxParagraphFormat.Init(docx, pPr);
|
|
Begin
|
|
docx_ := docx;
|
|
pr_ := pPr;
|
|
shading_ := nil;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.Apply();virtual;
|
|
Begin
|
|
pr_.Update("first");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.ReWrite(pr);virtual;
|
|
Begin
|
|
self.Reset();
|
|
rpr := pr.Root().FirstChildElement("w:pPr");
|
|
if not ifObj(rpr) then return;
|
|
marshal := rPr.Marshal()[0];
|
|
node := class(TSXml).GetNode(pr_.Root(), "w:pPr", "first");
|
|
class(TSXml).UpdateNode(node, marshal["attributes"], marshal["children"]);
|
|
End;
|
|
|
|
// Methods
|
|
Function TSDocxParagraphFormat.CloseUp();virtual;
|
|
Begin
|
|
self.SpaceBefore := 0;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.IndentCharWidth(Count);virtual;
|
|
Begin
|
|
pr_.LeftIndent := Count * 210;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.IndentFirstLineCharWidth(Count);virtual;
|
|
Begin
|
|
self.FirstLineIndent := Count;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.OpenOrCloseUp();virtual;
|
|
Begin
|
|
self.SpaceBefore := self.SpaceBefore > 0 ? 0 : 12;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.OpenUp();virtual;
|
|
Begin
|
|
self.SpaceBefore := 12;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.Reset();virtual;
|
|
Begin
|
|
pr_.Delete();
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.Space1();virtual;
|
|
Begin
|
|
self.LineSpacing := 12;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.Space15();virtual;
|
|
Begin
|
|
self.LineSpacing := 18;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.Space2();virtual;
|
|
Begin
|
|
self.LineSpacing := 24;
|
|
End;
|
|
|
|
// property
|
|
Function TSDocxParagraphFormat.WriteWordWrap(value);virtual;
|
|
Begin
|
|
pr_.WordWrap := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadWordWrap();virtual;
|
|
Begin
|
|
return pr_.Value("WordWrap");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteWidowControl(value);virtual;
|
|
Begin
|
|
pr_.WidowControl := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadWidowControl();virtual;
|
|
Begin
|
|
return pr_.Value("WidowControl");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteTextboxTightWrap(value);virtual;
|
|
Begin
|
|
case value of
|
|
TSDocxEnumerations.wdTightAll():
|
|
pr_.TextboxTightWrap := "allLines";
|
|
TSDocxEnumerations.wdTightFirstAndLastLines():
|
|
pr_.TextboxTightWrap := "firstAndLastLine";
|
|
TSDocxEnumerations.wdTightFirstLineOnly():
|
|
pr_.TextboxTightWrap := "firstLineOnly";
|
|
TSDocxEnumerations.wdTightLastLineOnly():
|
|
pr_.TextboxTightWrap := "LastLineOnly";
|
|
TSDocxEnumerations.wdTightNone():
|
|
pr_.TextboxTightWrap := "none";
|
|
end;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadTextboxTightWrap();virtual;
|
|
Begin
|
|
value := pr_.Value("TextboxTightWrap");
|
|
case value of
|
|
"allLines":
|
|
return TSDocxEnumerations.wdTightAll();
|
|
"firstAndLastLine":
|
|
return TSDocxEnumerations.wdTightFirstAndLastLines();
|
|
"firstLineOnly":
|
|
return TSDocxEnumerations.wdTightFirstLineOnly();
|
|
"LastLineOnly":
|
|
return TSDocxEnumerations.wdTightLastLineOnly();
|
|
"none", nil:
|
|
return TSDocxEnumerations.wdTightNone();
|
|
end;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteStyle(value);virtual;
|
|
Begin
|
|
obj := docx_.StyleObject().GetStyle(value);
|
|
if not obj then obj := docx_.StyleObject().AddDefaultStyle(value);
|
|
pr_.StyleId := ifObj(obj) ? obj.StyleId : nil;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadStyle();virtual;
|
|
Begin
|
|
id := pr_.Value("StyleId", 1);
|
|
obj := docx_.StyleObject().GetStyleById(id);
|
|
return obj.Name;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteSpaceBeforeAuto(value);virtual;
|
|
Begin
|
|
pr_.SpaceBeforeAuto := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadSpaceBeforeAuto();virtual;
|
|
Begin
|
|
return pr_.Value("SpaceBeforeAuto") ? true : false;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteSpaceBefore(value);virtual;
|
|
Begin
|
|
pr_.SpaceBefore := value * 20;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadSpaceBefore();virtual;
|
|
Begin
|
|
return pr_.Value("SpaceBefore") / 20;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteSpaceAfterAuto(value);virtual;
|
|
Begin
|
|
pr_.SpaceAfterAuto := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadSpaceAfterAuto();virtual;
|
|
Begin
|
|
return pr_.Value("SpaceAfterAuto") ? true : false;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteSpaceAfter(value);virtual;
|
|
Begin
|
|
pr_.SpaceAfter := value * 20;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadSpaceAfter();virtual;
|
|
Begin
|
|
return pr_.Value("SpaceAfter") / 20;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.ReadShading();virtual;
|
|
Begin
|
|
if ifnil(shading_) then
|
|
begin
|
|
shading_ := new TSDocxShading(self.Application, self.Creator, self.Parent);
|
|
shading_.Init(pr_.Shading);
|
|
end
|
|
return shading_;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteRightIndent(value);virtual;
|
|
Begin
|
|
pr_.RightIndent := value * 20;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadRightIndent();virtual;
|
|
Begin
|
|
return pr_.Value("RightIndent") / 20;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteReadingOrder(value);virtual;
|
|
Begin
|
|
case value of
|
|
TSDocxEnumerations.wdReadingOrderLtr():
|
|
pr_.Bidi := false;
|
|
TSDocxEnumerations.wdReadingOrderRtl():
|
|
pr_.Bidi := true;
|
|
end;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadReadingOrder();virtual;
|
|
Begin
|
|
value := pr_.Value("Bidi");
|
|
case value of
|
|
false: return TSDocxEnumerations.wdReadingOrderLtr();
|
|
true: return TSDocxEnumerations.wdReadingOrderRtl();
|
|
end;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WritePageBreakBefore(value);virtual;
|
|
Begin
|
|
pr_.PageBreakBefore := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadPageBreakBefore();virtual;
|
|
Begin
|
|
return pr_.Value("PageBreakBefore");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteOutlineLevel(value);virtual;
|
|
Begin
|
|
case value of
|
|
TSDocxEnumerations.wdOutlineLevel1():
|
|
pr_.OutlineLevel := 0;
|
|
TSDocxEnumerations.wdOutlineLevel2():
|
|
pr_.OutlineLevel := 1;
|
|
TSDocxEnumerations.wdOutlineLevel3():
|
|
pr_.OutlineLevel := 2;
|
|
TSDocxEnumerations.wdOutlineLevel4():
|
|
pr_.OutlineLevel := 3;
|
|
TSDocxEnumerations.wdOutlineLevel5():
|
|
pr_.OutlineLevel := 4;
|
|
TSDocxEnumerations.wdOutlineLevel6():
|
|
pr_.OutlineLevel := 5;
|
|
TSDocxEnumerations.wdOutlineLevel7():
|
|
pr_.OutlineLevel := 6;
|
|
TSDocxEnumerations.wdOutlineLevel8():
|
|
pr_.OutlineLevel := 7;
|
|
TSDocxEnumerations.wdOutlineLevel9():
|
|
pr_.OutlineLevel := 8;
|
|
TSDocxEnumerations.wdOutlineLevelBodyText():
|
|
class(TSXml).RemoveNode(pr_.Root(), "w:outlineLvl");
|
|
end;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadOutlineLevel();virtual;
|
|
Begin
|
|
value := pr_.Value("OutlineLevel");
|
|
case value of
|
|
0: return TSDocxEnumerations.wdOutlineLevel1();
|
|
1: return TSDocxEnumerations.wdOutlineLevel2();
|
|
2: return TSDocxEnumerations.wdOutlineLevel3();
|
|
3: return TSDocxEnumerations.wdOutlineLevel4();
|
|
4: return TSDocxEnumerations.wdOutlineLevel5();
|
|
5: return TSDocxEnumerations.wdOutlineLevel6();
|
|
6: return TSDocxEnumerations.wdOutlineLevel7();
|
|
7: return TSDocxEnumerations.wdOutlineLevel8();
|
|
8: return TSDocxEnumerations.wdOutlineLevel9();
|
|
nil: return TSDocxEnumerations.wdOutlineLevelBodyText();
|
|
end;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteNoLineNumber(value);virtual;
|
|
Begin
|
|
pr_.SuppressLineNumbers := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadNoLineNumber();virtual;
|
|
Begin
|
|
return pr_.Value("SuppressLineNumbers");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteMirrorIndents(value);virtual;
|
|
Begin
|
|
pr_.MirrorIndents := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadMirrorIndents();virtual;
|
|
Begin
|
|
return pr_.Value("MirrorIndents");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteLineUnitBefore(value);virtual;
|
|
Begin
|
|
pr_.BeforeLines := value * 100;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadLineUnitBefore();virtual;
|
|
Begin
|
|
return pr_.Value("BeforeLines") / 100;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteLineUnitAfter(value);virtual;
|
|
Begin
|
|
pr_.AfterLines := value * 100;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadLineUnitAfter();virtual;
|
|
Begin
|
|
return pr_.Value("AfterLines") / 100;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteLineSpacingRule(value);virtual;
|
|
Begin
|
|
case value of
|
|
TSDocxEnumerations.wdLineSpace1pt5():
|
|
pr_.LineSpacingRule := "auto";
|
|
TSDocxEnumerations.wdLineSpaceAtLeast():
|
|
pr_.LineSpacingRule := "atLeast";
|
|
TSDocxEnumerations.wdLineSpaceDouble():
|
|
pr_.LineSpacingRule := "auto";
|
|
TSDocxEnumerations.wdLineSpaceExactly():
|
|
pr_.LineSpacingRule := "exact";
|
|
TSDocxEnumerations.wdLineSpaceMultiple():
|
|
pr_.LineSpacingRule := "auto";
|
|
TSDocxEnumerations.wdLineSpaceSingle():
|
|
pr_.LineSpacingRule := "auto";
|
|
end;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadLineSpacingRule();virtual;
|
|
Begin
|
|
value := pr_.Value("LineSpacingRule");
|
|
case value of
|
|
"atLeast":
|
|
return TSDocxEnumerations.wdLineSpaceAtLeast();
|
|
"exact":
|
|
return TSDocxEnumerations.wdLineSpaceExactly();
|
|
"auto":
|
|
return TSDocxEnumerations.wdLineSpaceMultiple();
|
|
end;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteLineSpacing(value);virtual;
|
|
Begin
|
|
pr_.LineSpacing := value * 20;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadLineSpacing();virtual;
|
|
Begin
|
|
return pr_.Value("LineSpacing") / 20;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteLeftIndent(value);virtual;
|
|
Begin
|
|
pr_.LeftIndent := value * 20;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadLeftIndent();virtual;
|
|
Begin
|
|
return pr_.Value("LeftIndent") / 20;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteKeepWithNext(value);virtual;
|
|
Begin
|
|
pr_.KeepWithNext := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadKeepWithNext();virtual;
|
|
Begin
|
|
return pr_.Value("KeepWithNext");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteKeepTogether(value);virtual;
|
|
Begin
|
|
pr_.KeepTogether := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadKeepTogether();virtual;
|
|
Begin
|
|
return pr_.Value("KeepTogether");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteHyphenation(value);virtual;
|
|
Begin
|
|
pr_.SuppressAutoHyphens := value ? false : true;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadHyphenation();virtual;
|
|
Begin
|
|
return pr_.Value("SuppressAutoHyphens") ? false : true;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteHangingPunctuation(value);virtual;
|
|
Begin
|
|
pr_.OverflowPunct := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadHangingPunctuation();virtual;
|
|
Begin
|
|
return pr_.Value("TopLinePunct");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteHalfWidthPunctuationOnTopOfLine(value);virtual;
|
|
Begin
|
|
pr_.TopLinePunct := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadHalfWidthPunctuationOnTopOfLine();virtual;
|
|
Begin
|
|
return pr_.Value("TopLinePunct");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteFirstLineIndent(value);virtual;
|
|
Begin
|
|
pr_.FirstLineIndent := value * 20;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadFirstLineIndent();virtual;
|
|
Begin
|
|
return pr_.Value("FirstLineIndent") / 20;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteFarEastLineBreakControl(value);virtual;
|
|
Begin
|
|
pr_.Kinsoku := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadFarEastLineBreakControl();virtual;
|
|
Begin
|
|
return pr_.Value("Kinsoku");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.ReadDuplicate();virtual;
|
|
Begin
|
|
return pr_;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteDisableLineHeightGrid(value);virtual;
|
|
Begin
|
|
pr_.SnapToGrid := value ? false : true;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadDisableLineHeightGrid();virtual;
|
|
Begin
|
|
return pr_.Value("SnapToGrid") ? false : true;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteCollapsedByDefault(value);virtual;
|
|
Begin
|
|
pr_.Collapsed := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadCollapsedByDefault();virtual;
|
|
Begin
|
|
return pr_.Value("Collapsed");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteCharacterUnitRightIndent(value);virtual;
|
|
Begin
|
|
pr_.RightChars := value * 100;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadCharacterUnitRightIndent();virtual;
|
|
Begin
|
|
return pr_.Value("RightChars") / 100;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteCharacterUnitLeftIndent(value);virtual;
|
|
Begin
|
|
pr_.LeftChars := value * 100;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadCharacterUnitLeftIndent();virtual;
|
|
Begin
|
|
return pr_.Value("LeftChars") / 100;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteCharacterUnitFirstLineIndent(value);virtual;
|
|
Begin
|
|
if value > 0 then pr_.FirstLineChars := value * 100;
|
|
else pr_.HangingChars := abs(value) * 100;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadCharacterUnitFirstLineIndent();virtual;
|
|
Begin
|
|
first_val := pr_.Value("FirstLineChars");
|
|
if first_val then return integer(first_val / 100);
|
|
hanging_val := pr_.Value("HangingChars");
|
|
if hanging_val then return -integer(hanging_val / 100);
|
|
return 0;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.ReadBorders(index);virtual;
|
|
Begin
|
|
borders_obj := new TSDocxBordersParagraph(self.Application, self.Creator, self.Parent);
|
|
borders_obj.Init(pr_);
|
|
return ifnil(index) ? borders_obj : borders_obj[index];
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteBaseLineAlignment(value);virtual;
|
|
Begin
|
|
case value of
|
|
TSDocxEnumerations.wdBaselineAlignAuto():
|
|
pr_.TextAlignment := "auto";
|
|
TSDocxEnumerations.wdBaselineAlignBaseline():
|
|
pr_.TextAlignment := "baseline";
|
|
TSDocxEnumerations.wdBaselineAlignCenter():
|
|
pr_.TextAlignment := "center";
|
|
TSDocxEnumerations.wdBaselineAlignFarEast50():
|
|
pr_.TextAlignment := "bottom";
|
|
TSDocxEnumerations.wdBaselineAlignTop():
|
|
pr_.TextAlignment := "top";
|
|
end;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadBaseLineAlignment();virtual;
|
|
Begin
|
|
value := pr_.Value("TextAlignment");
|
|
case value of
|
|
"auto", nil:
|
|
return TSDocxEnumerations.wdBaselineAlignAuto();
|
|
"baseline":
|
|
return TSDocxEnumerations.wdBaselineAlignBaseline();
|
|
"center":
|
|
return TSDocxEnumerations.wdBaselineAlignCenter();
|
|
"bottom":
|
|
return TSDocxEnumerations.wdBaselineAlignFarEast50();
|
|
"top":
|
|
return TSDocxEnumerations.wdBaselineAlignTop();
|
|
end;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteAutoAdjustRightIndent(value);virtual;
|
|
Begin
|
|
pr_.AdjustRightInd := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadAutoAdjustRightIndent();virtual;
|
|
Begin
|
|
return pr_.Value("AdjustRightInd");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteAlignment(value);virtual;
|
|
Begin
|
|
case value of
|
|
TSDocxEnumerations.wdAlignParagraphCenter():
|
|
pr_.Alignment := "center";
|
|
TSDocxEnumerations.wdAlignParagraphDistribute():
|
|
pr_.Alignment := "distribute";
|
|
TSDocxEnumerations.wdAlignParagraphJustify():
|
|
pr_.Alignment := "both";
|
|
TSDocxEnumerations.wdAlignParagraphJustifyHi():
|
|
pr_.Alignment := "highKashida";
|
|
TSDocxEnumerations.wdAlignParagraphJustifyLow():
|
|
pr_.Alignment := "lowKashida";
|
|
TSDocxEnumerations.wdAlignParagraphJustifyMed():
|
|
pr_.Alignment := "mediumKashida";
|
|
TSDocxEnumerations.wdAlignParagraphLeft():
|
|
pr_.Alignment := "left";
|
|
TSDocxEnumerations.wdAlignParagraphRight():
|
|
pr_.Alignment := "right";
|
|
TSDocxEnumerations.wdAlignParagraphThaiJustify():
|
|
pr_.Alignment := "thaiDistribute";
|
|
end;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadAlignment();virtual;
|
|
Begin
|
|
value := pr_.Value("Alignment");
|
|
case value of
|
|
"center":
|
|
return TSDocxEnumerations.wdAlignParagraphCenter();
|
|
"distribute":
|
|
return TSDocxEnumerations.wdAlignParagraphDistribute();
|
|
"both", nil:
|
|
return TSDocxEnumerations.wdAlignParagraphJustify();
|
|
"highKashida":
|
|
return TSDocxEnumerations.wdAlignParagraphJustifyHi();
|
|
"lowKashida":
|
|
return TSDocxEnumerations.wdAlignParagraphJustifyLow();
|
|
"mediumKashida":
|
|
return TSDocxEnumerations.wdAlignParagraphJustifyMed();
|
|
"left":
|
|
return TSDocxEnumerations.wdAlignParagraphLeft();
|
|
"right":
|
|
return TSDocxEnumerations.wdAlignParagraphRight();
|
|
"thaiDistribute":
|
|
return TSDocxEnumerations.wdAlignParagraphThaiJustify();
|
|
end;
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteAddSpaceBetweenFarEastAndDigit(value);virtual;
|
|
Begin
|
|
pr_.AutoSpaceDN := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadAddSpaceBetweenFarEastAndDigit();virtual;
|
|
Begin
|
|
return pr_.Value("AutoSpaceDN");
|
|
End;
|
|
|
|
Function TSDocxParagraphFormat.WriteAddSpaceBetweenFarEastAndAlpha(value);virtual;
|
|
Begin
|
|
pr_.AutoSpaceDE := value ? true : false;
|
|
End;
|
|
Function TSDocxParagraphFormat.ReadAddSpaceBetweenFarEastAndAlpha();virtual;
|
|
Begin
|
|
return pr_.Value("AutoSpaceDE");
|
|
End;
|
|
|