type PgMar = 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: PgMar);override; property Top read ReadXmlAttrTop write WriteXmlAttrTop; property Right read ReadXmlAttrRight write WriteXmlAttrRight; property Bottom read ReadXmlAttrBottom write WriteXmlAttrBottom; property Left read ReadXmlAttrLeft write WriteXmlAttrLeft; property Header read ReadXmlAttrHeader write WriteXmlAttrHeader; property Footer read ReadXmlAttrFooter write WriteXmlAttrFooter; property Gutter read ReadXmlAttrGutter write WriteXmlAttrGutter; function ReadXmlAttrTop(); function WriteXmlAttrTop(_value); function ReadXmlAttrRight(); function WriteXmlAttrRight(_value); function ReadXmlAttrBottom(); function WriteXmlAttrBottom(_value); function ReadXmlAttrLeft(); function WriteXmlAttrLeft(_value); function ReadXmlAttrHeader(); function WriteXmlAttrHeader(_value); function ReadXmlAttrFooter(); function WriteXmlAttrFooter(_value); function ReadXmlAttrGutter(); function WriteXmlAttrGutter(_value); public // Attributes XmlAttrTop: OpenXmlAttribute; XmlAttrRight: OpenXmlAttribute; XmlAttrBottom: OpenXmlAttribute; XmlAttrLeft: OpenXmlAttribute; XmlAttrHeader: OpenXmlAttribute; XmlAttrFooter: OpenXmlAttribute; XmlAttrGutter: OpenXmlAttribute; // Children end; function PgMar.Create();overload; begin {self.}Create(nil, "w", "pgMar"); end; function PgMar.Create(_node: XmlNode);overload; begin class(OpenXmlElement).Create(_node: XmlNode); end; function PgMar.Create(_parent: tslobj; _prefix: string; _local_name: string);overload; begin class(OpenXmlElement).Create(_parent, _prefix, _local_name); end; function PgMar.Init();override; begin {self.}XmlAttrTop := new OpenXmlAttribute({self.}Prefix, "top", nil); {self.}XmlAttrRight := new OpenXmlAttribute({self.}Prefix, "right", nil); {self.}XmlAttrBottom := new OpenXmlAttribute({self.}Prefix, "bottom", nil); {self.}XmlAttrLeft := new OpenXmlAttribute({self.}Prefix, "left", nil); {self.}XmlAttrHeader := new OpenXmlAttribute({self.}Prefix, "header", nil); {self.}XmlAttrFooter := new OpenXmlAttribute({self.}Prefix, "footer", nil); {self.}XmlAttrGutter := new OpenXmlAttribute({self.}Prefix, "gutter", nil); end; function PgMar.InitAttributes();override; begin attributes_ := array( {self.}XmlAttrTop, {self.}XmlAttrRight, {self.}XmlAttrBottom, {self.}XmlAttrLeft, {self.}XmlAttrHeader, {self.}XmlAttrFooter, {self.}XmlAttrGutter, ); end; function PgMar.InitChildren();override; begin child_elements_ := array( ); sorted_child_ := array( "": -1, ); end; function PgMar.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; end; function PgMar.Copy(_obj: PgMar);override; begin if not ifnil(_obj.XmlAttrTop.Value) then {self.}XmlAttrTop.Value := _obj.XmlAttrTop.Value; if not ifnil(_obj.XmlAttrRight.Value) then {self.}XmlAttrRight.Value := _obj.XmlAttrRight.Value; if not ifnil(_obj.XmlAttrBottom.Value) then {self.}XmlAttrBottom.Value := _obj.XmlAttrBottom.Value; if not ifnil(_obj.XmlAttrLeft.Value) then {self.}XmlAttrLeft.Value := _obj.XmlAttrLeft.Value; if not ifnil(_obj.XmlAttrHeader.Value) then {self.}XmlAttrHeader.Value := _obj.XmlAttrHeader.Value; if not ifnil(_obj.XmlAttrFooter.Value) then {self.}XmlAttrFooter.Value := _obj.XmlAttrFooter.Value; if not ifnil(_obj.XmlAttrGutter.Value) then {self.}XmlAttrGutter.Value := _obj.XmlAttrGutter.Value; end; function PgMar.ReadXmlAttrTop(); begin return {self.}XmlAttrTop.Value; end; function PgMar.WriteXmlAttrTop(_value); begin {self.}XmlAttrTop.Value := _value; end; function PgMar.ReadXmlAttrRight(); begin return {self.}XmlAttrRight.Value; end; function PgMar.WriteXmlAttrRight(_value); begin {self.}XmlAttrRight.Value := _value; end; function PgMar.ReadXmlAttrBottom(); begin return {self.}XmlAttrBottom.Value; end; function PgMar.WriteXmlAttrBottom(_value); begin {self.}XmlAttrBottom.Value := _value; end; function PgMar.ReadXmlAttrLeft(); begin return {self.}XmlAttrLeft.Value; end; function PgMar.WriteXmlAttrLeft(_value); begin {self.}XmlAttrLeft.Value := _value; end; function PgMar.ReadXmlAttrHeader(); begin return {self.}XmlAttrHeader.Value; end; function PgMar.WriteXmlAttrHeader(_value); begin {self.}XmlAttrHeader.Value := _value; end; function PgMar.ReadXmlAttrFooter(); begin return {self.}XmlAttrFooter.Value; end; function PgMar.WriteXmlAttrFooter(_value); begin {self.}XmlAttrFooter.Value := _value; end; function PgMar.ReadXmlAttrGutter(); begin return {self.}XmlAttrGutter.Value; end; function PgMar.WriteXmlAttrGutter(_value); begin {self.}XmlAttrGutter.Value := _value; end;