@@ -1,4 +1,4 @@
// Version 1.6.6
// Version 1.6.7
Function TOfficeObj(n);
Begin
case lowercase(n) of
@@ -246,6 +246,8 @@ Begin
return new TPageBorders();
"tpage":
return new TPage();
"tpagenumtype":
return new TPageNumType();
"tdocsection":
return new TDocSection();
"tcellmerge":
@@ -7922,6 +7924,47 @@ type TPage=class(NodeInfo)
//Nodes
End;
///////////////////////////////////////////////////////////////
/// TPageNumType
///////////////////////////////////////////////////////////////
type TPageNumType=class(NodeInfo)
Function Create(); overload;
Begin
Create(nil, 'w:pgNumType');
End;
Function Create(p, name); overload;
Begin
Class(NodeInfo).Create(p, name);
Init();
End;
Function Init();
Begin
//TODO...
End;
Function InitRootNode(node);
Begin
RootObj := node;
End;
Function GetAttrs(); override;
Begin
return array(("Start", "w:start", Start, "起始页码")) union ExtAttr;
End;
Function GetChildren(); override;
Begin
return ExtNodes;
End;
//Attributes
Start;
//Nodes
End;
///////////////////////////////////////////////////////////////
/// TDocSectionImpl
///////////////////////////////////////////////////////////////
@@ -7944,6 +7987,7 @@ type TDocSectionImpl=class(NodeInfo)
cols := new TCols(self, 'w:cols');
docGrid := new TDocGrid(self, 'w:docGrid');
pgMar := new TPageMargin(self, 'w:pgMar');
pgNumType := new TPageNumType(self, 'w:pgNumType');
Page := new TPage(self, 'w:pgSz');
Borders := new TPageBorders(self, 'w:pgBorders');
//TODO...
@@ -7957,6 +8001,7 @@ type TDocSectionImpl=class(NodeInfo)
cols.InitRootNode(node);
docGrid.InitRootNode(node);
pgMar.InitRootNode(node);
pgNumType.InitRootNode(node);
Page.InitRootNode(node);
Borders.InitRootNode(node);
End;
@@ -7974,6 +8019,7 @@ type TDocSectionImpl=class(NodeInfo)
,('field':'cols','name':cols.NodeName,'obj':cols,'attrEx':'','nodeType':'','attrName':'', 'desc':'Column Definitions', 'class':'TCols')
,('field':'docGrid','name':docGrid.NodeName,'obj':docGrid,'attrEx':'','nodeType':'','attrName':'', 'desc':'Document Grid', 'class':'TDocGrid')
,('field':'pgMar','name':pgMar.NodeName,'obj':pgMar,'attrEx':'','nodeType':'','attrName':'', 'desc':'Page Margin设置', 'class':'TPageMargin')
,('field':'pgNumType','name':pgNumType.NodeName,'obj':pgNumType,'attrEx':'','nodeType':'','attrName':'', 'desc':'Page NumType设置', 'class':'TPageNumType')
,('field':'Page','name':Page.NodeName,'obj':Page,'attrEx':'','nodeType':'','attrName':'', 'desc':'页面设置', 'class':'TPage')
,('field':'Borders','name':Borders.NodeName,'obj':Borders,'attrEx':'','nodeType':'','attrName':'', 'desc':'页面边框属性', 'class':'TPageBorders')
,('field':'titlePg','name':'w:titlePg','obj':titlePg,'attrEx':'','nodeType':'empty','attrName':'', 'desc':'第一页是否有不同的页眉和页脚.', 'class':'')
@@ -7983,6 +8029,36 @@ type TDocSectionImpl=class(NodeInfo)
) union ExtNodes;
End;
Function AppendReference(name);
Begin
lname := lowercase(name);
node_name := lname = "header" ? "w:headerReference" : "w:footerReference";
obj := nil;
if ifObj(RootObj) then
begin
curNode := class(TSXml).GetNode(RootObj, NodeUri, "last");
if ifObj(curNode) then
begin
node := curNode.InsertFirstChild("element", node_name);
obj := new TReference(nil, node_name);
obj.InitRootNode(node);
end
end
return obj;
End;
///添加一个页脚页脚的TReference对象
///name: "header", "footer"
///注:TOfficeObj("TDocSection")创建的新对象有效
Function AddReference(name);
Begin
lname := lowercase(name);
node_name := lname = "header" ? "w:headerReference" : "w:footerReference";
o := new TReference(nil, node_name);
NewChildNode( array("field":"", "name":node_name, "obj":o, "attrEx":"", "nodeType":""));
return o;
End;
//Attributes
//Nodes
@@ -7992,6 +8068,7 @@ type TDocSectionImpl=class(NodeInfo)
cols;
docGrid;
pgMar;
pgNumType;
Page;
Borders;
titlePg;
@@ -14239,7 +14316,7 @@ Type TDocSection = Class(DocObject, TDocSectionImpl)
Begin
return _AddHeaderFooter('header', (ifNil(type) or type = '') ? 'default' : type);
End;
///添加页脚
///type:页眉类型,(default、even、first)
///default, Header for odd pages or all if no even header.
@@ -14249,7 +14326,7 @@ Type TDocSection = Class(DocObject, TDocSectionImpl)
Begin
return _AddHeaderFooter('footer', (ifNil(type) or type = '') ? 'default' : type);
End;
Function _AddHeaderFooter(headerFooter, hfType);
Begin
if headerFooter = 'header' then Begin