type PPr = class(OpenXmlElement) public function Create();overload; function Create(_node: XmlNode);overload; function Create(_parent: tslobj; _prefix: string; _local_name: string);overload; function Init();override; function InitAttributes();override; function InitChildren();override; function InitNode(_node: XmlNode);override; function Copy(_obj: PPr);override; property WidowControl read ReadXmlChildWidowControl write WriteXmlChildWidowControl; property KeepNext read ReadXmlChildKeepNext write WriteXmlChildKeepNext; property KeepLines read ReadXmlChildKeepLines write WriteXmlChildKeepLines; property ContextualSpacing read ReadXmlChildContextualSpacing write WriteXmlChildContextualSpacing; function ReadXmlChildWidowControl(); function WriteXmlChildWidowControl(_value); function ReadXmlChildKeepNext(); function WriteXmlChildKeepNext(_value); function ReadXmlChildKeepLines(); function WriteXmlChildKeepLines(_value); function ReadXmlChildContextualSpacing(); function WriteXmlChildContextualSpacing(_value); public // Attributes // Children SectPr: SectPr; Tabs: Tabs; XmlChildWidowControl: OpenXmlEmpty; SnapToGrid: PureWVal; PStyle: PureWVal; NumPr: NumPr; Jc: PureWVal; Ind: Ind; XmlChildKeepNext: OpenXmlEmpty; XmlChildKeepLines: OpenXmlEmpty; AdjustRightInd: PureWVal; Spacing: Spacing; OutlineLvl: PureWVal; AutoSpaceDE: PureWVal; AutoSpaceDN: PureWVal; RPr: RPr; PBdr: PBdr; XmlChildContextualSpacing: OpenXmlEmpty; end; function PPr.Create();overload; begin self.Create(nil, "w", "pPr"); end; function PPr.Create(_node: XmlNode);overload; begin class(OpenXmlElement).Create(_node: XmlNode); end; function PPr.Create(_parent: tslobj; _prefix: string; _local_name: string);overload; begin class(OpenXmlElement).Create(_parent, _prefix, _local_name); end; function PPr.Init();override; begin self.SectPr := new SectPr(self, self.Prefix, "sectPr"); self.Tabs := new Tabs(self, self.Prefix, "tabs"); self.XmlChildWidowControl := new OpenXmlEmpty(self, self.Prefix, "widowControl"); self.SnapToGrid := new PureWVal(self, self.Prefix, "snapToGrid"); self.PStyle := new PureWVal(self, self.Prefix, "pStyle"); self.NumPr := new NumPr(self, self.Prefix, "numPr"); self.Jc := new PureWVal(self, self.Prefix, "jc"); self.Ind := new Ind(self, self.Prefix, "ind"); self.XmlChildKeepNext := new OpenXmlEmpty(self, self.Prefix, "keepNext"); self.XmlChildKeepLines := new OpenXmlEmpty(self, self.Prefix, "keepLines"); self.AdjustRightInd := new PureWVal(self, self.Prefix, "adjustRightInd"); self.Spacing := new Spacing(self, self.Prefix, "spacing"); self.OutlineLvl := new PureWVal(self, self.Prefix, "outlineLvl"); self.AutoSpaceDE := new PureWVal(self, self.Prefix, "autoSpaceDE"); self.AutoSpaceDN := new PureWVal(self, self.Prefix, "autoSpaceDN"); self.RPr := new RPr(self, self.Prefix, "rPr"); self.PBdr := new PBdr(self, self.Prefix, "pBdr"); self.XmlChildContextualSpacing := new OpenXmlEmpty(self, self.Prefix, "contextualSpacing"); end; function PPr.InitAttributes();override; begin attributes_ := array( ); end; function PPr.InitChildren();override; begin child_elements_ := array( 0: self.SectPr, 1: self.Tabs, 2: self.XmlChildWidowControl, 3: self.SnapToGrid, 4: self.PStyle, 5: self.NumPr, 6: self.Jc, 7: self.Ind, 8: self.XmlChildKeepNext, 9: self.XmlChildKeepLines, 10: self.AdjustRightInd, 11: self.Spacing, 12: self.OutlineLvl, 13: self.AutoSpaceDE, 14: self.AutoSpaceDN, 15: self.RPr, 16: self.PBdr, 17: self.XmlChildContextualSpacing, ); sorted_child_ := array( "": -1, self.SectPr.ElementName: 0, self.Tabs.ElementName: 1, self.XmlChildWidowControl.ElementName: 2, self.SnapToGrid.ElementName: 3, self.PStyle.ElementName: 4, self.NumPr.ElementName: 5, self.Jc.ElementName: 6, self.Ind.ElementName: 7, self.XmlChildKeepNext.ElementName: 8, self.XmlChildKeepLines.ElementName: 9, self.AdjustRightInd.ElementName: 10, self.Spacing.ElementName: 11, self.OutlineLvl.ElementName: 12, self.AutoSpaceDE.ElementName: 13, self.AutoSpaceDN.ElementName: 14, self.RPr.ElementName: 15, self.PBdr.ElementName: 16, self.XmlChildContextualSpacing.ElementName: 17, ); end; function PPr.InitNode(_node: XmlNode);override; begin if ifObj(self.XmlNode) then for k,v in child_elements_ do v.InitNode(nil); self.XmlNode := ifObj(_node) ? _node : nil; node := ifObj(_node) ? _node.FirstChild() : nil; flag := false; if ifnil(child_elements_[0]) and length(child_elements_) > 0 then begin flag := true; arr := child_elements_; child_elements_ := array(); end pre := ifString(self.Prefix) ? self.Prefix + ":" : ""; while ifObj(node) do begin node_name := node.GetName(); pos := sorted_child_[node_name]; if ifnil(pos) or pos = -1 then begin obj := nil; case node_name of end; if ifObj(obj) then obj.InitNode(node); end else if flag then begin obj := arr[pos]; obj.InitNode(node); child_elements_[length(child_elements_)] := obj; end else begin child_elements_[pos].InitNode(node); end node := node.NextElement(); end end; function PPr.Copy(_obj: PPr);override; begin self.SectPr.Copy(_obj.SectPr); self.Tabs.Copy(_obj.Tabs); self.XmlChildWidowControl.Copy(_obj.XmlChildWidowControl); self.SnapToGrid.Copy(_obj.SnapToGrid); self.PStyle.Copy(_obj.PStyle); self.NumPr.Copy(_obj.NumPr); self.Jc.Copy(_obj.Jc); self.Ind.Copy(_obj.Ind); self.XmlChildKeepNext.Copy(_obj.XmlChildKeepNext); self.XmlChildKeepLines.Copy(_obj.XmlChildKeepLines); self.AdjustRightInd.Copy(_obj.AdjustRightInd); self.Spacing.Copy(_obj.Spacing); self.OutlineLvl.Copy(_obj.OutlineLvl); self.AutoSpaceDE.Copy(_obj.AutoSpaceDE); self.AutoSpaceDN.Copy(_obj.AutoSpaceDN); self.RPr.Copy(_obj.RPr); self.PBdr.Copy(_obj.PBdr); self.XmlChildContextualSpacing.Copy(_obj.XmlChildContextualSpacing); end; function PPr.ReadXmlChildWidowControl(); begin return ifnil(self.XmlChildWidowControl.Value) ? false : true; end; function PPr.WriteXmlChildWidowControl(_value); begin self.XmlChildWidowControl.Value := _value; end; function PPr.ReadXmlChildKeepNext(); begin return ifnil(self.XmlChildKeepNext.Value) ? false : true; end; function PPr.WriteXmlChildKeepNext(_value); begin self.XmlChildKeepNext.Value := _value; end; function PPr.ReadXmlChildKeepLines(); begin return ifnil(self.XmlChildKeepLines.Value) ? false : true; end; function PPr.WriteXmlChildKeepLines(_value); begin self.XmlChildKeepLines.Value := _value; end; function PPr.ReadXmlChildContextualSpacing(); begin return ifnil(self.XmlChildContextualSpacing.Value) ? false : true; end; function PPr.WriteXmlChildContextualSpacing(_value); begin self.XmlChildContextualSpacing.Value := _value; end;