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.LineSpacingRule := TSDocxEnumerations.wdLineSpaceSingle(); End; Function TSDocxParagraphFormat.Space15();virtual; Begin self.LineSpacingRule := TSDocxEnumerations.wdLineSpace1pt5(); End; Function TSDocxParagraphFormat.Space2();virtual; Begin self.LineSpacingRule := TSDocxEnumerations.wdLineSpaceDouble(); 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 := obj.StyleId; 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;