type TSDocxComponentsWare = class(Components) public function Create(); function GetStyles(): Styles; function GetStylesAdapter(): StylesAdapter; function GetDocumentRelsAdapter(): RelationShipsAdapter; function GetNumberingWare(): TSNumberingWare; function GetTblStylePrByType(style_id: string; type: string): TblStylePr; private styles_deserialize_flag_; styles_adapter_; document_rels_adapter_; numbering_ware_; tbl_style_pr_hash_; end; function TSDocxComponentsWare.Create(); begin class(Components).Create(); tbl_style_pr_hash_ := array(); end; function TSDocxComponentsWare.GetStyles(): Styles; begin if styles_deserialize_flag_ then return {self.}Styles; {self.}Styles.Deserialize(); styles_deserialize_flag_ := true; return {self.}Styles; end; function TSDocxComponentsWare.GetStylesAdapter(): StylesAdapter; begin if styles_adapter_ then return styles_adapter_; styles_adapter_ := new StylesAdapter({self.}GetStyles()); return styles_adapter_; end; function TSDocxComponentsWare.GetDocumentRelsAdapter(): RelationShipsAdapter; begin if document_rels_adapter_ then return document_rels_adapter_; {self.}DocumentRels.Deserialize(); document_rels_adapter_ := new RelationShipsAdapter({self.}DocumentRels); return document_rels_adapter_; end; function TSDocxComponentsWare.GetNumberingWare(): TSNumberingWare; begin if numbering_ware_ then return numbering_ware_; if not {self.}Numbering then return nil; {self.}Numbering.Deserialize(); numbering_ware_ := new TSNumberingWare({self.}Numbering); return numbering_ware_; end; function TSDocxComponentsWare.GetTblStylePrByType(style_id: string; type: string): TblStylePr; begin if tbl_style_pr_hash_[style_id][type] then return tbl_style_pr_hash_[style_id][type]; styles_adapter := {self.}GetStylesAdapter(); style := styles_adapter.GetStyleByStyleId(style_id); style := new StyleAdapter(style); tbl_style_pr := style.GetTblStylePrByType(type); tbl_style_pr_hash_[style_id][type] := tbl_style_pr; return tbl_style_pr; end;