type Style = 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: Style);override; property Type read ReadXmlAttrType write WriteXmlAttrType; property Default read ReadXmlAttrDefault write WriteXmlAttrDefault; property StyleId read ReadXmlAttrStyleId write WriteXmlAttrStyleId; function ReadXmlAttrType(); function WriteXmlAttrType(_value); function ReadXmlAttrDefault(); function WriteXmlAttrDefault(_value); function ReadXmlAttrStyleId(); function WriteXmlAttrStyleId(_value); property SemiHidden read ReadXmlChildSemiHidden write WriteXmlChildSemiHidden; property UnhideWhenUsed read ReadXmlChildUnhideWhenUsed write WriteXmlChildUnhideWhenUsed; property QFormat read ReadXmlChildQFormat write WriteXmlChildQFormat; property Rsid read ReadXmlChildRsid write WriteXmlChildRsid; function ReadXmlChildSemiHidden(); function WriteXmlChildSemiHidden(_value); function ReadXmlChildUnhideWhenUsed(); function WriteXmlChildUnhideWhenUsed(_value); function ReadXmlChildQFormat(); function WriteXmlChildQFormat(_value); function ReadXmlChildRsid(); function WriteXmlChildRsid(_value); public // Attributes XmlAttrType: OpenXmlAttribute; XmlAttrDefault: OpenXmlAttribute; XmlAttrStyleId: OpenXmlAttribute; // Children Name: PureWVal; BasedOn: PureWVal; Next: PureWVal; AutoRedefine: PureWVal; Link: PureWVal; UIPriority: PureWVal; XmlChildSemiHidden: OpenXmlEmpty; XmlChildUnhideWhenUsed: OpenXmlEmpty; XmlChildQFormat: OpenXmlEmpty; XmlChildRsid: OpenXmlEmpty; PPr: PPr; RPr: RPr; TblPr: TblPr; TrPr: TrPr; TcPr: TcPr; TblStylePr: TblStylePr; end; function Style.Create();overload; begin {self.}Create(nil, "w", "style"); end; function Style.Create(_node: XmlNode);overload; begin class(OpenXmlElement).Create(_node: XmlNode); end; function Style.Create(_parent: tslobj; _prefix: string; _local_name: string);overload; begin class(OpenXmlElement).Create(_parent, _prefix, _local_name); end; function Style.Init();override; begin {self.}XmlAttrType := new OpenXmlAttribute({self.}Prefix, "type", nil); {self.}XmlAttrDefault := new OpenXmlAttribute({self.}Prefix, "default", nil); {self.}XmlAttrStyleId := new OpenXmlAttribute({self.}Prefix, "styleId", nil); {self.}Name := new PureWVal(self, {self.}Prefix, "name"); {self.}BasedOn := new PureWVal(self, {self.}Prefix, "basedOn"); {self.}Next := new PureWVal(self, {self.}Prefix, "next"); {self.}AutoRedefine := new PureWVal(self, {self.}Prefix, "autoRedefine"); {self.}Link := new PureWVal(self, {self.}Prefix, "link"); {self.}UIPriority := new PureWVal(self, {self.}Prefix, "uiPriority"); {self.}XmlChildSemiHidden := new OpenXmlEmpty(self, {self.}Prefix, "semiHidden"); {self.}XmlChildUnhideWhenUsed := new OpenXmlEmpty(self, {self.}Prefix, "unhideWhenUsed"); {self.}XmlChildQFormat := new OpenXmlEmpty(self, {self.}Prefix, "qFormat"); {self.}XmlChildRsid := new PureWVal(self, {self.}Prefix, "rsid"); {self.}PPr := new PPr(self, {self.}Prefix, "pPr"); {self.}RPr := new RPr(self, {self.}Prefix, "rPr"); {self.}TblPr := new TblPr(self, {self.}Prefix, "tblPr"); {self.}TrPr := new TrPr(self, {self.}Prefix, "trPr"); {self.}TcPr := new TcPr(self, {self.}Prefix, "tcPr"); {self.}TblStylePr := new TblStylePr(self, {self.}Prefix, "tblStylePr"); end; function Style.InitAttributes();override; begin attributes_ := array( {self.}XmlAttrType, {self.}XmlAttrDefault, {self.}XmlAttrStyleId, ); end; function Style.InitChildren();override; begin child_elements_ := array( 0: {self.}Name, 1: {self.}BasedOn, 2: {self.}Next, 3: {self.}AutoRedefine, 4: {self.}Link, 5: {self.}UIPriority, 6: {self.}XmlChildSemiHidden, 7: {self.}XmlChildUnhideWhenUsed, 8: {self.}XmlChildQFormat, 9: {self.}XmlChildRsid, 10: {self.}PPr, 11: {self.}RPr, 12: {self.}TblPr, 13: {self.}TrPr, 14: {self.}TcPr, 15: {self.}TblStylePr, ); sorted_child_ := array( "": -1, {self.}Name.ElementName: 0, {self.}BasedOn.ElementName: 1, {self.}Next.ElementName: 2, {self.}AutoRedefine.ElementName: 3, {self.}Link.ElementName: 4, {self.}UIPriority.ElementName: 5, {self.}XmlChildSemiHidden.ElementName: 6, {self.}XmlChildUnhideWhenUsed.ElementName: 7, {self.}XmlChildQFormat.ElementName: 8, {self.}XmlChildRsid.ElementName: 9, {self.}PPr.ElementName: 10, {self.}RPr.ElementName: 11, {self.}TblPr.ElementName: 12, {self.}TrPr.ElementName: 13, {self.}TcPr.ElementName: 14, {self.}TblStylePr.ElementName: 15, ); end; function Style.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 Style.Copy(_obj: Style);override; begin if not ifnil(_obj.XmlAttrType.Value) then {self.}XmlAttrType.Value := _obj.XmlAttrType.Value; if not ifnil(_obj.XmlAttrDefault.Value) then {self.}XmlAttrDefault.Value := _obj.XmlAttrDefault.Value; if not ifnil(_obj.XmlAttrStyleId.Value) then {self.}XmlAttrStyleId.Value := _obj.XmlAttrStyleId.Value; {self.}Name.Copy(_obj.Name); {self.}BasedOn.Copy(_obj.BasedOn); {self.}Next.Copy(_obj.Next); {self.}AutoRedefine.Copy(_obj.AutoRedefine); {self.}Link.Copy(_obj.Link); {self.}UIPriority.Copy(_obj.UIPriority); {self.}XmlChildSemiHidden.Copy(_obj.XmlChildSemiHidden); {self.}XmlChildUnhideWhenUsed.Copy(_obj.XmlChildUnhideWhenUsed); {self.}XmlChildQFormat.Copy(_obj.XmlChildQFormat); {self.}XmlChildRsid.Copy(_obj.XmlChildRsid); {self.}PPr.Copy(_obj.PPr); {self.}RPr.Copy(_obj.RPr); {self.}TblPr.Copy(_obj.TblPr); {self.}TrPr.Copy(_obj.TrPr); {self.}TcPr.Copy(_obj.TcPr); {self.}TblStylePr.Copy(_obj.TblStylePr); end; function Style.ReadXmlAttrType(); begin return {self.}XmlAttrType.Value; end; function Style.WriteXmlAttrType(_value); begin {self.}XmlAttrType.Value := _value; end; function Style.ReadXmlAttrDefault(); begin return {self.}XmlAttrDefault.Value; end; function Style.WriteXmlAttrDefault(_value); begin {self.}XmlAttrDefault.Value := _value; end; function Style.ReadXmlAttrStyleId(); begin return {self.}XmlAttrStyleId.Value; end; function Style.WriteXmlAttrStyleId(_value); begin {self.}XmlAttrStyleId.Value := _value; end; function Style.ReadXmlChildSemiHidden(); begin return ifnil({self.}XmlChildSemiHidden.Value) ? false : true; end; function Style.WriteXmlChildSemiHidden(_value); begin {self.}XmlChildSemiHidden.Value := _value; end; function Style.ReadXmlChildUnhideWhenUsed(); begin return ifnil({self.}XmlChildUnhideWhenUsed.Value) ? false : true; end; function Style.WriteXmlChildUnhideWhenUsed(_value); begin {self.}XmlChildUnhideWhenUsed.Value := _value; end; function Style.ReadXmlChildQFormat(); begin return ifnil({self.}XmlChildQFormat.Value) ? false : true; end; function Style.WriteXmlChildQFormat(_value); begin {self.}XmlChildQFormat.Value := _value; end; function Style.ReadXmlChildRsid(); begin return ifnil({self.}XmlChildRsid.Value) ? false : true; end; function Style.WriteXmlChildRsid(_value); begin {self.}XmlChildRsid.Value := _value; end;