type PgMar = class(OpenXmlElement) public function Create();overload; function Create(_node);overload; function Create(_parent, _prefix, _local_name);overload; function Init();override; function InitAttributes();override; function InitChildren();override; function InitNode(_node);override; function Copy(_obj);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; XmlAttrRight; XmlAttrBottom; XmlAttrLeft; XmlAttrHeader; XmlAttrFooter; XmlAttrGutter; // Children end; function PgMar.Create();overload; begin self.Create(nil, "w", "pgMar"); end; function PgMar.Create(_node);overload; begin class(OpenXmlElement).Create(_node); end; function PgMar.Create(_parent, _prefix, _local_name);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);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);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;