120 lines
3.9 KiB
Plaintext
120 lines
3.9 KiB
Plaintext
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;
|
|
function GetFtr(target: string): Ftr;
|
|
function GetHdr(target: string): Hdr;
|
|
function GetFtrRelsAdapter(target: string): RelationShipsAdapter;
|
|
function GetHdrRelsAdapter(target: string): RelationShipsAdapter;
|
|
|
|
private
|
|
styles_deserialize_flag_;
|
|
styles_adapter_;
|
|
document_rels_adapter_;
|
|
numbering_ware_;
|
|
tbl_style_pr_hash_;
|
|
ftr_hash_;
|
|
hdr_hash_;
|
|
hdr_rel_hash_;
|
|
ftr_rel_hash_;
|
|
end;
|
|
|
|
function TSDocxComponentsWare.Create();
|
|
begin
|
|
class(Components).Create();
|
|
tbl_style_pr_hash_ := array();
|
|
ftr_hash_ := array();
|
|
hdr_hash_ := array();
|
|
hdr_rel_hash_ := array();
|
|
ftr_rel_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;
|
|
|
|
function TSDocxComponentsWare.GetFtr(target: string): Ftr;
|
|
begin
|
|
if ftr_hash_[target] then return ftr_hash_[target];
|
|
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
|
obj := {self.}Headers(strtoint(index));
|
|
obj.Deserialize();
|
|
ftr_hash_[target] := obj;
|
|
return obj;
|
|
end;
|
|
|
|
function TSDocxComponentsWare.GetHdr(target: string): Hdr;
|
|
begin
|
|
if hdr_hash_[target] then return hdr_hash_[target];
|
|
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
|
obj := {self.}Footers(strtoint(index));
|
|
obj.Deserialize();
|
|
hdr_hash_[target] := obj;
|
|
return obj;
|
|
end;
|
|
|
|
function TSDocxComponentsWare.GetHdrRelsAdapter(target: string): RelationShipsAdapter;
|
|
begin
|
|
if hdr_rel_hash_[target] then return hdr_rel_hash_[target];
|
|
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
|
obj := {self.}HeaderRels(strtoint(index));
|
|
obj.Deserialize();
|
|
rels_adapter := new RelationShipsAdapter(obj);
|
|
hdr_rel_hash_[target] := rels_adapter;
|
|
return rels_adapter;
|
|
end;
|
|
|
|
function TSDocxComponentsWare.GetFtrRelsAdapter(target: string): RelationShipsAdapter;
|
|
begin
|
|
if ftr_rel_hash_[target] then return ftr_rel_hash_[target];
|
|
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
|
obj := {self.}FooterRels(strtoint(index));
|
|
obj.Deserialize();
|
|
rels_adapter := new RelationShipsAdapter(obj);
|
|
ftr_rel_hash_[target] := rels_adapter;
|
|
return rels_adapter;
|
|
end;
|