type TblPr = 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: TblPr);override; public // Attributes // Children Jc: PureWVal; TblStyle: PureWVal; TblW: TblW; TblInd: TblW; TblLayout: TblLayout; TblLook: TblLook; TblBorders: TblBorders; TblCellMar: TblCellMar; end; function TblPr.Create();overload; begin self.Create(nil, "w", "tblPr"); end; function TblPr.Create(_node: XmlNode);overload; begin class(OpenXmlElement).Create(_node: XmlNode); end; function TblPr.Create(_parent: tslobj; _prefix: string; _local_name: string);overload; begin class(OpenXmlElement).Create(_parent, _prefix, _local_name); end; function TblPr.Init();override; begin self.Jc := new PureWVal(self, self.Prefix, "jc"); self.TblStyle := new PureWVal(self, self.Prefix, "tblStyle"); self.TblW := new TblW(self, self.Prefix, "tblW"); self.TblInd := new TblW(self, self.Prefix, "tblInd"); self.TblLayout := new TblLayout(self, self.Prefix, "tblLayout"); self.TblLook := new TblLook(self, self.Prefix, "tblLook"); self.TblBorders := new TblBorders(self, self.Prefix, "tblBorders"); self.TblCellMar := new TblCellMar(self, self.Prefix, "tblCellMar"); end; function TblPr.InitAttributes();override; begin attributes_ := array( ); end; function TblPr.InitChildren();override; begin child_elements_ := array( 0: self.Jc, 1: self.TblStyle, 2: self.TblW, 3: self.TblInd, 4: self.TblLayout, 5: self.TblLook, 6: self.TblBorders, 7: self.TblCellMar, ); sorted_child_ := array( "": -1, self.Jc.ElementName: 0, self.TblStyle.ElementName: 1, self.TblW.ElementName: 2, self.TblInd.ElementName: 3, self.TblLayout.ElementName: 4, self.TblLook.ElementName: 5, self.TblBorders.ElementName: 6, self.TblCellMar.ElementName: 7, ); end; function TblPr.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 TblPr.Copy(_obj: TblPr);override; begin self.Jc.Copy(_obj.Jc); self.TblStyle.Copy(_obj.TblStyle); self.TblW.Copy(_obj.TblW); self.TblInd.Copy(_obj.TblInd); self.TblLayout.Copy(_obj.TblLayout); self.TblLook.Copy(_obj.TblLook); self.TblBorders.Copy(_obj.TblBorders); self.TblCellMar.Copy(_obj.TblCellMar); end;