type AbstractNum = 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 Copy(_obj: AbstractNum);override; public // attributes property property AbstractNumId read ReadXmlAttrAbstractNumId write WriteXmlAttrAbstractNumId; property RestartNumberingAfterBreak read ReadXmlAttrRestartNumberingAfterBreak write WriteXmlAttrRestartNumberingAfterBreak; function ReadXmlAttrAbstractNumId(); function WriteXmlAttrAbstractNumId(_value); function ReadXmlAttrRestartNumberingAfterBreak(); function WriteXmlAttrRestartNumberingAfterBreak(_value); // normal property property Nsid read ReadXmlChildNsid; property MultiLevelType read ReadXmlChildMultiLevelType; property Tmpl read ReadXmlChildTmpl; function ReadXmlChildNsid(); function ReadXmlChildMultiLevelType(); function ReadXmlChildTmpl(); // multi property property Lvls read ReadLvls; function ReadLvls(_index); function AddLvl(): Lvl; function AppendLvl(): Lvl; public // Attributes XmlAttrAbstractNumId: OpenXmlAttribute; XmlAttrRestartNumberingAfterBreak: OpenXmlAttribute; // Children XmlChildNsid: PureWVal; XmlChildMultiLevelType: PureWVal; XmlChildTmpl: PureWVal; end; function AbstractNum.Create();overload; begin {self.}Create(nil, "w", "abstractNum"); end; function AbstractNum.Create(_node: XmlNode);overload; begin class(OpenXmlElement).Create(_node: XmlNode); end; function AbstractNum.Create(_parent: tslobj; _prefix: string; _local_name: string);overload; begin setsysparam(pn_calcctrlword(), getsysparam(pn_calcctrlword()) .| 0x200); class(OpenXmlElement).Create(_parent, _prefix, _local_name); end; function AbstractNum.Init();override; begin pre := {self.}Prefix ? {self.}Prefix + ":" : ""; attributes_ := array(); attributes_pf_ := array( pre + "abstractNumId": makeweakref(thisFunction(WriteXmlAttrAbstractNumId)), pre + "restartNumberingAfterBreak": makeweakref(thisFunction(WriteXmlAttrRestartNumberingAfterBreak)), ); sorted_child_ := array( pre + "nsid": array(0, makeweakref(thisFunction(ReadXmlChildNsid))), pre + "multiLevelType": array(1, makeweakref(thisFunction(ReadXmlChildMultiLevelType))), pre + "tmpl": array(2, makeweakref(thisFunction(ReadXmlChildTmpl))), pre + "lvl": array(3, makeweakref(thisFunction(AppendLvl))), ); container_ := new TSOfficeContainer(sorted_child_); end; function AbstractNum.Copy(_obj: AbstractNum);override; begin tslassigning_backup := tslassigning; tslassigning := 1; class(OpenXmlElement).Copy(_obj); if not ifnil(_obj.AbstractNumId) then {self.}AbstractNumId := _obj.AbstractNumId; if not ifnil(_obj.RestartNumberingAfterBreak) then {self.}RestartNumberingAfterBreak := _obj.RestartNumberingAfterBreak; if not ifnil(_obj.XmlChildNsid) then {self.}Nsid.Copy(_obj.XmlChildNsid); if not ifnil(_obj.XmlChildMultiLevelType) then {self.}MultiLevelType.Copy(_obj.XmlChildMultiLevelType); if not ifnil(_obj.XmlChildTmpl) then {self.}Tmpl.Copy(_obj.XmlChildTmpl); tslassigning := tslassigning_backup; end; function AbstractNum.ReadXmlAttrAbstractNumId(); begin return {self.}XmlAttrAbstractNumId.Value; end; function AbstractNum.WriteXmlAttrAbstractNumId(_value); begin if ifnil({self.}XmlAttrAbstractNumId) then begin {self.}XmlAttrAbstractNumId := new OpenXmlAttribute({self.}Prefix, "abstractNumId", nil); attributes_[length(attributes_)] := {self.}XmlAttrAbstractNumId; end {self.}XmlAttrAbstractNumId.Value := _value; end; function AbstractNum.ReadXmlAttrRestartNumberingAfterBreak(); begin return {self.}XmlAttrRestartNumberingAfterBreak.Value; end; function AbstractNum.WriteXmlAttrRestartNumberingAfterBreak(_value); begin if ifnil({self.}XmlAttrRestartNumberingAfterBreak) then begin {self.}XmlAttrRestartNumberingAfterBreak := new OpenXmlAttribute({self.}Prefix, "restartNumberingAfterBreak", nil); attributes_[length(attributes_)] := {self.}XmlAttrRestartNumberingAfterBreak; end {self.}XmlAttrRestartNumberingAfterBreak.Value := _value; end; function AbstractNum.ReadXmlChildNsid(); begin if tslassigning and ifnil({self.}XmlChildNsid) then begin {self.}XmlChildNsid := new PureWVal(self, {self.}Prefix, "nsid"); container_.Set({self.}XmlChildNsid); end return {self.}XmlChildNsid; end; function AbstractNum.ReadXmlChildMultiLevelType(); begin if tslassigning and ifnil({self.}XmlChildMultiLevelType) then begin {self.}XmlChildMultiLevelType := new PureWVal(self, {self.}Prefix, "multiLevelType"); container_.Set({self.}XmlChildMultiLevelType); end return {self.}XmlChildMultiLevelType; end; function AbstractNum.ReadXmlChildTmpl(); begin if tslassigning and ifnil({self.}XmlChildTmpl) then begin {self.}XmlChildTmpl := new PureWVal(self, {self.}Prefix, "tmpl"); container_.Set({self.}XmlChildTmpl); end return {self.}XmlChildTmpl; end; function AbstractNum.ReadLvls(_index); begin ind := ifnil(_index) ? -2 : _index; pre := {self.}Prefix ? {self.}Prefix + ":" : ""; return container_.Get(pre + "lvl", ind); end; function AbstractNum.AddLvl(): Lvl; begin obj := new Lvl(self, {self.}Prefix, "lvl"); container_.Insert(obj); return obj; end; function AbstractNum.AppendLvl(): Lvl; begin obj := new Lvl(self, {self.}Prefix, "lvl"); container_.Append(obj); return obj; end;