range重新设计
This commit is contained in:
parent
3781bc96e7
commit
f0560b2330
|
|
@ -357,7 +357,7 @@ Begin
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
||||||
// property
|
// Properties
|
||||||
Function TSDocxApplication.ReadDocuments(Index)
|
Function TSDocxApplication.ReadDocuments(Index)
|
||||||
Begin
|
Begin
|
||||||
if ifnil(Index) then return documents_;
|
if ifnil(Index) then return documents_;
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,9 @@ Function TSDocxCell.Init(node);overload;
|
||||||
Begin
|
Begin
|
||||||
cell_ := TOfficeObj("tcell");
|
cell_ := TOfficeObj("tcell");
|
||||||
cell_.Create(node);
|
cell_.Create(node);
|
||||||
|
tcpr_node := class(TSXml).GetNode(node, "w:tcPr", "first");
|
||||||
|
tcpr_ := TOfficeObj("TwTcPr");
|
||||||
|
tcpr_.InitRootNode(tcpr_node);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxCell.GetCell();
|
Function TSDocxCell.GetCell();
|
||||||
|
|
@ -418,7 +421,7 @@ End;
|
||||||
Function TSDocxCell.ReadShading();
|
Function TSDocxCell.ReadShading();
|
||||||
Begin
|
Begin
|
||||||
shading_obj := new TSDocxShading(self.Application, self.Creator, self);
|
shading_obj := new TSDocxShading(self.Application, self.Creator, self);
|
||||||
shading_obj.Init(tcpr_);
|
shading_obj.Init(tcpr_.Shading);
|
||||||
return shading_obj;
|
return shading_obj;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
@ -562,12 +565,9 @@ Function TSDocxCell.ReadRange();
|
||||||
Begin
|
Begin
|
||||||
if ifnil(range_) then
|
if ifnil(range_) then
|
||||||
begin
|
begin
|
||||||
pbegin := 0;
|
obj := new TSWdRange(docx_.Body().Root(), GetCell().Root());
|
||||||
pend := 0;
|
|
||||||
arr := array();
|
|
||||||
class(TSWdCommon).CalculateRange(table_.Root(), docx_.Body().Root(), GetCell().Root(), false, pbegin, pend, arr);
|
|
||||||
range_ := new TSDocxRange(self.Application, self.Creator, self);
|
range_ := new TSDocxRange(self.Application, self.Creator, self);
|
||||||
range_.Init(pbegin, pend, arr);
|
range_.Init(docx_, obj);
|
||||||
end
|
end
|
||||||
return range_;
|
return range_;
|
||||||
End;
|
End;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
Type TSDocxDocument = Class(TSVbaBase)
|
Type TSDocxDocument = Class(TSVbaBase)
|
||||||
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Init(docx, name, fullname);
|
Function Init(docx, collection, name, fullname);
|
||||||
|
|
||||||
private
|
private
|
||||||
collection_;
|
collection_;
|
||||||
|
|
@ -12,6 +13,7 @@ private
|
||||||
paragraphs_;
|
paragraphs_;
|
||||||
|
|
||||||
public
|
public
|
||||||
|
// Methods
|
||||||
Function AcceptAllRevisions();
|
Function AcceptAllRevisions();
|
||||||
Function AcceptAllRevisionsShown();
|
Function AcceptAllRevisionsShown();
|
||||||
Function Activate(); // Completed
|
Function Activate(); // Completed
|
||||||
|
|
@ -63,7 +65,7 @@ public
|
||||||
Function PresentIt();
|
Function PresentIt();
|
||||||
Function PrintOut(Background, Append, Range, OutputFileName, _From, _To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight);
|
Function PrintOut(Background, Append, Range, OutputFileName, _From, _To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight);
|
||||||
Function PrintPreview();
|
Function PrintPreview();
|
||||||
Function Protect(Type, NoReset, Password, UseIRM, EnforceStyleLock);
|
Function Protect(_Type, NoReset, Password, UseIRM, EnforceStyleLock);
|
||||||
Function Range(Start, _End);
|
Function Range(Start, _End);
|
||||||
Function Redo(Times);
|
Function Redo(Times);
|
||||||
Function RejectAllRevisions();
|
Function RejectAllRevisions();
|
||||||
|
|
@ -112,6 +114,7 @@ public
|
||||||
Function ViewPropertyBrowser();
|
Function ViewPropertyBrowser();
|
||||||
Function WebPagePreview();
|
Function WebPagePreview();
|
||||||
|
|
||||||
|
// Properties
|
||||||
property ActiveTheme read ReadActiveTheme;
|
property ActiveTheme read ReadActiveTheme;
|
||||||
property ActiveThemeDisplayName read ReadActiveThemeDisplayName;
|
property ActiveThemeDisplayName read ReadActiveThemeDisplayName;
|
||||||
property ActiveWindow read ReadActiveWindow;
|
property ActiveWindow read ReadActiveWindow;
|
||||||
|
|
@ -579,12 +582,12 @@ public
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxDocument.Init(docx, name, fullname);
|
Function TSDocxDocument.Init(docx, collection, name, fullname);
|
||||||
Begin
|
Begin
|
||||||
docx_ := docx;
|
docx_ := docx;
|
||||||
file_name_ := name;
|
file_name_ := name;
|
||||||
full_name_ := fullname;
|
full_name_ := fullname;
|
||||||
collection_ := class(Collection).GetInstance('document');
|
collection_ := collection;
|
||||||
tables_ := new TSDocxTables(self.Application, self.Creator, self);
|
tables_ := new TSDocxTables(self.Application, self.Creator, self);
|
||||||
tables.Init(docx_);
|
tables.Init(docx_);
|
||||||
paragraphs_ := new TSDocxParagraphs(self.Application, self.Creator, self);
|
paragraphs_ := new TSDocxParagraphs(self.Application, self.Creator, self);
|
||||||
|
|
@ -599,8 +602,18 @@ End;
|
||||||
|
|
||||||
Function TSDocxDocument.Close(SaveChanges, OriginalFormat, RouteTSDocxDocument)
|
Function TSDocxDocument.Close(SaveChanges, OriginalFormat, RouteTSDocxDocument)
|
||||||
Begin
|
Begin
|
||||||
[err, msg] := docx_.Save();
|
if ifnil(SaveChanges) then SaveChanges := TSDocxEnumerations.wdDoNotSaveChanges();
|
||||||
if not err then collection_.RemoveCollection(file_name_);
|
case SaveChanges of
|
||||||
|
TSDocxEnumerations.wdDoNotSaveChanges():
|
||||||
|
collection_.RemoveCollection(file_name_);
|
||||||
|
TSDocxEnumerations.wdPromptToSaveChanges():
|
||||||
|
return;
|
||||||
|
TSDocxEnumerations.wdSaveChanges():
|
||||||
|
begin
|
||||||
|
[err, msg] := docx_.Save();
|
||||||
|
if not err then collection_.RemoveCollection(file_name_);
|
||||||
|
end
|
||||||
|
end;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxDocument.Save();
|
Function TSDocxDocument.Save();
|
||||||
|
|
@ -619,13 +632,10 @@ End;
|
||||||
|
|
||||||
Function TSDocxDocument.Range(Start, _End);
|
Function TSDocxDocument.Range(Start, _End);
|
||||||
Begin
|
Begin
|
||||||
// Range(0, 1) 左开右闭
|
// Range[0, 1) 左开右闭
|
||||||
node := docx_.Body().Node(); // <body>
|
obj := new TSWdRange(docx_.Body().Root(), Start, _End);
|
||||||
total_position := 0;
|
|
||||||
arr := array();
|
|
||||||
class(TSWdCommon).SplitRange(node, node, Start, _End, total_position, arr);
|
|
||||||
range_obj := new TSDocxRange(self.Application, self.Creator, self);
|
range_obj := new TSDocxRange(self.Application, self.Creator, self);
|
||||||
range_obj.Init(Start, _End, arr);
|
range_obj.Init(docx_, obj);
|
||||||
return range_obj;
|
return range_obj;
|
||||||
|
|
||||||
End;
|
End;
|
||||||
|
|
|
||||||
|
|
@ -35,15 +35,16 @@ End;
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxDocuments.Init();
|
Function TSDocxDocuments.Init();
|
||||||
Begin
|
Begin
|
||||||
collection_ := class(Collection).GetInstance('document');
|
collection_ := new Collection();
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxDocuments.AddDocument(docx, fullname);
|
Function TSDocxDocuments.AddDocument(docx, fullname);
|
||||||
Begin
|
Begin
|
||||||
name := ExtractFileName(fullname);
|
name := ExtractFileName(fullname);
|
||||||
document := new TSDocxDocument(self.Application, self.Creator, self);
|
document := new TSDocxDocument(self.Application, self.Creator, self);
|
||||||
document.Init(docx, name, fullname);
|
document.Init(docx, collection_, name, fullname);
|
||||||
collection_.AddCollection(document, name);
|
collection_.AddCollection(document, name);
|
||||||
|
return document;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function Operator TSDocxDocuments.[](index);
|
Function Operator TSDocxDocuments.[](index);
|
||||||
|
|
@ -56,12 +57,19 @@ Begin
|
||||||
return collection_.GetActivation();
|
return collection_.GetActivation();
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// function
|
// Methods
|
||||||
Function TSDocxDocuments.Add(Template, NewTemplate, DocumentType, Visible);
|
Function TSDocxDocuments.Add(Template, NewTemplate, DocumentType, Visible);
|
||||||
Begin
|
Begin
|
||||||
docx := new TSDocxFile();
|
docx := new TSDocxFile();
|
||||||
docx.NewFile();
|
docx.NewFile();
|
||||||
AddDocument(docx, collection_.CalNewName("文档"));
|
return AddDocument(docx, collection_.CalNewName("文档"));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxDocuments.Close(SaveChanges, OriginalFormat, RouteDocument);
|
||||||
|
Begin
|
||||||
|
num := self.Count;
|
||||||
|
for i:=1 to num do
|
||||||
|
self[i].Close(SaveChanges, OriginalFormat, RouteDocument);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxDocuments.Item(Index);
|
Function TSDocxDocuments.Item(Index);
|
||||||
|
|
@ -76,7 +84,7 @@ Begin
|
||||||
docx := new TSDocxFile();
|
docx := new TSDocxFile();
|
||||||
[err, msg] := docx.OpenFile("", FileName, PasswordDocument);
|
[err, msg] := docx.OpenFile("", FileName, PasswordDocument);
|
||||||
if err then return;
|
if err then return;
|
||||||
AddDocument(docx, docx.FileName());
|
return AddDocument(docx, docx.FileName());
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxDocuments.Save(NoPrompt, OriginalFormat);
|
Function TSDocxDocuments.Save(NoPrompt, OriginalFormat);
|
||||||
|
|
@ -86,7 +94,7 @@ Begin
|
||||||
self[i].Save();
|
self[i].Save();
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// property
|
// Properties
|
||||||
Function TSDocxDocuments.ReadCount();
|
Function TSDocxDocuments.ReadCount();
|
||||||
Begin
|
Begin
|
||||||
return collection_.GetCount();
|
return collection_.GetCount();
|
||||||
|
|
|
||||||
|
|
@ -489,6 +489,98 @@ Interface
|
||||||
Function wdLineWidth450pt();
|
Function wdLineWidth450pt();
|
||||||
Function wdLineWidth600pt();
|
Function wdLineWidth600pt();
|
||||||
|
|
||||||
|
// WdLineSpacing
|
||||||
|
Function wdLineSpace1pt5();
|
||||||
|
Function wdLineSpaceAtLeast();
|
||||||
|
Function wdLineSpaceDouble();
|
||||||
|
Function wdLineSpaceExactly();
|
||||||
|
Function wdLineSpaceMultiple();
|
||||||
|
Function wdLineSpaceSingle();
|
||||||
|
|
||||||
|
// WdParagraphAlignment
|
||||||
|
Function wdAlignParagraphCenter();
|
||||||
|
Function wdAlignParagraphDistribute();
|
||||||
|
Function wdAlignParagraphJustify();
|
||||||
|
Function wdAlignParagraphJustifyHi();
|
||||||
|
Function wdAlignParagraphJustifyLow();
|
||||||
|
Function wdAlignParagraphJustifyMed();
|
||||||
|
Function wdAlignParagraphLeft();
|
||||||
|
Function wdAlignParagraphRight();
|
||||||
|
Function wdAlignParagraphThaiJustify();
|
||||||
|
|
||||||
|
// WdBaselineAlignment
|
||||||
|
Function wdBaselineAlignAuto();
|
||||||
|
Function wdBaselineAlignBaseline();
|
||||||
|
Function wdBaselineAlignCenter();
|
||||||
|
Function wdBaselineAlignFarEast50();
|
||||||
|
Function wdBaselineAlignTop();
|
||||||
|
|
||||||
|
// WdOutlineLevel
|
||||||
|
Function wdOutlineLevel1();
|
||||||
|
Function wdOutlineLevel2();
|
||||||
|
Function wdOutlineLevel3();
|
||||||
|
Function wdOutlineLevel4();
|
||||||
|
Function wdOutlineLevel5();
|
||||||
|
Function wdOutlineLevel6();
|
||||||
|
Function wdOutlineLevel7();
|
||||||
|
Function wdOutlineLevel8();
|
||||||
|
Function wdOutlineLevel9();
|
||||||
|
Function wdOutlineLevelBodyText();
|
||||||
|
|
||||||
|
// WdReadingOrder
|
||||||
|
Function wdReadingOrderLtr();
|
||||||
|
Function wdReadingOrderRtl();
|
||||||
|
|
||||||
|
// WdTextboxTightWrap
|
||||||
|
Function wdTightAll();
|
||||||
|
Function wdTightFirstAndLastLines();
|
||||||
|
Function wdTightFirstLineOnly();
|
||||||
|
Function wdTightLastLineOnly();
|
||||||
|
Function wdTightNone();
|
||||||
|
|
||||||
|
// WdInformation
|
||||||
|
Function wdActiveEndAdjustedPageNumber();
|
||||||
|
Function wdActiveEndPageNumber();
|
||||||
|
Function wdActiveEndSectionNumber();
|
||||||
|
Function wdAtEndOfRowMarker();
|
||||||
|
Function wdCapsLock();
|
||||||
|
Function wdEndOfRangeColumnNumber();
|
||||||
|
Function wdEndOfRangeRowNumber();
|
||||||
|
Function wdFirstCharacterColumnNumber();
|
||||||
|
Function wdFirstCharacterLineNumber();
|
||||||
|
Function wdFrameIsSelected();
|
||||||
|
Function wdHeaderFooterType();
|
||||||
|
Function wdHorizontalPositionRelativeToPage();
|
||||||
|
Function wdHorizontalPositionRelativeToTextBoundary();
|
||||||
|
Function wdInBibliography();
|
||||||
|
Function wdInCitation();
|
||||||
|
Function wdInClipboard();
|
||||||
|
Function wdInCommentPane();
|
||||||
|
Function wdInContentControl();
|
||||||
|
Function wdInCoverPage();
|
||||||
|
Function wdInEndnote();
|
||||||
|
Function wdInFieldCode();
|
||||||
|
Function wdInFieldResult();
|
||||||
|
Function wdInFootnote();
|
||||||
|
Function wdInFootnoteEndnotePane();
|
||||||
|
Function wdInHeaderFooter();
|
||||||
|
Function wdInMasterDocument();
|
||||||
|
Function wdInWordMail();
|
||||||
|
Function wdMaximumNumberOfColumns();
|
||||||
|
Function wdMaximumNumberOfRows();
|
||||||
|
Function wdNumberOfPagesInDocument();
|
||||||
|
Function wdNumLock();
|
||||||
|
Function wdOverType();
|
||||||
|
Function wdReferenceOfType();
|
||||||
|
Function wdRevisionMarking();
|
||||||
|
Function wdSelectionMode();
|
||||||
|
Function wdStartOfRangeColumnNumber();
|
||||||
|
Function wdStartOfRangeRowNumber();
|
||||||
|
Function wdVerticalPositionRelativeToPage();
|
||||||
|
Function wdVerticalPositionRelativeToTextBoundary();
|
||||||
|
Function wdWithInTable();
|
||||||
|
Function wdZoomPercentage();
|
||||||
|
|
||||||
Implementation
|
Implementation
|
||||||
|
|
||||||
// WdConstants enumeration
|
// WdConstants enumeration
|
||||||
|
|
@ -2311,5 +2403,331 @@ Implementation
|
||||||
return 48;
|
return 48;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
// WdLineSpacing
|
||||||
|
Function wdLineSpace1pt5();
|
||||||
|
Begin
|
||||||
|
return 1;
|
||||||
|
End;
|
||||||
|
Function wdLineSpaceAtLeast();
|
||||||
|
Begin
|
||||||
|
return 3;
|
||||||
|
End;
|
||||||
|
Function wdLineSpaceDouble();
|
||||||
|
Begin
|
||||||
|
return 2;
|
||||||
|
End;
|
||||||
|
Function wdLineSpaceExactly();
|
||||||
|
Begin
|
||||||
|
return 4;
|
||||||
|
End;
|
||||||
|
Function wdLineSpaceMultiple();
|
||||||
|
Begin
|
||||||
|
return 5;
|
||||||
|
End;
|
||||||
|
Function wdLineSpaceSingle();
|
||||||
|
Begin
|
||||||
|
return 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// WdParagraphAlignment
|
||||||
|
Function wdAlignParagraphCenter();
|
||||||
|
Begin
|
||||||
|
return 1;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphDistribute();
|
||||||
|
Begin
|
||||||
|
return 4;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphJustify();
|
||||||
|
Begin
|
||||||
|
return 3;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphJustifyHi();
|
||||||
|
Begin
|
||||||
|
return 7;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphJustifyLow();
|
||||||
|
Begin
|
||||||
|
return 8;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphJustifyMed();
|
||||||
|
Begin
|
||||||
|
return 5;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphLeft();
|
||||||
|
Begin
|
||||||
|
return 0;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphRight();
|
||||||
|
Begin
|
||||||
|
return 2;
|
||||||
|
End;
|
||||||
|
Function wdAlignParagraphThaiJustify();
|
||||||
|
Begin
|
||||||
|
return 9;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// WdBaselineAlignment
|
||||||
|
Function wdBaselineAlignAuto();
|
||||||
|
Begin
|
||||||
|
return 4;
|
||||||
|
End;
|
||||||
|
Function wdBaselineAlignBaseline();
|
||||||
|
Begin
|
||||||
|
return 2;
|
||||||
|
End;
|
||||||
|
Function wdBaselineAlignCenter();
|
||||||
|
Begin
|
||||||
|
return 1;
|
||||||
|
End;
|
||||||
|
Function wdBaselineAlignFarEast50();
|
||||||
|
Begin
|
||||||
|
return 3;
|
||||||
|
End;
|
||||||
|
Function wdBaselineAlignTop();
|
||||||
|
Begin
|
||||||
|
return 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// WdOutlineLevel
|
||||||
|
Function wdOutlineLevel1();
|
||||||
|
Begin
|
||||||
|
return 1;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel2();
|
||||||
|
Begin
|
||||||
|
return 2;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel3();
|
||||||
|
Begin
|
||||||
|
return 3;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel4();
|
||||||
|
Begin
|
||||||
|
return 4;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel5();
|
||||||
|
Begin
|
||||||
|
return 5;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel6();
|
||||||
|
Begin
|
||||||
|
return 6;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel7();
|
||||||
|
Begin
|
||||||
|
return 7;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel8();
|
||||||
|
Begin
|
||||||
|
return 8;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevel9();
|
||||||
|
Begin
|
||||||
|
return 9;
|
||||||
|
End;
|
||||||
|
Function wdOutlineLevelBodyText();
|
||||||
|
Begin
|
||||||
|
return 10;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// WdReadingOrder
|
||||||
|
Function wdReadingOrderLtr();
|
||||||
|
Begin
|
||||||
|
return 1;
|
||||||
|
End;
|
||||||
|
Function wdReadingOrderRtl();
|
||||||
|
Begin
|
||||||
|
return 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// WdTextboxTightWrap
|
||||||
|
Function wdTightAll();
|
||||||
|
Begin
|
||||||
|
return 1;
|
||||||
|
End;
|
||||||
|
Function wdTightFirstAndLastLines();
|
||||||
|
Begin
|
||||||
|
return 2;
|
||||||
|
End;
|
||||||
|
Function wdTightFirstLineOnly();
|
||||||
|
Begin
|
||||||
|
return 3;
|
||||||
|
End;
|
||||||
|
Function wdTightLastLineOnly();
|
||||||
|
Begin
|
||||||
|
return 4;
|
||||||
|
End;
|
||||||
|
Function wdTightNone();
|
||||||
|
Begin
|
||||||
|
return 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// WdInformation
|
||||||
|
Function wdActiveEndAdjustedPageNumber();
|
||||||
|
Begin
|
||||||
|
return 1;
|
||||||
|
End;
|
||||||
|
Function wdActiveEndPageNumber();
|
||||||
|
Begin
|
||||||
|
return 3;
|
||||||
|
End;
|
||||||
|
Function wdActiveEndSectionNumber();
|
||||||
|
Begin
|
||||||
|
return 2;
|
||||||
|
End;
|
||||||
|
Function wdAtEndOfRowMarker();
|
||||||
|
Begin
|
||||||
|
return 31;
|
||||||
|
End;
|
||||||
|
Function wdCapsLock();
|
||||||
|
Begin
|
||||||
|
return 21;
|
||||||
|
End;
|
||||||
|
Function wdEndOfRangeColumnNumber();
|
||||||
|
Begin
|
||||||
|
return 17;
|
||||||
|
End;
|
||||||
|
Function wdEndOfRangeRowNumber();
|
||||||
|
Begin
|
||||||
|
return 14;
|
||||||
|
End;
|
||||||
|
Function wdFirstCharacterColumnNumber();
|
||||||
|
Begin
|
||||||
|
return 9;
|
||||||
|
End;
|
||||||
|
Function wdFirstCharacterLineNumber();
|
||||||
|
Begin
|
||||||
|
return 10;
|
||||||
|
End;
|
||||||
|
Function wdFrameIsSelected();
|
||||||
|
Begin
|
||||||
|
return 11;
|
||||||
|
End;
|
||||||
|
Function wdHeaderFooterType();
|
||||||
|
Begin
|
||||||
|
return 33;
|
||||||
|
End;
|
||||||
|
Function wdHorizontalPositionRelativeToPage();
|
||||||
|
Begin
|
||||||
|
return 5;
|
||||||
|
End;
|
||||||
|
Function wdHorizontalPositionRelativeToTextBoundary();
|
||||||
|
Begin
|
||||||
|
return 7;
|
||||||
|
End;
|
||||||
|
Function wdInBibliography();
|
||||||
|
Begin
|
||||||
|
return 42;
|
||||||
|
End;
|
||||||
|
Function wdInCitation();
|
||||||
|
Begin
|
||||||
|
return 43;
|
||||||
|
End;
|
||||||
|
Function wdInClipboard();
|
||||||
|
Begin
|
||||||
|
return 38;
|
||||||
|
End;
|
||||||
|
Function wdInCommentPane();
|
||||||
|
Begin
|
||||||
|
return 26;
|
||||||
|
End;
|
||||||
|
Function wdInContentControl();
|
||||||
|
Begin
|
||||||
|
return 46;
|
||||||
|
End;
|
||||||
|
Function wdInCoverPage();
|
||||||
|
Begin
|
||||||
|
return 41;
|
||||||
|
End;
|
||||||
|
Function wdInEndnote();
|
||||||
|
Begin
|
||||||
|
return 36;
|
||||||
|
End;
|
||||||
|
Function wdInFieldCode();
|
||||||
|
Begin
|
||||||
|
return 44;
|
||||||
|
End;
|
||||||
|
Function wdInFieldResult();
|
||||||
|
Begin
|
||||||
|
return 45;
|
||||||
|
End;
|
||||||
|
Function wdInFootnote();
|
||||||
|
Begin
|
||||||
|
return 35;
|
||||||
|
End;
|
||||||
|
Function wdInFootnoteEndnotePane();
|
||||||
|
Begin
|
||||||
|
return 25;
|
||||||
|
End;
|
||||||
|
Function wdInHeaderFooter();
|
||||||
|
Begin
|
||||||
|
return 28;
|
||||||
|
End;
|
||||||
|
Function wdInMasterDocument();
|
||||||
|
Begin
|
||||||
|
return 34;
|
||||||
|
End;
|
||||||
|
Function wdInWordMail();
|
||||||
|
Begin
|
||||||
|
return 37;
|
||||||
|
End;
|
||||||
|
Function wdMaximumNumberOfColumns();
|
||||||
|
Begin
|
||||||
|
return 18;
|
||||||
|
End;
|
||||||
|
Function wdMaximumNumberOfRows();
|
||||||
|
Begin
|
||||||
|
return 15;
|
||||||
|
End;
|
||||||
|
Function wdNumberOfPagesInDocument();
|
||||||
|
Begin
|
||||||
|
return 4;
|
||||||
|
End;
|
||||||
|
Function wdNumLock();
|
||||||
|
Begin
|
||||||
|
return 22;
|
||||||
|
End;
|
||||||
|
Function wdOverType();
|
||||||
|
Begin
|
||||||
|
return 23;
|
||||||
|
End;
|
||||||
|
Function wdReferenceOfType();
|
||||||
|
Begin
|
||||||
|
return 32;
|
||||||
|
End;
|
||||||
|
Function wdRevisionMarking();
|
||||||
|
Begin
|
||||||
|
return 24;
|
||||||
|
End;
|
||||||
|
Function wdSelectionMode();
|
||||||
|
Begin
|
||||||
|
return 20;
|
||||||
|
End;
|
||||||
|
Function wdStartOfRangeColumnNumber();
|
||||||
|
Begin
|
||||||
|
return 16;
|
||||||
|
End;
|
||||||
|
Function wdStartOfRangeRowNumber();
|
||||||
|
Begin
|
||||||
|
return 13;
|
||||||
|
End;
|
||||||
|
Function wdVerticalPositionRelativeToPage();
|
||||||
|
Begin
|
||||||
|
return 6;
|
||||||
|
End;
|
||||||
|
Function wdVerticalPositionRelativeToTextBoundary();
|
||||||
|
Begin
|
||||||
|
return 8;
|
||||||
|
End;
|
||||||
|
Function wdWithInTable();
|
||||||
|
Begin
|
||||||
|
return 12;
|
||||||
|
End;
|
||||||
|
Function wdZoomPercentage();
|
||||||
|
Begin
|
||||||
|
return 19;
|
||||||
|
End;
|
||||||
|
|
||||||
End.
|
End.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,183 +1,58 @@
|
||||||
Type TSDocxParagraph = Class(TSVbaBase)
|
Type TSDocxParagraph = Class(TSDocxParagraphFormat)
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Init(body, paragraph, index);
|
Function Init(docx, paragraph, index);
|
||||||
|
|
||||||
private
|
private
|
||||||
body_;
|
|
||||||
paragraph_; // TOfficeObj("TParagraph")
|
paragraph_; // TOfficeObj("TParagraph")
|
||||||
index_; // 第N个段落,1开始计数
|
index_; // 第N个段落,1开始计数
|
||||||
range_;
|
range_;
|
||||||
|
|
||||||
public
|
public
|
||||||
Function CloseUp();
|
// Methods
|
||||||
Function Indent();
|
Function Indent();
|
||||||
Function IndentCharWidth(Count);
|
|
||||||
Function IndentFirstLineCharWidth(Count);
|
|
||||||
Function JoinList();
|
Function JoinList();
|
||||||
Function ListAdvanceTo();
|
Function ListAdvanceTo();
|
||||||
Function Next(Count);
|
Function Next(Count);
|
||||||
Function OpenOrCloseUp();
|
|
||||||
Function OpenUp();
|
|
||||||
Function Outdent();
|
Function Outdent();
|
||||||
Function OutlineDemote();
|
Function OutlineDemote();
|
||||||
Function OutlineDemoteToBody();
|
Function OutlineDemoteToBody();
|
||||||
Function OutlinePromote();
|
Function OutlinePromote();
|
||||||
Function Previous(Count);
|
Function Previous(Count);
|
||||||
Function Reset();
|
|
||||||
Function ResetAdvanceTo();
|
Function ResetAdvanceTo();
|
||||||
Function SelectNumber();
|
Function SelectNumber();
|
||||||
Function SeparateList();
|
Function SeparateList();
|
||||||
Function Space1();
|
|
||||||
Function Space15();
|
|
||||||
Function Space2();
|
|
||||||
Function TabHangingIndent(Count);
|
|
||||||
Function TabIndent(Count);
|
|
||||||
|
|
||||||
property AddSpaceBetweenFarEastAndAlpha read ReadAddSpaceBetweenFarEastAndAlpha write WriteAddSpaceBetweenFarEastAndAlpha;
|
|
||||||
property AddSpaceBetweenFarEastAndDigit read ReadAddSpaceBetweenFarEastAndDigit write WriteAddSpaceBetweenFarEastAndDigit;
|
|
||||||
property Alignment read ReadAlignment write WriteAlignment;
|
|
||||||
property AutoAdjustRightIndent read ReadAutoAdjustRightIndent write WriteAutoAdjustRightIndent;
|
|
||||||
property BaseLineAlignment read ReadBaseLineAlignment write WriteBaseLineAlignment;
|
|
||||||
property Borders read ReadBorders;
|
|
||||||
property CharacterUnitFirstLineIndent read ReadCharacterUnitFirstLineIndent write WriteCharacterUnitFirstLineIndent;
|
|
||||||
property CharacterUnitLeftIndent read ReadCharacterUnitLeftIndent write WriteCharacterUnitLeftIndent;
|
|
||||||
property CharacterUnitRightIndent read ReadCharacterUnitRightIndent write WriteCharacterUnitRightIndent;
|
|
||||||
property CollapsedState read ReadCollapsedState write WriteCollapsedState;
|
property CollapsedState read ReadCollapsedState write WriteCollapsedState;
|
||||||
property CollapseHeadingByDefault read ReadCollapseHeadingByDefault write WriteCollapseHeadingByDefault;
|
|
||||||
property DisableLineHeightGrid read ReadDisableLineHeightGrid write WriteDisableLineHeightGrid;
|
|
||||||
property DropCap read ReadDropCap;
|
property DropCap read ReadDropCap;
|
||||||
property FarEastLineBreakControl read ReadFarEastLineBreakControl write WriteFarEastLineBreakControl;
|
|
||||||
property FirstLineIndent read ReadFirstLineIndent write WriteFirstLineIndent;
|
|
||||||
property Format read ReadFormat write WriteFormat;
|
property Format read ReadFormat write WriteFormat;
|
||||||
property HalfWidthPunctuationOnTopOfLine read ReadHalfWidthPunctuationOnTopOfLine write WriteHalfWidthPunctuationOnTopOfLine;
|
|
||||||
property HangingPunctuation read ReadHangingPunctuation write WriteHangingPunctuation;
|
|
||||||
property Hyphenation read ReadHyphenation write WriteHyphenation;
|
|
||||||
property ID read ReadID write WriteID;
|
property ID read ReadID write WriteID;
|
||||||
property IsStyleSeparator read ReadIsStyleSeparator;
|
property IsStyleSeparator read ReadIsStyleSeparator;
|
||||||
property KeepTogether read ReadKeepTogether write WriteKeepTogether;
|
|
||||||
property KeepWithNext read ReadKeepWithNext write WriteKeepWithNext;
|
|
||||||
property LeftIndent read ReadLeftIndent write WriteLeftIndent;
|
|
||||||
property LineSpacing read ReadLineSpacing write WriteLineSpacing;
|
|
||||||
property LineSpacingRule read ReadLineSpacingRule write WriteLineSpacingRule;
|
|
||||||
property LineUnitAfter read ReadLineUnitAfter write WriteLineUnitAfter;
|
|
||||||
property LineUnitBefore read ReadLineUnitBefore write WriteLineUnitBefore;
|
|
||||||
property ListNumberOriginal read ReadListNumberOriginal;
|
property ListNumberOriginal read ReadListNumberOriginal;
|
||||||
property MirrorIndents read ReadMirrorIndents write WriteMirrorIndents;
|
|
||||||
property NoLineNumber read ReadNoLineNumber write WriteNoLineNumber;
|
|
||||||
property OutlineLevel read ReadOutlineLevel write WriteOutlineLevel;
|
|
||||||
property PageBreakBefore read ReadPageBreakBefore write WritePageBreakBefore;
|
|
||||||
property Range read ReadRange;
|
property Range read ReadRange;
|
||||||
property ReadingOrder read ReadReadingOrder write WriteReadingOrder;
|
|
||||||
property RightIndent read ReadRightIndent write WriteRightIndent;
|
|
||||||
property Shading read ReadShading;
|
|
||||||
property SpaceAfter read ReadSpaceAfter write WriteSpaceAfter;
|
|
||||||
property SpaceAfterAuto read ReadSpaceAfterAuto write WriteSpaceAfterAuto;
|
|
||||||
property SpaceBefore read ReadSpaceBefore write WriteSpaceBefore;
|
|
||||||
property SpaceBeforeAuto read ReadSpaceBeforeAuto write WriteSpaceBeforeAuto;
|
|
||||||
property Style read ReadStyle write WriteStyle;
|
|
||||||
property TabStops read ReadTabStops write WriteTabStops;
|
|
||||||
property TextboxTightWrap read ReadTextboxTightWrap write WriteTextboxTightWrap;
|
|
||||||
property WidowControl read ReadWidowControl write WriteWidowControl;
|
|
||||||
property WordWrap read ReadWordWrap write WriteWordWrap;
|
|
||||||
Function WriteWordWrap(value);
|
|
||||||
Function ReadWordWrap();
|
|
||||||
Function WriteWidowControl(value);
|
|
||||||
Function ReadWidowControl();
|
|
||||||
Function WriteTextboxTightWrap(value);
|
|
||||||
Function ReadTextboxTightWrap();
|
|
||||||
Function WriteTabStops(value);
|
|
||||||
Function ReadTabStops();
|
|
||||||
Function WriteStyle(value);
|
|
||||||
Function ReadStyle();
|
|
||||||
Function WriteSpaceBeforeAuto(value);
|
|
||||||
Function ReadSpaceBeforeAuto();
|
|
||||||
Function WriteSpaceBefore(value);
|
|
||||||
Function ReadSpaceBefore();
|
|
||||||
Function WriteSpaceAfterAuto(value);
|
|
||||||
Function ReadSpaceAfterAuto();
|
|
||||||
Function WriteSpaceAfter(value);
|
|
||||||
Function ReadSpaceAfter();
|
|
||||||
Function ReadShading();
|
|
||||||
Function WriteRightIndent(value);
|
|
||||||
Function ReadRightIndent();
|
|
||||||
Function WriteReadingOrder(value);
|
|
||||||
Function ReadReadingOrder();
|
|
||||||
Function ReadRange();
|
|
||||||
Function WritePageBreakBefore(value);
|
|
||||||
Function ReadPageBreakBefore();
|
|
||||||
Function WriteOutlineLevel(value);
|
|
||||||
Function ReadOutlineLevel();
|
|
||||||
Function WriteNoLineNumber(value);
|
|
||||||
Function ReadNoLineNumber();
|
|
||||||
Function WriteMirrorIndents(value);
|
|
||||||
Function ReadMirrorIndents();
|
|
||||||
Function ReadListNumberOriginal();
|
|
||||||
Function WriteLineUnitBefore(value);
|
|
||||||
Function ReadLineUnitBefore();
|
|
||||||
Function WriteLineUnitAfter(value);
|
|
||||||
Function ReadLineUnitAfter();
|
|
||||||
Function WriteLineSpacingRule(value);
|
|
||||||
Function ReadLineSpacingRule();
|
|
||||||
Function WriteLineSpacing(value);
|
|
||||||
Function ReadLineSpacing();
|
|
||||||
Function WriteLeftIndent(value);
|
|
||||||
Function ReadLeftIndent();
|
|
||||||
Function WriteKeepWithNext(value);
|
|
||||||
Function ReadKeepWithNext();
|
|
||||||
Function WriteKeepTogether(value);
|
|
||||||
Function ReadKeepTogether();
|
|
||||||
Function ReadIsStyleSeparator();
|
|
||||||
Function WriteID(value);
|
|
||||||
Function ReadID();
|
|
||||||
Function WriteHyphenation(value);
|
|
||||||
Function ReadHyphenation();
|
|
||||||
Function WriteHangingPunctuation(value);
|
|
||||||
Function ReadHangingPunctuation();
|
|
||||||
Function WriteHalfWidthPunctuationOnTopOfLine(value);
|
|
||||||
Function ReadHalfWidthPunctuationOnTopOfLine();
|
|
||||||
Function WriteFormat(value);
|
|
||||||
Function ReadFormat();
|
|
||||||
Function WriteFirstLineIndent(value);
|
|
||||||
Function ReadFirstLineIndent();
|
|
||||||
Function WriteFarEastLineBreakControl(value);
|
|
||||||
Function ReadFarEastLineBreakControl();
|
|
||||||
Function ReadDropCap();
|
|
||||||
Function WriteDisableLineHeightGrid(value);
|
|
||||||
Function ReadDisableLineHeightGrid();
|
|
||||||
Function WriteCollapseHeadingByDefault(value);
|
|
||||||
Function ReadCollapseHeadingByDefault();
|
|
||||||
Function WriteCollapsedState(value);
|
Function WriteCollapsedState(value);
|
||||||
Function ReadCollapsedState();
|
Function ReadCollapsedState();
|
||||||
Function WriteCharacterUnitRightIndent(value);
|
Function ReadDropCap();
|
||||||
Function ReadCharacterUnitRightIndent();
|
Function WriteFormat(value);
|
||||||
Function WriteCharacterUnitLeftIndent(value);
|
Function ReadFormat();
|
||||||
Function ReadCharacterUnitLeftIndent();
|
Function WriteID(value);
|
||||||
Function WriteCharacterUnitFirstLineIndent(value);
|
Function ReadID();
|
||||||
Function ReadCharacterUnitFirstLineIndent();
|
Function ReadIsStyleSeparator();
|
||||||
Function ReadBorders(index);
|
Function ReadListNumberOriginal();
|
||||||
Function WriteBaseLineAlignment(value);
|
Function ReadRange();
|
||||||
Function ReadBaseLineAlignment();
|
|
||||||
Function WriteAutoAdjustRightIndent(value);
|
|
||||||
Function ReadAutoAdjustRightIndent();
|
|
||||||
Function WriteAlignment(value);
|
|
||||||
Function ReadAlignment();
|
|
||||||
Function WriteAddSpaceBetweenFarEastAndDigit(value);
|
|
||||||
Function ReadAddSpaceBetweenFarEastAndDigit();
|
|
||||||
Function WriteAddSpaceBetweenFarEastAndAlpha(value);
|
|
||||||
Function ReadAddSpaceBetweenFarEastAndAlpha();
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxParagraph.Init(body, paragraph, index);
|
Function TSDocxParagraph.Init(docx, paragraph, index);
|
||||||
Begin
|
Begin
|
||||||
body_ := body;
|
|
||||||
paragraph_ := paragraph;
|
paragraph_ := paragraph;
|
||||||
index_ := index;
|
index_ := index;
|
||||||
range_ := nil;
|
range_ := nil;
|
||||||
|
class(TSDocxParagraphFormat).Init(docx, paragraph_.pPr);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// function
|
// Methods
|
||||||
Function TSDocxParagraph.Next(Count);
|
Function TSDocxParagraph.Next(Count);
|
||||||
Begin
|
Begin
|
||||||
return self.Parent.Item(index + Count);
|
return self.Parent.Item(index + Count);
|
||||||
|
|
@ -187,25 +62,25 @@ Function TSDocxParagraph.Previous(Count);
|
||||||
Begin
|
Begin
|
||||||
return self.Parent.Item(index - Count);
|
return self.Parent.Item(index - Count);
|
||||||
End;
|
End;
|
||||||
// property
|
|
||||||
Function TSDocxParagraph.ReadBorders(index);
|
|
||||||
Begin
|
|
||||||
borders_obj := new TSDocxBordersParagraph(self.Application, self.Creator, self.Parent);
|
|
||||||
borders_obj.Init(paragraph_);
|
|
||||||
return ifnil(index) ? borders_obj : borders_obj[index];
|
|
||||||
End;
|
|
||||||
|
|
||||||
|
// Properties
|
||||||
Function TSDocxParagraph.ReadRange();
|
Function TSDocxParagraph.ReadRange();
|
||||||
Begin
|
Begin
|
||||||
if ifnil(range_) then
|
if ifnil(range_) then
|
||||||
begin
|
begin
|
||||||
pbegin := 0;
|
obj := new TSWdRange(docx_.Body().Root(), paragraph_.Root());
|
||||||
pend := 0;
|
|
||||||
arr := array();
|
|
||||||
node := body_.Root();
|
|
||||||
class(TSWdCommon).CalculateRange(node, node, paragraph_.Root(), false, pbegin, pend, arr);
|
|
||||||
range_ := new TSDocxRange(self.Application, self.Creator, self);
|
range_ := new TSDocxRange(self.Application, self.Creator, self);
|
||||||
range_.Init(pbegin, pend, arr);
|
range_.Init(docx_, obj);
|
||||||
end
|
end
|
||||||
return range_;
|
return range_;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraph.ReadFormat();
|
||||||
|
Begin
|
||||||
|
return self;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraph.WriteFormat(value);
|
||||||
|
Begin
|
||||||
|
self.ReWrite(value);
|
||||||
|
End;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ public
|
||||||
|
|
||||||
private
|
private
|
||||||
docx_;
|
docx_;
|
||||||
body_;
|
lastnode_;
|
||||||
paragraphs_; // TOfficeObj("TParagraph")数组
|
paragraphs_; // TOfficeObj("TParagraph")数组
|
||||||
|
|
||||||
public
|
public
|
||||||
|
|
@ -154,9 +154,9 @@ End;
|
||||||
Function TSDocxParagraphs.Init(docx);
|
Function TSDocxParagraphs.Init(docx);
|
||||||
Begin
|
Begin
|
||||||
docx_ := docx;
|
docx_ := docx;
|
||||||
body_ := docx_.Body();
|
|
||||||
paragraphs_ := array();
|
paragraphs_ := array();
|
||||||
SerializeParagraphs(body_.Node());
|
lastnode_ := nil;
|
||||||
|
SerializeParagraphs(docx_.Body().Node());
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxParagraphs.SerializeParagraphs(root);
|
Function TSDocxParagraphs.SerializeParagraphs(root);
|
||||||
|
|
@ -170,6 +170,7 @@ Begin
|
||||||
obj := TOfficeObj("TParagraph");
|
obj := TOfficeObj("TParagraph");
|
||||||
obj.Init(node);
|
obj.Init(node);
|
||||||
paragraphs_[length(paragraphs_)] := obj;
|
paragraphs_[length(paragraphs_)] := obj;
|
||||||
|
lastnode_ := node;
|
||||||
end
|
end
|
||||||
else if name = "w:tbl" then
|
else if name = "w:tbl" then
|
||||||
begin
|
begin
|
||||||
|
|
@ -185,6 +186,7 @@ Begin
|
||||||
paragraphs_[length(paragraphs_)] := TOfficeObj("TParagraph");
|
paragraphs_[length(paragraphs_)] := TOfficeObj("TParagraph");
|
||||||
tr := tr.NextElement("w:tr");
|
tr := tr.NextElement("w:tr");
|
||||||
end
|
end
|
||||||
|
lastnode_ := node;
|
||||||
end
|
end
|
||||||
node := node.NextElement();
|
node := node.NextElement();
|
||||||
End;
|
End;
|
||||||
|
|
@ -193,11 +195,24 @@ End;
|
||||||
Function Operator TSDocxParagraphs.[](index);
|
Function Operator TSDocxParagraphs.[](index);
|
||||||
Begin
|
Begin
|
||||||
paragraph_obj := new TSDocxParagraph(self.Application, self.Creator, self.Parent);
|
paragraph_obj := new TSDocxParagraph(self.Application, self.Creator, self.Parent);
|
||||||
paragraph_obj.Init(body_, paragraphs_[index], index + 1);
|
paragraph_obj.Init(docx_, paragraphs_[index], index + 1);
|
||||||
return paragraph_obj;
|
return paragraph_obj;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// function
|
// Methods
|
||||||
|
Function TSDocxParagraphs.Add(Range);
|
||||||
|
Begin
|
||||||
|
if lastnode_ then
|
||||||
|
node := docx_.Body().Root().InsertAfterChild(lastnode_, "element", "w:p");
|
||||||
|
else
|
||||||
|
node := docx_.Body().Root().InsertFirstChild("element", "w:p");
|
||||||
|
lastnode_ := node;
|
||||||
|
obj := TOfficeObj("TParagraph");
|
||||||
|
obj.Init(node);
|
||||||
|
paragraphs_[length(paragraphs_)] := obj;
|
||||||
|
return self.Item(length(paragraphs_) - 1);
|
||||||
|
End;
|
||||||
|
|
||||||
Function TSDocxParagraphs.Item(Index);
|
Function TSDocxParagraphs.Item(Index);
|
||||||
Begin
|
Begin
|
||||||
return self[Index - 1];
|
return self[Index - 1];
|
||||||
|
|
@ -207,3 +222,13 @@ Function TSDocxParagraphs.ReadCount();
|
||||||
Begin
|
Begin
|
||||||
return length(paragraphs_);
|
return length(paragraphs_);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphs.ReadFirst();
|
||||||
|
Begin
|
||||||
|
return self.Item(1);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphs.ReadLast();
|
||||||
|
Begin
|
||||||
|
return self.Item(self.Count);
|
||||||
|
End;
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,15 @@ Type TSDocxRange = class(TSVbaBase)
|
||||||
Uses TSDocxEnumerations;
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Init(pbegin, pend, arr);
|
Function Init(docx, rangeObj);
|
||||||
Function SetRangeArr(arr);
|
|
||||||
Function SetRangeFont();
|
|
||||||
Function CopyRunFormat(sourceRun, destRun);
|
Function CopyRunFormat(sourceRun, destRun);
|
||||||
|
|
||||||
private
|
private
|
||||||
range_arr_;
|
docx_;
|
||||||
|
range_obj_; // TSWdRange
|
||||||
range_font_; // TSDocxFontRange
|
range_font_; // TSDocxFontRange
|
||||||
begin_;
|
paragraph_format_range_; // TSDocxParagraphFormatRange
|
||||||
end_;
|
borders_range_; // TSDocxBordersRange
|
||||||
|
|
||||||
public
|
public
|
||||||
Function AutoFormat();
|
Function AutoFormat();
|
||||||
|
|
@ -254,7 +253,7 @@ public
|
||||||
Function ReadItalic();
|
Function ReadItalic();
|
||||||
Function ReadIsEndOfRowMark();
|
Function ReadIsEndOfRowMark();
|
||||||
Function ReadInlineShapes();
|
Function ReadInlineShapes();
|
||||||
Function ReadInformation();
|
Function ReadInformation(Type);
|
||||||
Function WriteID(value);
|
Function WriteID(value);
|
||||||
Function ReadID();
|
Function ReadID();
|
||||||
Function ReadHyperlinks();
|
Function ReadHyperlinks();
|
||||||
|
|
@ -313,20 +312,16 @@ public
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxRange.Init(pbegin, pend, arr);
|
Function TSDocxRange.Init(docx, rangeObj);
|
||||||
Begin
|
Begin
|
||||||
range_arr_ := arr;
|
docx_ := docx;
|
||||||
begin_ := pbegin;
|
range_obj_ := rangeObj;
|
||||||
end_ := pend;
|
|
||||||
range_font_ := new TSDocxFontRange(self.Application, self.Creator, self);
|
range_font_ := new TSDocxFontRange(self.Application, self.Creator, self);
|
||||||
range_font_.Init(range_arr_);
|
range_font_.Init(range_obj_);
|
||||||
End;
|
paragraph_format_range_ := new TSDocxParagraphFormatRange(self.Application, self.Creator, self);
|
||||||
|
paragraph_format_range_.Init(docx_, range_obj_);
|
||||||
Function TSDocxRange.SetRangeArr(arr);
|
borders_range_ := new TSDocxBordersRange(self.Application, self.Creator, self);
|
||||||
Begin
|
borders_range_.Init(range_obj_);
|
||||||
range_arr_ := arr;
|
|
||||||
range_font_ := new TSDocxFontRange(self.Application, self.Creator, self);
|
|
||||||
range_font_.Init(range_arr_);
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxRange.CopyRunFormat(sourceRun, destRun);
|
Function TSDocxRange.CopyRunFormat(sourceRun, destRun);
|
||||||
|
|
@ -337,7 +332,8 @@ Begin
|
||||||
class(TSXml).UpdateNode(node, marshal[0]["attribute"], marshal[0]["children"]);
|
class(TSXml).UpdateNode(node, marshal[0]["attribute"], marshal[0]["children"]);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// function
|
// Methods
|
||||||
|
// TODO
|
||||||
Function TSDocxRange.InsertAfter(Text);
|
Function TSDocxRange.InsertAfter(Text);
|
||||||
Begin
|
Begin
|
||||||
paragraph := range_arr_[length(range_arr_)-1]["tparagraph"];
|
paragraph := range_arr_[length(range_arr_)-1]["tparagraph"];
|
||||||
|
|
@ -355,6 +351,7 @@ Begin
|
||||||
end
|
end
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
// TODO
|
||||||
Function TSDocxRange.InsertBefore(Text);
|
Function TSDocxRange.InsertBefore(Text);
|
||||||
Begin
|
Begin
|
||||||
paragraph := range_arr_[0]["tparagraph"];
|
paragraph := range_arr_[0]["tparagraph"];
|
||||||
|
|
@ -374,6 +371,7 @@ Begin
|
||||||
end
|
end
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
// TODO
|
||||||
Function TSDocxRange.InsertBreak(Type);
|
Function TSDocxRange.InsertBreak(Type);
|
||||||
Begin
|
Begin
|
||||||
pf := function(t, c);
|
pf := function(t, c);
|
||||||
|
|
@ -440,7 +438,102 @@ End;
|
||||||
|
|
||||||
Function TSDocxRange.ReadBorders(index);
|
Function TSDocxRange.ReadBorders(index);
|
||||||
Begin
|
Begin
|
||||||
borders_obj := new TSDocxBordersRange(self.Application, self.Creator, self);
|
return ifnil(index) ? borders_range_ : borders_range_.Item(index);
|
||||||
borders_obj.Init(range_arr_);
|
End;
|
||||||
return ifnil(index) ? borders_obj : borders_obj.Item(index);
|
|
||||||
|
Function TSDocxRange.WriteParagraphFormat(value);
|
||||||
|
Begin
|
||||||
|
paragraph_format_range_.ReWrite(value);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxRange.ReadParagraphFormat();
|
||||||
|
Begin
|
||||||
|
return paragraph_format_range_;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxRange.ReadInformation(Type);
|
||||||
|
Begin
|
||||||
|
case Type of
|
||||||
|
// TSDocxEnumerations.wdActiveEndAdjustedPageNumber():
|
||||||
|
// TSDocxEnumerations.wdActiveEndPageNumber():
|
||||||
|
// TSDocxEnumerations.wdActiveEndSectionNumber():
|
||||||
|
// TSDocxEnumerations.wdAtEndOfRowMarker():
|
||||||
|
// TSDocxEnumerations.wdCapsLock():
|
||||||
|
// TSDocxEnumerations.wdEndOfRangeColumnNumber():
|
||||||
|
// TSDocxEnumerations.wdEndOfRangeRowNumber():
|
||||||
|
// TSDocxEnumerations.wdFirstCharacterColumnNumber():
|
||||||
|
// TSDocxEnumerations.wdFirstCharacterLineNumber():
|
||||||
|
// TSDocxEnumerations.wdFrameIsSelected():
|
||||||
|
// TSDocxEnumerations.wdHeaderFooterType():
|
||||||
|
// TSDocxEnumerations.wdHorizontalPositionRelativeToPage():
|
||||||
|
// TSDocxEnumerations.wdHorizontalPositionRelativeToTextBoundary():
|
||||||
|
// TSDocxEnumerations.wdInBibliography():
|
||||||
|
// TSDocxEnumerations.wdInCitation():
|
||||||
|
// TSDocxEnumerations.wdInClipboard():
|
||||||
|
// TSDocxEnumerations.wdInCommentPane():
|
||||||
|
// TSDocxEnumerations.wdInContentControl():
|
||||||
|
// TSDocxEnumerations.wdInCoverPage():
|
||||||
|
// TSDocxEnumerations.wdInEndnote():
|
||||||
|
// TSDocxEnumerations.wdInFieldCode():
|
||||||
|
// TSDocxEnumerations.wdInFieldResult():
|
||||||
|
// TSDocxEnumerations.wdInFootnote():
|
||||||
|
// TSDocxEnumerations.wdInFootnoteEndnotePane():
|
||||||
|
// TSDocxEnumerations.wdInHeaderFooter():
|
||||||
|
// TSDocxEnumerations.wdInMasterDocument():
|
||||||
|
// TSDocxEnumerations.wdInWordMail():
|
||||||
|
// TSDocxEnumerations.wdMaximumNumberOfColumns():
|
||||||
|
// TSDocxEnumerations.wdMaximumNumberOfRows():
|
||||||
|
// TSDocxEnumerations.wdNumberOfPagesInDocument():
|
||||||
|
// TSDocxEnumerations.wdNumLock():
|
||||||
|
// TSDocxEnumerations.wdOverType():
|
||||||
|
// TSDocxEnumerations.wdReferenceOfType():
|
||||||
|
// TSDocxEnumerations.wdRevisionMarking():
|
||||||
|
// TSDocxEnumerations.wdSelectionMode():
|
||||||
|
// TSDocxEnumerations.wdStartOfRangeColumnNumber():
|
||||||
|
// TSDocxEnumerations.wdStartOfRangeRowNumber():
|
||||||
|
// TSDocxEnumerations.wdVerticalPositionRelativeToPage():
|
||||||
|
// TSDocxEnumerations.wdVerticalPositionRelativeToTextBoundary():
|
||||||
|
TSDocxEnumerations.wdWithInTable():
|
||||||
|
begin
|
||||||
|
for i:=0 to length(range_arr_) do
|
||||||
|
begin
|
||||||
|
node := range_arr_[i]["parent"];
|
||||||
|
if node.GetName() <> "w:tbl" then return false;
|
||||||
|
end
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
// TSDocxEnumerations.wdZoomPercentage():
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxRange.WriteStyle(value);
|
||||||
|
Begin
|
||||||
|
paragraph_format_range_.Style := value;
|
||||||
|
End;
|
||||||
|
Function TSDocxRange.ReadStyle();
|
||||||
|
Begin
|
||||||
|
return paragraph_format_range_.Style;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxRange.WriteText(value);
|
||||||
|
Begin
|
||||||
|
range_obj_.Clear();
|
||||||
|
run := range_obj_.Data[0]["trun"];
|
||||||
|
if ifObj(run.Root()) then run.SetText(value);
|
||||||
|
else begin
|
||||||
|
run := range_obj_.Data[0]["tparagraph"].AppendRun();
|
||||||
|
run.SetText(value);
|
||||||
|
range_obj_.Data[0]["trun"] := run;
|
||||||
|
end
|
||||||
|
End;
|
||||||
|
Function TSDocxRange.ReadText();
|
||||||
|
Begin
|
||||||
|
txt := "";
|
||||||
|
prev := range_obj_.Data[0]["tparagraph"];
|
||||||
|
for i:=0 to length(range_obj_.Data)-1 do
|
||||||
|
begin
|
||||||
|
run := range_obj_.Data[i]["trun"];
|
||||||
|
txt += prev = range_obj_.Data[i]["tparagraph"] ? run.Text() : "\n" + run.Text();
|
||||||
|
end
|
||||||
|
return txt;
|
||||||
End;
|
End;
|
||||||
|
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
Type TSDocxShading = Class(TSVbaBase)
|
|
||||||
Uses TSDocxEnumerations;
|
|
||||||
|
|
||||||
public
|
|
||||||
Function Init(pr);
|
|
||||||
|
|
||||||
private
|
|
||||||
pr_; // xxPr对象,比如Cell: tr.tcPr,或Paragraph: p.pPr
|
|
||||||
|
|
||||||
public
|
|
||||||
property BackgroundPatternColor read ReadBackgroundPatternColor write WriteBackgroundPatternColor;
|
|
||||||
property BackgroundPatternColorIndex read ReadBackgroundPatternColorIndex write WriteBackgroundPatternColorIndex;
|
|
||||||
property ForegroundPatternColor read ReadForegroundPatternColor write WriteForegroundPatternColor;
|
|
||||||
property ForegroundPatternColorIndex read ReadForegroundPatternColorIndex write WriteForegroundPatternColorIndex;
|
|
||||||
property Texture read ReadTexture write WriteTexture;
|
|
||||||
Function WriteTexture(texture);
|
|
||||||
Function ReadTexture();
|
|
||||||
Function WriteForegroundPatternColorIndex();
|
|
||||||
Function ReadForegroundPatternColorIndex();
|
|
||||||
Function WriteForegroundPatternColor();
|
|
||||||
Function ReadForegroundPatternColor();
|
|
||||||
Function WriteBackgroundPatternColorIndex();
|
|
||||||
Function ReadBackgroundPatternColorIndex();
|
|
||||||
Function WriteBackgroundPatternColor();
|
|
||||||
Function ReadBackgroundPatternColor();
|
|
||||||
|
|
||||||
End;
|
|
||||||
|
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
|
||||||
Function TSDocxShading.Init(pr);
|
|
||||||
Begin
|
|
||||||
pr_ := pr;
|
|
||||||
End;
|
|
||||||
|
|
||||||
// property
|
|
||||||
Function TSDocxShading.WriteTexture(texture);
|
|
||||||
Begin
|
|
||||||
case texture of
|
|
||||||
TSDocxEnumerations.wdTextureHorizontal():
|
|
||||||
begin
|
|
||||||
pr_.Shading.Val := "thinHorzStripe";
|
|
||||||
pr_.Update();
|
|
||||||
end
|
|
||||||
end;
|
|
||||||
End;
|
|
||||||
Function TSDocxShading.ReadTexture();
|
|
||||||
Begin
|
|
||||||
End;
|
|
||||||
|
|
@ -209,13 +209,9 @@ Function TSDocxTable.ReadRange();
|
||||||
Begin
|
Begin
|
||||||
if ifnil(range_) then
|
if ifnil(range_) then
|
||||||
begin
|
begin
|
||||||
pbegin := 0;
|
obj := new TSWdRange(docx_.Body().Root(), table_.Root());
|
||||||
pend := 0;
|
|
||||||
arr := array();
|
|
||||||
root := docx_.Body().Root();
|
|
||||||
class(TSWdCommon).CalculateRange(root, root, table_.Root(), false, pbegin, pend, arr);
|
|
||||||
range_ := new TSDocxRange(self.Application, self.Creator, self);
|
range_ := new TSDocxRange(self.Application, self.Creator, self);
|
||||||
range_.Init(pbegin, pend, arr);
|
range_.Init(docx_, obj);
|
||||||
end
|
end
|
||||||
return range_;
|
return range_;
|
||||||
End;
|
End;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ Type TSDocxBorderRange = Class(TSDocxBorder)
|
||||||
Uses TSDocxEnumerations;
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Init(arr, borderType);
|
Function Init(rangeObj, borderType);
|
||||||
|
|
||||||
private
|
private
|
||||||
Function GetBorderObjectByNode(node);
|
Function GetBorderObjectByNode(node);
|
||||||
|
|
@ -12,9 +12,8 @@ private
|
||||||
Function SplitRun();
|
Function SplitRun();
|
||||||
|
|
||||||
private
|
private
|
||||||
range_arr_;
|
range_obj_;
|
||||||
border_type_;
|
border_type_;
|
||||||
split_flag_;
|
|
||||||
|
|
||||||
public
|
public
|
||||||
Function WriteVisible(value);override;
|
Function WriteVisible(value);override;
|
||||||
|
|
@ -36,20 +35,17 @@ End;
|
||||||
|
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxBorderRange.Init(arr, borderType);
|
Function TSDocxBorderRange.Init(rangeObj, borderType);
|
||||||
Begin
|
Begin
|
||||||
range_arr_ := arr;
|
range_obj_ := rangeObj;
|
||||||
border_type_ := borderType;
|
border_type_ := borderType;
|
||||||
split_flag_ := false;
|
|
||||||
class(TSDocxBorder).Init(nil);
|
class(TSDocxBorder).Init(nil);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxBorderRange.SplitRun();
|
Function TSDocxBorderRange.SplitRun();
|
||||||
Begin
|
Begin
|
||||||
if split_flag_ then return;
|
range_obj_.SplitRangeRun();
|
||||||
class(TSWdCommon).SplitRangeRun(range_arr_);
|
self.Parent.SetRangeObj(range_obj_);
|
||||||
self.Parent.SetRangeArr(range_arr_);
|
|
||||||
split_flag_ := true;
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxBorderRange.GetBorder(arr, hash);
|
Function TSDocxBorderRange.GetBorder(arr, hash);
|
||||||
|
|
@ -100,9 +96,10 @@ Function TSDocxBorderRange.CallFunction(fname, value);overload;
|
||||||
Begin
|
Begin
|
||||||
SplitRun();
|
SplitRun();
|
||||||
hash := array();
|
hash := array();
|
||||||
for i:=0 to length(range_arr_)-1 do
|
range_arr := rangeObj.GetInfo();
|
||||||
|
for i:=0 to length(range_arr)-1 do
|
||||||
begin
|
begin
|
||||||
border := GetBorder(range_arr_[i], hash);
|
border := GetBorder(range_arr[i], hash);
|
||||||
if ifnil(border) then continue;
|
if ifnil(border) then continue;
|
||||||
pf := FindFunction(fname, border);
|
pf := FindFunction(fname, border);
|
||||||
pf.Do(value);
|
pf.Do(value);
|
||||||
|
|
@ -112,10 +109,11 @@ End;
|
||||||
Function TSDocxBorderRange.CallFunction(fname);overload;
|
Function TSDocxBorderRange.CallFunction(fname);overload;
|
||||||
Begin
|
Begin
|
||||||
hash := array();
|
hash := array();
|
||||||
|
range_arr := rangeObj.GetInfo();
|
||||||
ret := nil;
|
ret := nil;
|
||||||
for i:=0 to length(range_arr_)-1 do
|
for i:=0 to length(range_arr)-1 do
|
||||||
begin
|
begin
|
||||||
border := GetBorder(range_arr_[i], hash);
|
border := GetBorder(range_arr[i], hash);
|
||||||
if ifnil(border) then continue;
|
if ifnil(border) then continue;
|
||||||
pf := FindFunction(fname, border);
|
pf := FindFunction(fname, border);
|
||||||
r := pf.Do();
|
r := pf.Do();
|
||||||
|
|
|
||||||
|
|
@ -6,20 +6,20 @@ public
|
||||||
Function GetBorder(index);override;
|
Function GetBorder(index);override;
|
||||||
|
|
||||||
private
|
private
|
||||||
paragraph_; // TOfficeObj("TParagraph")
|
pr_; // TOfficeObj("TwpPr")
|
||||||
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxBordersParagraph.Init(paragraph);
|
Function TSDocxBordersParagraph.Init(pr);
|
||||||
Begin
|
Begin
|
||||||
paragraph_ := paragraph;
|
pr_ := pr;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxBordersParagraph.GetBorder(index);override;
|
Function TSDocxBordersParagraph.GetBorder(index);override;
|
||||||
Begin
|
Begin
|
||||||
obj := paragraph_.pPr.Bdr;
|
obj := pr_.Bdr;
|
||||||
case index of
|
case index of
|
||||||
TSDocxEnumerations.wdBorderBottom():
|
TSDocxEnumerations.wdBorderBottom():
|
||||||
border := obj.Bottom;
|
border := obj.Bottom;
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
Type TSDocxBordersRange = Class(TSDocxBorders)
|
Type TSDocxBordersRange = Class(TSDocxBorders)
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Init(arr);
|
Function Init(rangeObj);
|
||||||
Function Operator[](index);override;
|
Function Operator[](index);override;
|
||||||
|
|
||||||
private
|
private
|
||||||
range_arr_;
|
range_obj_;
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Item(Index);override;
|
Function Item(Index);override;
|
||||||
|
|
@ -14,15 +14,15 @@ End;
|
||||||
|
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxBordersRange.Init(arr);
|
Function TSDocxBordersRange.Init(rangeObj);
|
||||||
Begin
|
Begin
|
||||||
range_arr_ := arr;
|
range_obj_ := rangeObj;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function Operator TSDocxBordersRange.[](index);override;
|
Function Operator TSDocxBordersRange.[](index);override;
|
||||||
Begin
|
Begin
|
||||||
border_obj := new TSDocxBorderRange(self.Application, self.Creator, self.Parent);
|
border_obj := new TSDocxBorderRange(self.Application, self.Creator, self.Parent);
|
||||||
border_obj.Init(range_arr_, index);
|
border_obj.Init(range_obj_, index);
|
||||||
return border_obj;
|
return border_obj;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Uses TSDocxEnumerations;
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Init(pr);
|
Function Init(pr);
|
||||||
|
Function Apply();virtual;
|
||||||
|
|
||||||
protected
|
protected
|
||||||
pr_;
|
pr_;
|
||||||
|
|
@ -161,17 +162,21 @@ Begin
|
||||||
color_ := TSWdColor();
|
color_ := TSWdColor();
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// function
|
Function TSDocxFont.Apply();virtual;
|
||||||
|
Begin
|
||||||
|
pr_.Update("first");
|
||||||
|
End;
|
||||||
|
|
||||||
|
// Methods
|
||||||
Function TSDocxFont.Reset();virtual;
|
Function TSDocxFont.Reset();virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Delete();
|
pr_.Delete();
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// property
|
// Properties
|
||||||
Function TSDocxFont.WriteAllCaps(value);virtual;
|
Function TSDocxFont.WriteAllCaps(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Caps := value = TSDocxEnumerations.wdToggle() ? _Not(self.Caps) : value;
|
pr_.Caps := value = TSDocxEnumerations.wdToggle() ? _Not(self.Caps) : value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadAllCaps();virtual;
|
Function TSDocxFont.ReadAllCaps();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -181,7 +186,6 @@ End;
|
||||||
Function TSDocxFont.WriteBold(value);virtual;
|
Function TSDocxFont.WriteBold(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Bold := value = TSDocxEnumerations.wdToggle() ? _Not(self.Bold) : value;
|
pr_.Bold := value = TSDocxEnumerations.wdToggle() ? _Not(self.Bold) : value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadBold();virtual;
|
Function TSDocxFont.ReadBold();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -191,7 +195,6 @@ End;
|
||||||
Function TSDocxFont.WriteBoldBi(value);virtual;
|
Function TSDocxFont.WriteBoldBi(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.BoldBi := value = TSDocxEnumerations.wdToggle() ? _Not(self.BoldBi) : value;
|
pr_.BoldBi := value = TSDocxEnumerations.wdToggle() ? _Not(self.BoldBi) : value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadBoldBi();virtual;
|
Function TSDocxFont.ReadBoldBi();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -204,7 +207,6 @@ Begin
|
||||||
if ifnil(color) then pr_.Root().DeleteChild("w:color");
|
if ifnil(color) then pr_.Root().DeleteChild("w:color");
|
||||||
else begin
|
else begin
|
||||||
pr_.Color := color;
|
pr_.Color := color;
|
||||||
pr_.Update("first");
|
|
||||||
end
|
end
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadColorIndex();virtual;
|
Function TSDocxFont.ReadColorIndex();virtual;
|
||||||
|
|
@ -224,7 +226,6 @@ End;
|
||||||
Function TSDocxFont.WriteContextualAlternates(value);virtual;
|
Function TSDocxFont.WriteContextualAlternates(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.ContextualAlternates := value;
|
pr_.ContextualAlternates := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadContextualAlternates();virtual;
|
Function TSDocxFont.ReadContextualAlternates();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -234,7 +235,6 @@ End;
|
||||||
Function TSDocxFont.WriteDisableCharacterSpaceGrid(value);virtual;
|
Function TSDocxFont.WriteDisableCharacterSpaceGrid(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.SnapToGrid := value ? false : true;
|
pr_.SnapToGrid := value ? false : true;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadDisableCharacterSpaceGrid();virtual;
|
Function TSDocxFont.ReadDisableCharacterSpaceGrid();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -244,7 +244,6 @@ End;
|
||||||
Function TSDocxFont.WriteDoubleStrikeThrough(value);virtual;
|
Function TSDocxFont.WriteDoubleStrikeThrough(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.dStrike := value;
|
pr_.dStrike := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadDoubleStrikeThrough();virtual;
|
Function TSDocxFont.ReadDoubleStrikeThrough();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -260,7 +259,6 @@ End;
|
||||||
Function TSDocxFont.WriteEmboss(value);override;
|
Function TSDocxFont.WriteEmboss(value);override;
|
||||||
Begin
|
Begin
|
||||||
pr_.Emboss := value;
|
pr_.Emboss := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadEmboss();override;
|
Function TSDocxFont.ReadEmboss();override;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -281,7 +279,6 @@ Begin
|
||||||
TSDocxEnumerations.wdEmphasisMarkUnderSolidCircle:
|
TSDocxEnumerations.wdEmphasisMarkUnderSolidCircle:
|
||||||
pr_.Em := "underDot";
|
pr_.Em := "underDot";
|
||||||
end;
|
end;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadEmphasisMark();virtual;
|
Function TSDocxFont.ReadEmphasisMark();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -302,7 +299,6 @@ End;
|
||||||
Function TSDocxFont.WriteEngrave(value);virtual;
|
Function TSDocxFont.WriteEngrave(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.ImPrint := value;
|
pr_.ImPrint := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadEngrave();virtual;
|
Function TSDocxFont.ReadEngrave();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -312,7 +308,6 @@ End;
|
||||||
Function TSDocxFont.WriteHidden(value);virtual;
|
Function TSDocxFont.WriteHidden(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Vanish := value;
|
pr_.Vanish := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadHidden();virtual;
|
Function TSDocxFont.ReadHidden();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -322,7 +317,6 @@ End;
|
||||||
Function TSDocxFont.WriteItalic(value);virtual;
|
Function TSDocxFont.WriteItalic(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Italic := value;
|
pr_.Italic := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadItalic();virtual;
|
Function TSDocxFont.ReadItalic();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -332,7 +326,6 @@ End;
|
||||||
Function TSDocxFont.WriteItalicBi(value);virtual;
|
Function TSDocxFont.WriteItalicBi(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.ICs := value;
|
pr_.ICs := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadItalicBi();virtual;
|
Function TSDocxFont.ReadItalicBi();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -342,7 +335,6 @@ End;
|
||||||
Function TSDocxFont.WriteKerning(value);virtual;
|
Function TSDocxFont.WriteKerning(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Kern := value * 2;
|
pr_.Kern := value * 2;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadKerning();virtual;
|
Function TSDocxFont.ReadKerning();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -385,7 +377,6 @@ Begin
|
||||||
TSDocxEnumerations.wdLigaturesStandardHistoricalDiscretional():
|
TSDocxEnumerations.wdLigaturesStandardHistoricalDiscretional():
|
||||||
pr_.Ligatures := "standardHistoricalDiscretional";
|
pr_.Ligatures := "standardHistoricalDiscretional";
|
||||||
end;
|
end;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadLigatures();virtual;
|
Function TSDocxFont.ReadLigatures();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -429,7 +420,6 @@ Function TSDocxFont.WriteName(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.rFont.EastAsia := value;
|
pr_.rFont.EastAsia := value;
|
||||||
pr_.rFont.Ascii := value;
|
pr_.rFont.Ascii := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxFont.ReadName();virtual;
|
Function TSDocxFont.ReadName();virtual;
|
||||||
|
|
@ -440,7 +430,6 @@ End;
|
||||||
Function TSDocxFont.WriteNameAscii(value);virtual;
|
Function TSDocxFont.WriteNameAscii(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.rFont.Ascii := value;
|
pr_.rFont.Ascii := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadNameAscii();virtual;
|
Function TSDocxFont.ReadNameAscii();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -450,7 +439,6 @@ End;
|
||||||
Function TSDocxFont.WriteNameBi(value);virtual;
|
Function TSDocxFont.WriteNameBi(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.rFont.Cs := value;
|
pr_.rFont.Cs := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadNameBi();virtual;
|
Function TSDocxFont.ReadNameBi();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -460,7 +448,6 @@ End;
|
||||||
Function TSDocxFont.WriteNameFarEast(value);virtual;
|
Function TSDocxFont.WriteNameFarEast(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.rFont.EastAsia := value;
|
pr_.rFont.EastAsia := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadNameFarEast();virtual;
|
Function TSDocxFont.ReadNameFarEast();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -471,7 +458,6 @@ End;
|
||||||
Function TSDocxFont.WriteNameOther(value);virtual;
|
Function TSDocxFont.WriteNameOther(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.rFont.HAnsi := value;
|
pr_.rFont.HAnsi := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxFont.ReadNameOther();virtual;
|
Function TSDocxFont.ReadNameOther();virtual;
|
||||||
|
|
@ -489,7 +475,6 @@ Begin
|
||||||
TSDocxEnumerations.wdNumberFormOldstyle():
|
TSDocxEnumerations.wdNumberFormOldstyle():
|
||||||
pr_.NumForm := "oldStyle";
|
pr_.NumForm := "oldStyle";
|
||||||
end;
|
end;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadNumberForm();virtual;
|
Function TSDocxFont.ReadNumberForm();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -513,7 +498,6 @@ Begin
|
||||||
TSDocxEnumerations.wdNumberSpacingTabular():
|
TSDocxEnumerations.wdNumberSpacingTabular():
|
||||||
pr_.NumSpacing := "tabular";
|
pr_.NumSpacing := "tabular";
|
||||||
end;
|
end;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadNumberSpacing();virtual;
|
Function TSDocxFont.ReadNumberSpacing();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -530,7 +514,6 @@ End;
|
||||||
Function TSDocxFont.WriteOutline(value);virtual;
|
Function TSDocxFont.WriteOutline(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Outline := value = TSDocxEnumerations.wdToggle() ? _Not(self.Outline) : value;
|
pr_.Outline := value = TSDocxEnumerations.wdToggle() ? _Not(self.Outline) : value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadOutline();virtual;
|
Function TSDocxFont.ReadOutline();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -540,7 +523,6 @@ End;
|
||||||
Function TSDocxFont.WritePosition(value);virtual;
|
Function TSDocxFont.WritePosition(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Position := value * 2;
|
pr_.Position := value * 2;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadPosition();virtual;
|
Function TSDocxFont.ReadPosition();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -550,7 +532,6 @@ End;
|
||||||
Function TSDocxFont.WriteScaling(value);virtual;
|
Function TSDocxFont.WriteScaling(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.W := value;
|
pr_.W := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadScaling();virtual;
|
Function TSDocxFont.ReadScaling();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -560,7 +541,6 @@ End;
|
||||||
Function TSDocxFont.WriteShadow(value);virtual;
|
Function TSDocxFont.WriteShadow(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Shadow := value;
|
pr_.Shadow := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadShadow();virtual;
|
Function TSDocxFont.ReadShadow();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -570,7 +550,6 @@ End;
|
||||||
Function TSDocxFont.WriteSize(value);virtual;
|
Function TSDocxFont.WriteSize(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Sz := value * 2;
|
pr_.Sz := value * 2;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadSize();virtual;
|
Function TSDocxFont.ReadSize();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -580,7 +559,6 @@ End;
|
||||||
Function TSDocxFont.WriteSizeBi(value);virtual;
|
Function TSDocxFont.WriteSizeBi(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.SzCs := value * 2;
|
pr_.SzCs := value * 2;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadSizeBi();virtual;
|
Function TSDocxFont.ReadSizeBi();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -590,7 +568,6 @@ End;
|
||||||
Function TSDocxFont.WriteSmallCaps(value);virtual;
|
Function TSDocxFont.WriteSmallCaps(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.SmallCaps := value = TSDocxEnumerations.wdToggle() ? _Not(self.SmallCaps) : value;
|
pr_.SmallCaps := value = TSDocxEnumerations.wdToggle() ? _Not(self.SmallCaps) : value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadSmallCaps();virtual;
|
Function TSDocxFont.ReadSmallCaps();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -600,7 +577,6 @@ End;
|
||||||
Function TSDocxFont.WriteSpacing(value);virtual;
|
Function TSDocxFont.WriteSpacing(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Spacing := value * 20;
|
pr_.Spacing := value * 20;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadSpacing();virtual;
|
Function TSDocxFont.ReadSpacing();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -610,7 +586,6 @@ End;
|
||||||
Function TSDocxFont.WriteStrikeThrough(value);virtual;
|
Function TSDocxFont.WriteStrikeThrough(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.Strike := value;
|
pr_.Strike := value;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadStrikeThrough();virtual;
|
Function TSDocxFont.ReadStrikeThrough();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -620,7 +595,6 @@ End;
|
||||||
Function TSDocxFont.WriteSubscript(value);virtual;
|
Function TSDocxFont.WriteSubscript(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.VertAlign := "subscript";
|
pr_.VertAlign := "subscript";
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadSubscript();virtual;
|
Function TSDocxFont.ReadSubscript();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -630,7 +604,6 @@ End;
|
||||||
Function TSDocxFont.WriteSuperscript(value);virtual;
|
Function TSDocxFont.WriteSuperscript(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.VertAlign := "supercript";
|
pr_.VertAlign := "supercript";
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadSuperscript();virtual;
|
Function TSDocxFont.ReadSuperscript();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -677,7 +650,6 @@ Begin
|
||||||
TSDocxEnumerations.wdUnderlineWords():
|
TSDocxEnumerations.wdUnderlineWords():
|
||||||
pr_.U := "words";
|
pr_.U := "words";
|
||||||
end;
|
end;
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadUnderline();virtual;
|
Function TSDocxFont.ReadUnderline();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -724,7 +696,6 @@ End;
|
||||||
Function TSDocxFont.WriteUnderlineColor(value);virtual;
|
Function TSDocxFont.WriteUnderlineColor(value);virtual;
|
||||||
Begin
|
Begin
|
||||||
pr_.UColor := color_[value];
|
pr_.UColor := color_[value];
|
||||||
pr_.Update("first");
|
|
||||||
End;
|
End;
|
||||||
Function TSDocxFont.ReadUnderlineColor();virtual;
|
Function TSDocxFont.ReadUnderlineColor();virtual;
|
||||||
Begin
|
Begin
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,15 @@ Type TSDocxFontRange = Class(TSDocxFont)
|
||||||
Uses TSDocxEnumerations;
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
public
|
public
|
||||||
Function Init(arr);
|
Function Init(rangeObj);
|
||||||
|
Function Apply();overload;
|
||||||
|
|
||||||
private
|
private
|
||||||
Function CallFunction(pf, value);overload;
|
Function CallFunction(pf, value);overload;
|
||||||
Function CallFunction(pf);overload;
|
Function CallFunction(pf);overload;
|
||||||
Function SplitRun();
|
|
||||||
|
|
||||||
private
|
private
|
||||||
range_arr_;
|
range_obj_;
|
||||||
split_flag_; // 写之前切割run,切割后设为true
|
split_flag_; // 写之前切割run,切割后设为true
|
||||||
|
|
||||||
public
|
public
|
||||||
|
|
@ -107,32 +107,29 @@ public
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function TSDocxFontRange.Init(arr);
|
Function TSDocxFontRange.Init(rangeObj);
|
||||||
Begin
|
Begin
|
||||||
range_arr_ := arr;
|
range_obj_ := rangeObj;
|
||||||
split_flag_ := false;
|
|
||||||
class(TSDocxFont).Init(nil);
|
class(TSDocxFont).Init(nil);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxFontRange.SplitRun();
|
Function TSDocxFontRange.Apply();overload;
|
||||||
Begin
|
Begin
|
||||||
if split_flag_ then return;
|
CallFunction(ThisFunction(class(TSDocxFont).Apply));
|
||||||
class(TSWdCommon).SplitRangeRun(range_arr_);
|
|
||||||
self.Parent.SetRangeArr(range_arr_);
|
|
||||||
split_flag_ := true;
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function TSDocxFontRange.CallFunction(pf, value);overload;
|
Function TSDocxFontRange.CallFunction(pf, value);overload;
|
||||||
Begin
|
Begin
|
||||||
SplitRun();
|
range_obj_.SplitRun();
|
||||||
for i:=0 to length(range_arr_)-1 do
|
range_arr := range_obj_.GetInfo();
|
||||||
|
for i:=0 to length(range_arr)-1 do
|
||||||
begin
|
begin
|
||||||
paragraph := range_arr_[i]["tparagraph"];
|
paragraph := range_arr[i]["tparagraph"];
|
||||||
pr_ := paragraph.pPr.rPr;
|
pr_ := paragraph.pPr.rPr;
|
||||||
##pf(value);
|
##pf(value);
|
||||||
for i:=0 to length(range_arr_)-1 do
|
for i:=0 to length(range_arr)-1 do
|
||||||
begin
|
begin
|
||||||
pr_ := range_arr_[i]["trun"].rPr;
|
pr_ := range_arr[i]["trun"].rPr;
|
||||||
##pf(value);
|
##pf(value);
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
@ -141,9 +138,10 @@ End;
|
||||||
Function TSDocxFontRange.CallFunction(pf);overload;
|
Function TSDocxFontRange.CallFunction(pf);overload;
|
||||||
Begin
|
Begin
|
||||||
ret := nil;
|
ret := nil;
|
||||||
for i:=0 to length(range_arr_)-1 do
|
range_arr := range_obj_.GetInfo();
|
||||||
|
for i:=0 to length(range_arr)-1 do
|
||||||
begin
|
begin
|
||||||
pr_ := range_arr_[i]["trun"].rPr;
|
pr_ := range_arr[i]["trun"].rPr;
|
||||||
if not ifObj(pr_.Root()) then continue;
|
if not ifObj(pr_.Root()) then continue;
|
||||||
cur := ##pf();
|
cur := ##pf();
|
||||||
if ifnil(ret) then ret := cur;
|
if ifnil(ret) then ret := cur;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,713 @@
|
||||||
|
Type TSDocxParagraphFormat = Class(TSVbaBase)
|
||||||
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
|
public
|
||||||
|
Function Init(docx, pPr);
|
||||||
|
Function Apply();virtual;
|
||||||
|
Function ReWrite(pr);virtual;
|
||||||
|
|
||||||
|
protected
|
||||||
|
docx_;
|
||||||
|
pr_; // TOfficeObj("TwpPr")
|
||||||
|
|
||||||
|
public
|
||||||
|
// Methods
|
||||||
|
Function CloseUp();virtual;
|
||||||
|
Function IndentCharWidth(Count);virtual;
|
||||||
|
Function IndentFirstLineCharWidth(Count);virtual;
|
||||||
|
Function OpenOrCloseUp();virtual;
|
||||||
|
Function OpenUp();virtual;
|
||||||
|
Function Reset();virtual;
|
||||||
|
Function Space1();virtual;
|
||||||
|
Function Space15();virtual;
|
||||||
|
Function Space2();virtual;
|
||||||
|
Function TabHangingIndent(Count);virtual;
|
||||||
|
Function TabIndent(Count);virtual;
|
||||||
|
|
||||||
|
// property
|
||||||
|
property AddSpaceBetweenFarEastAndAlpha read ReadAddSpaceBetweenFarEastAndAlpha write WriteAddSpaceBetweenFarEastAndAlpha;
|
||||||
|
property AddSpaceBetweenFarEastAndDigit read ReadAddSpaceBetweenFarEastAndDigit write WriteAddSpaceBetweenFarEastAndDigit;
|
||||||
|
property Alignment read ReadAlignment write WriteAlignment;
|
||||||
|
property AutoAdjustRightIndent read ReadAutoAdjustRightIndent write WriteAutoAdjustRightIndent;
|
||||||
|
property BaseLineAlignment read ReadBaseLineAlignment write WriteBaseLineAlignment;
|
||||||
|
property Borders read ReadBorders;
|
||||||
|
property CharacterUnitFirstLineIndent read ReadCharacterUnitFirstLineIndent write WriteCharacterUnitFirstLineIndent;
|
||||||
|
property CharacterUnitLeftIndent read ReadCharacterUnitLeftIndent write WriteCharacterUnitLeftIndent;
|
||||||
|
property CharacterUnitRightIndent read ReadCharacterUnitRightIndent write WriteCharacterUnitRightIndent;
|
||||||
|
property CollapsedByDefault read ReadCollapsedByDefault write WriteCollapsedByDefault;
|
||||||
|
property DisableLineHeightGrid read ReadDisableLineHeightGrid write WriteDisableLineHeightGrid;
|
||||||
|
property Duplicate read ReadDuplicate;
|
||||||
|
property FarEastLineBreakControl read ReadFarEastLineBreakControl write WriteFarEastLineBreakControl;
|
||||||
|
property FirstLineIndent read ReadFirstLineIndent write WriteFirstLineIndent;
|
||||||
|
property HalfWidthPunctuationOnTopOfLine read ReadHalfWidthPunctuationOnTopOfLine write WriteHalfWidthPunctuationOnTopOfLine;
|
||||||
|
property HangingPunctuation read ReadHangingPunctuation write WriteHangingPunctuation;
|
||||||
|
property Hyphenation read ReadHyphenation write WriteHyphenation;
|
||||||
|
property KeepTogether read ReadKeepTogether write WriteKeepTogether;
|
||||||
|
property KeepWithNext read ReadKeepWithNext write WriteKeepWithNext;
|
||||||
|
property LeftIndent read ReadLeftIndent write WriteLeftIndent;
|
||||||
|
property LineSpacing read ReadLineSpacing write WriteLineSpacing;
|
||||||
|
property LineSpacingRule read ReadLineSpacingRule write WriteLineSpacingRule;
|
||||||
|
property LineUnitAfter read ReadLineUnitAfter write WriteLineUnitAfter;
|
||||||
|
property LineUnitBefore read ReadLineUnitBefore write WriteLineUnitBefore;
|
||||||
|
property MirrorIndents read ReadMirrorIndents write WriteMirrorIndents;
|
||||||
|
property NoLineNumber read ReadNoLineNumber write WriteNoLineNumber;
|
||||||
|
property OutlineLevel read ReadOutlineLevel write WriteOutlineLevel;
|
||||||
|
property PageBreakBefore read ReadPageBreakBefore write WritePageBreakBefore;
|
||||||
|
property ReadingOrder read ReadReadingOrder write WriteReadingOrder;
|
||||||
|
property RightIndent read ReadRightIndent write WriteRightIndent;
|
||||||
|
property Shading read ReadShading;
|
||||||
|
property SpaceAfter read ReadSpaceAfter write WriteSpaceAfter;
|
||||||
|
property SpaceAfterAuto read ReadSpaceAfterAuto write WriteSpaceAfterAuto;
|
||||||
|
property SpaceBefore read ReadSpaceBefore write WriteSpaceBefore;
|
||||||
|
property SpaceBeforeAuto read ReadSpaceBeforeAuto write WriteSpaceBeforeAuto;
|
||||||
|
property Style read ReadStyle write WriteStyle;
|
||||||
|
property TabStops read ReadTabStops write WriteTabStops;
|
||||||
|
property TextboxTightWrap read ReadTextboxTightWrap write WriteTextboxTightWrap;
|
||||||
|
property WidowControl read ReadWidowControl write WriteWidowControl;
|
||||||
|
property WordWrap read ReadWordWrap write WriteWordWrap;
|
||||||
|
Function WriteWordWrap(value);virtual;
|
||||||
|
Function ReadWordWrap();virtual;
|
||||||
|
Function WriteWidowControl(value);virtual;
|
||||||
|
Function ReadWidowControl();virtual;
|
||||||
|
Function WriteTextboxTightWrap(value);virtual;
|
||||||
|
Function ReadTextboxTightWrap();virtual;
|
||||||
|
Function WriteTabStops(value);virtual;
|
||||||
|
Function ReadTabStops();virtual;
|
||||||
|
Function WriteStyle(value);virtual;
|
||||||
|
Function ReadStyle();virtual;
|
||||||
|
Function WriteSpaceBeforeAuto(value);virtual;
|
||||||
|
Function ReadSpaceBeforeAuto();virtual;
|
||||||
|
Function WriteSpaceBefore(value);virtual;
|
||||||
|
Function ReadSpaceBefore();virtual;
|
||||||
|
Function WriteSpaceAfterAuto(value);virtual;
|
||||||
|
Function ReadSpaceAfterAuto();virtual;
|
||||||
|
Function WriteSpaceAfter(value);virtual;
|
||||||
|
Function ReadSpaceAfter();virtual;
|
||||||
|
Function ReadShading();virtual;
|
||||||
|
Function WriteRightIndent(value);virtual;
|
||||||
|
Function ReadRightIndent();virtual;
|
||||||
|
Function WriteReadingOrder(value);virtual;
|
||||||
|
Function ReadReadingOrder();virtual;
|
||||||
|
Function WritePageBreakBefore(value);virtual;
|
||||||
|
Function ReadPageBreakBefore();virtual;
|
||||||
|
Function WriteOutlineLevel(value);virtual;
|
||||||
|
Function ReadOutlineLevel();virtual;
|
||||||
|
Function WriteNoLineNumber(value);virtual;
|
||||||
|
Function ReadNoLineNumber();virtual;
|
||||||
|
Function WriteMirrorIndents(value);virtual;
|
||||||
|
Function ReadMirrorIndents();virtual;
|
||||||
|
Function WriteLineUnitBefore(value);virtual;
|
||||||
|
Function ReadLineUnitBefore();virtual;
|
||||||
|
Function WriteLineUnitAfter(value);virtual;
|
||||||
|
Function ReadLineUnitAfter();virtual;
|
||||||
|
Function WriteLineSpacingRule(value);virtual;
|
||||||
|
Function ReadLineSpacingRule();virtual;
|
||||||
|
Function WriteLineSpacing(value);virtual;
|
||||||
|
Function ReadLineSpacing();virtual;
|
||||||
|
Function WriteLeftIndent(value);virtual;
|
||||||
|
Function ReadLeftIndent();virtual;
|
||||||
|
Function WriteKeepWithNext(value);virtual;
|
||||||
|
Function ReadKeepWithNext();virtual;
|
||||||
|
Function WriteKeepTogether(value);virtual;
|
||||||
|
Function ReadKeepTogether();virtual;
|
||||||
|
Function WriteHyphenation(value);virtual;
|
||||||
|
Function ReadHyphenation();virtual;
|
||||||
|
Function WriteHangingPunctuation(value);virtual;
|
||||||
|
Function ReadHangingPunctuation();virtual;
|
||||||
|
Function WriteHalfWidthPunctuationOnTopOfLine(value);virtual;
|
||||||
|
Function ReadHalfWidthPunctuationOnTopOfLine();virtual;
|
||||||
|
Function WriteFirstLineIndent(value);virtual;
|
||||||
|
Function ReadFirstLineIndent();virtual;
|
||||||
|
Function WriteFarEastLineBreakControl(value);virtual;
|
||||||
|
Function ReadFarEastLineBreakControl();virtual;
|
||||||
|
Function ReadDuplicate();virtual;
|
||||||
|
Function WriteDisableLineHeightGrid(value);virtual;
|
||||||
|
Function ReadDisableLineHeightGrid();virtual;
|
||||||
|
Function WriteCollapsedByDefault(value);virtual;
|
||||||
|
Function ReadCollapsedByDefault();virtual;
|
||||||
|
Function WriteCharacterUnitRightIndent(value);virtual;
|
||||||
|
Function ReadCharacterUnitRightIndent();virtual;
|
||||||
|
Function WriteCharacterUnitLeftIndent(value);virtual;
|
||||||
|
Function ReadCharacterUnitLeftIndent();virtual;
|
||||||
|
Function WriteCharacterUnitFirstLineIndent(value);virtual;
|
||||||
|
Function ReadCharacterUnitFirstLineIndent();virtual;
|
||||||
|
Function ReadBorders(index);virtual;
|
||||||
|
Function WriteBaseLineAlignment(value);virtual;
|
||||||
|
Function ReadBaseLineAlignment();virtual;
|
||||||
|
Function WriteAutoAdjustRightIndent(value);virtual;
|
||||||
|
Function ReadAutoAdjustRightIndent();virtual;
|
||||||
|
Function WriteAlignment(value);virtual;
|
||||||
|
Function ReadAlignment();virtual;
|
||||||
|
Function WriteAddSpaceBetweenFarEastAndDigit(value);virtual;
|
||||||
|
Function ReadAddSpaceBetweenFarEastAndDigit();virtual;
|
||||||
|
Function WriteAddSpaceBetweenFarEastAndAlpha(value);virtual;
|
||||||
|
Function ReadAddSpaceBetweenFarEastAndAlpha();virtual;
|
||||||
|
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
// ============== 实现 ================= //
|
||||||
|
Function TSDocxParagraphFormat.Init(docx, pPr);
|
||||||
|
Begin
|
||||||
|
docx_ := docx;
|
||||||
|
pr_ := pPr;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.Apply();virtual;
|
||||||
|
Begin
|
||||||
|
pr_.Update("first");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.ReWrite(pr);virtual;
|
||||||
|
Begin
|
||||||
|
self.Reset();
|
||||||
|
marshal := pr.Marshal()[0];
|
||||||
|
pr_.Root().InsertAfterChild(marshal["children"]);
|
||||||
|
End;
|
||||||
|
|
||||||
|
// Methods
|
||||||
|
Function TSDocxParagraphFormat.CloseUp();virtual;
|
||||||
|
Begin
|
||||||
|
self.SpaceBefore := 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.IndentCharWidth(Count);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.LeftIndent := Count * 210;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.IndentFirstLineCharWidth(Count);virtual;
|
||||||
|
Begin
|
||||||
|
self.FirstLineIndent := Count;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.OpenOrCloseUp();virtual;
|
||||||
|
Begin
|
||||||
|
self.SpaceBefore := self.SpaceBefore > 0 ? 0 : 12;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.OpenUp();virtual;
|
||||||
|
Begin
|
||||||
|
self.SpaceBefore := 12;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.Reset();virtual;
|
||||||
|
Begin
|
||||||
|
pr_.Delete();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.Space1();virtual;
|
||||||
|
Begin
|
||||||
|
self.LineSpacingRule := TSDocxEnumerations.wdLineSpaceSingle();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.Space15();virtual;
|
||||||
|
Begin
|
||||||
|
self.LineSpacingRule := TSDocxEnumerations.wdLineSpace1pt5();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.Space2();virtual;
|
||||||
|
Begin
|
||||||
|
self.LineSpacingRule := TSDocxEnumerations.wdLineSpaceDouble();
|
||||||
|
End;
|
||||||
|
|
||||||
|
// property
|
||||||
|
Function TSDocxParagraphFormat.WriteWordWrap(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.WordWrap := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadWordWrap();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("WordWrap");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteWidowControl(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.WidowControl := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadWidowControl();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("WidowControl");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteTextboxTightWrap(value);virtual;
|
||||||
|
Begin
|
||||||
|
case value of
|
||||||
|
TSDocxEnumerations.wdTightAll():
|
||||||
|
pr_.TextboxTightWrap := "allLines";
|
||||||
|
TSDocxEnumerations.wdTightFirstAndLastLines():
|
||||||
|
pr_.TextboxTightWrap := "firstAndLastLine";
|
||||||
|
TSDocxEnumerations.wdTightFirstLineOnly():
|
||||||
|
pr_.TextboxTightWrap := "firstLineOnly";
|
||||||
|
TSDocxEnumerations.wdTightLastLineOnly():
|
||||||
|
pr_.TextboxTightWrap := "LastLineOnly";
|
||||||
|
TSDocxEnumerations.wdTightNone():
|
||||||
|
pr_.TextboxTightWrap := "none";
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadTextboxTightWrap();virtual;
|
||||||
|
Begin
|
||||||
|
value := pr_.Value("TextboxTightWrap");
|
||||||
|
case value of
|
||||||
|
"allLines":
|
||||||
|
return TSDocxEnumerations.wdTightAll();
|
||||||
|
"firstAndLastLine":
|
||||||
|
return TSDocxEnumerations.wdTightFirstAndLastLines();
|
||||||
|
"firstLineOnly":
|
||||||
|
return TSDocxEnumerations.wdTightFirstLineOnly();
|
||||||
|
"LastLineOnly":
|
||||||
|
return TSDocxEnumerations.wdTightLastLineOnly();
|
||||||
|
"none":
|
||||||
|
return TSDocxEnumerations.wdTightNone();
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteStyle(value);virtual;
|
||||||
|
Begin
|
||||||
|
obj := docx_.StyleObject().GetStyle(value);
|
||||||
|
pr_.StyleId := obj.StyleId;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadStyle();virtual;
|
||||||
|
Begin
|
||||||
|
id := pr_.Value("StyleId", 1);
|
||||||
|
obj := docx_.StyleObject().GetStyleById(id);
|
||||||
|
return obj.Name;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteSpaceBeforeAuto(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.SpaceBeforeAuto := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadSpaceBeforeAuto();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("SpaceBeforeAuto") ? true : false;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteSpaceBefore(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.SpaceBefore := value * 20;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadSpaceBefore();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("SpaceBefore") / 20;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteSpaceAfterAuto(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.SpaceAfterAuto := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadSpaceAfterAuto();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("SpaceAfterAuto") ? true : false;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteSpaceAfter(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.SpaceAfter := value * 20;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadSpaceAfter();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("SpaceAfter") / 20;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.ReadShading();virtual;
|
||||||
|
Begin
|
||||||
|
shading_obj := new TSDocxShading(self.Application, self.Creator, self.Parent);
|
||||||
|
shading_obj.Init(pr_.Shading);
|
||||||
|
return shading_obj;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteRightIndent(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.RightIndent := value * 20;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadRightIndent();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("RightIndent") / 20;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteReadingOrder(value);virtual;
|
||||||
|
Begin
|
||||||
|
case value of
|
||||||
|
TSDocxEnumerations.wdReadingOrderLtr():
|
||||||
|
pr_.Bidi := false;
|
||||||
|
TSDocxEnumerations.wdReadingOrderRtl():
|
||||||
|
pr_.Bidi := true;
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadReadingOrder();virtual;
|
||||||
|
Begin
|
||||||
|
value := pr_.Value("Bidi");
|
||||||
|
case value of
|
||||||
|
false: return TSDocxEnumerations.wdReadingOrderLtr();
|
||||||
|
true: return TSDocxEnumerations.wdReadingOrderRtl();
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WritePageBreakBefore(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.PageBreakBefore := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadPageBreakBefore();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("PageBreakBefore");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteOutlineLevel(value);virtual;
|
||||||
|
Begin
|
||||||
|
case value of
|
||||||
|
TSDocxEnumerations.wdOutlineLevel1():
|
||||||
|
pr_.OutlineLevel := 0;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel2():
|
||||||
|
pr_.OutlineLevel := 1;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel3():
|
||||||
|
pr_.OutlineLevel := 2;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel4():
|
||||||
|
pr_.OutlineLevel := 3;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel5():
|
||||||
|
pr_.OutlineLevel := 4;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel6():
|
||||||
|
pr_.OutlineLevel := 5;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel7():
|
||||||
|
pr_.OutlineLevel := 6;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel8():
|
||||||
|
pr_.OutlineLevel := 7;
|
||||||
|
TSDocxEnumerations.wdOutlineLevel9():
|
||||||
|
pr_.OutlineLevel := 8;
|
||||||
|
TSDocxEnumerations.wdOutlineLevelBodyText():
|
||||||
|
class(TSXml).RemoveNode(pr_.Root(), "w:outlineLvl");
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadOutlineLevel();virtual;
|
||||||
|
Begin
|
||||||
|
value := pr_.Value("OutlineLevel");
|
||||||
|
case value of
|
||||||
|
0: return TSDocxEnumerations.wdOutlineLevel1();
|
||||||
|
1: return TSDocxEnumerations.wdOutlineLevel2();
|
||||||
|
2: return TSDocxEnumerations.wdOutlineLevel3();
|
||||||
|
3: return TSDocxEnumerations.wdOutlineLevel4();
|
||||||
|
4: return TSDocxEnumerations.wdOutlineLevel5();
|
||||||
|
5: return TSDocxEnumerations.wdOutlineLevel6();
|
||||||
|
6: return TSDocxEnumerations.wdOutlineLevel7();
|
||||||
|
7: return TSDocxEnumerations.wdOutlineLevel8();
|
||||||
|
8: return TSDocxEnumerations.wdOutlineLevel9();
|
||||||
|
nil: return TSDocxEnumerations.wdOutlineLevelBodyText();
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteNoLineNumber(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.SuppressLineNumbers := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadNoLineNumber();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("SuppressLineNumbers");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteMirrorIndents(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.MirrorIndents := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadMirrorIndents();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("MirrorIndents");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteLineUnitBefore(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.BeforeLines := value * 100;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadLineUnitBefore();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("BeforeLines") / 100;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteLineUnitAfter(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.AfterLines := value * 100;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadLineUnitAfter();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("AfterLines") / 100;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteLineSpacingRule(value);virtual;
|
||||||
|
Begin
|
||||||
|
case value of
|
||||||
|
TSDocxEnumerations.wdLineSpace1pt5():
|
||||||
|
pr_.LineSpacingRule := "auto";
|
||||||
|
TSDocxEnumerations.wdLineSpaceAtLeast():
|
||||||
|
pr_.LineSpacingRule := "atLeast";
|
||||||
|
TSDocxEnumerations.wdLineSpaceDouble():
|
||||||
|
pr_.LineSpacingRule := "auto";
|
||||||
|
TSDocxEnumerations.wdLineSpaceExactly():
|
||||||
|
pr_.LineSpacingRule := "exact";
|
||||||
|
TSDocxEnumerations.wdLineSpaceMultiple():
|
||||||
|
pr_.LineSpacingRule := "auto";
|
||||||
|
TSDocxEnumerations.wdLineSpaceSingle():
|
||||||
|
pr_.LineSpacingRule := "auto";
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadLineSpacingRule();virtual;
|
||||||
|
Begin
|
||||||
|
value := pr_.Value("LineSpacingRule");
|
||||||
|
case value of
|
||||||
|
"atLeast":
|
||||||
|
return TSDocxEnumerations.wdLineSpaceAtLeast();
|
||||||
|
"exact":
|
||||||
|
return TSDocxEnumerations.wdLineSpaceExactly();
|
||||||
|
"auto":
|
||||||
|
return TSDocxEnumerations.wdLineSpaceMultiple();
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteLineSpacing(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.LineSpacing := value * 20;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadLineSpacing();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("LineSpacing") / 20;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteLeftIndent(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.LeftIndent := value * 20;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadLeftIndent();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("LeftIndent") / 20;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteKeepWithNext(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.KeepWithNext := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadKeepWithNext();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("KeepWithNext");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteKeepTogether(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.KeepTogether := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadKeepTogether();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("KeepTogether");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteHyphenation(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.SuppressAutoHyphens := value ? false : true;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadHyphenation();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("SuppressAutoHyphens") ? false : true;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteHangingPunctuation(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.OverflowPunct := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadHangingPunctuation();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("TopLinePunct");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteHalfWidthPunctuationOnTopOfLine(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.TopLinePunct := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadHalfWidthPunctuationOnTopOfLine();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("TopLinePunct");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteFirstLineIndent(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.FirstLineIndent := value * 20;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadFirstLineIndent();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("FirstLineIndent") / 20;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteFarEastLineBreakControl(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.Kinsoku := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadFarEastLineBreakControl();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("Kinsoku");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.ReadDuplicate();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteDisableLineHeightGrid(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.SnapToGrid := value ? false : true;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadDisableLineHeightGrid();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("SnapToGrid") ? false : true;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteCollapsedByDefault(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.Collapsed := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadCollapsedByDefault();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("Collapsed");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteCharacterUnitRightIndent(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.RightChars := value * 100;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadCharacterUnitRightIndent();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("RightChars") / 100;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteCharacterUnitLeftIndent(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.LeftChars := value * 100;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadCharacterUnitLeftIndent();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("LeftChars") / 100;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteCharacterUnitFirstLineIndent(value);virtual;
|
||||||
|
Begin
|
||||||
|
if value > 0 then pr_.FirstLineChars := value * 100;
|
||||||
|
else pr_.HangingChars := abs(value) * 100;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadCharacterUnitFirstLineIndent();virtual;
|
||||||
|
Begin
|
||||||
|
first_val := pr_.Value("FirstLineChars");
|
||||||
|
if first_val then return integer(first_val / 100);
|
||||||
|
hanging_val := pr_.Value("HangingChars");
|
||||||
|
if hanging_val then return -integer(hanging_val / 100);
|
||||||
|
return 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.ReadBorders(index);virtual;
|
||||||
|
Begin
|
||||||
|
borders_obj := new TSDocxBordersParagraph(self.Application, self.Creator, self.Parent);
|
||||||
|
borders_obj.Init(pr_);
|
||||||
|
return ifnil(index) ? borders_obj : borders_obj[index];
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteBaseLineAlignment(value);virtual;
|
||||||
|
Begin
|
||||||
|
case value of
|
||||||
|
TSDocxEnumerations.wdBaselineAlignAuto():
|
||||||
|
pr_.TextAlignment := "auto";
|
||||||
|
TSDocxEnumerations.wdBaselineAlignBaseline():
|
||||||
|
pr_.TextAlignment := "baseline";
|
||||||
|
TSDocxEnumerations.wdBaselineAlignCenter():
|
||||||
|
pr_.TextAlignment := "center";
|
||||||
|
TSDocxEnumerations.wdBaselineAlignFarEast50():
|
||||||
|
pr_.TextAlignment := "bottom";
|
||||||
|
TSDocxEnumerations.wdBaselineAlignTop():
|
||||||
|
pr_.TextAlignment := "top";
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadBaseLineAlignment();virtual;
|
||||||
|
Begin
|
||||||
|
value := pr_.Value("TextAlignment");
|
||||||
|
case value of
|
||||||
|
"auto", nil:
|
||||||
|
return TSDocxEnumerations.wdBaselineAlignAuto();
|
||||||
|
"baseline":
|
||||||
|
return TSDocxEnumerations.wdBaselineAlignBaseline();
|
||||||
|
"center":
|
||||||
|
return TSDocxEnumerations.wdBaselineAlignCenter();
|
||||||
|
"bottom":
|
||||||
|
return TSDocxEnumerations.wdBaselineAlignFarEast50();
|
||||||
|
"top":
|
||||||
|
return TSDocxEnumerations.wdBaselineAlignTop();
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteAutoAdjustRightIndent(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.AdjustRightInd := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadAutoAdjustRightIndent();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("AdjustRightInd");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteAlignment(value);virtual;
|
||||||
|
Begin
|
||||||
|
case value of
|
||||||
|
TSDocxEnumerations.wdAlignParagraphCenter():
|
||||||
|
pr_.Alignment := "center";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphDistribute():
|
||||||
|
pr_.Alignment := "distribute";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphJustify():
|
||||||
|
pr_.Alignment := "both";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphJustifyHi():
|
||||||
|
pr_.Alignment := "highKashida";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphJustifyLow():
|
||||||
|
pr_.Alignment := "lowKashida";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphJustifyMed():
|
||||||
|
pr_.Alignment := "mediumKashida";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphLeft():
|
||||||
|
pr_.Alignment := "left";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphRight():
|
||||||
|
pr_.Alignment := "right";
|
||||||
|
TSDocxEnumerations.wdAlignParagraphThaiJustify():
|
||||||
|
pr_.Alignment := "thaiDistribute";
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadAlignment();virtual;
|
||||||
|
Begin
|
||||||
|
value := pr_.Value("Alignment");
|
||||||
|
case value of
|
||||||
|
"center":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphCenter();
|
||||||
|
"distribute":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphDistribute();
|
||||||
|
"both", nil:
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphJustify();
|
||||||
|
"highKashida":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphJustifyHi();
|
||||||
|
"lowKashida":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphJustifyLow();
|
||||||
|
"mediumKashida":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphJustifyMed();
|
||||||
|
"left":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphLeft();
|
||||||
|
"right":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphRight();
|
||||||
|
"thaiDistribute":
|
||||||
|
return TSDocxEnumerations.wdAlignParagraphThaiJustify();
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteAddSpaceBetweenFarEastAndDigit(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.AutoSpaceDN := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadAddSpaceBetweenFarEastAndDigit();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("AutoSpaceDN");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormat.WriteAddSpaceBetweenFarEastAndAlpha(value);virtual;
|
||||||
|
Begin
|
||||||
|
pr_.AutoSpaceDE := value ? true : false;
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormat.ReadAddSpaceBetweenFarEastAndAlpha();virtual;
|
||||||
|
Begin
|
||||||
|
return pr_.Value("AutoSpaceDE");
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
@ -0,0 +1,563 @@
|
||||||
|
Type TSDocxParagraphFormatRange = Class(TSDocxParagraphFormat)
|
||||||
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
|
public
|
||||||
|
Function Init(docx, rangeObj);
|
||||||
|
Function Apply();override;
|
||||||
|
Function ReWrite(value);override;
|
||||||
|
|
||||||
|
private
|
||||||
|
Function CallFunction(pf, value);overload;
|
||||||
|
Function CallFunction(pf);overload;
|
||||||
|
|
||||||
|
private
|
||||||
|
paragraph_arr_;
|
||||||
|
|
||||||
|
public
|
||||||
|
// Methods
|
||||||
|
Function CloseUp();override;
|
||||||
|
Function IndentCharWidth(Count);override;
|
||||||
|
Function IndentFirstLineCharWidth(Count);override;
|
||||||
|
Function OpenOrCloseUp();override;
|
||||||
|
Function OpenUp();override;
|
||||||
|
Function Reset();override;
|
||||||
|
Function Space1();override;
|
||||||
|
Function Space15();override;
|
||||||
|
Function Space2();override;
|
||||||
|
Function TabHangingIndent(Count);override;
|
||||||
|
Function TabIndent(Count);override;
|
||||||
|
|
||||||
|
// property
|
||||||
|
Function WriteWordWrap(value);override;
|
||||||
|
Function ReadWordWrap();override;
|
||||||
|
Function WriteWidowControl(value);override;
|
||||||
|
Function ReadWidowControl();override;
|
||||||
|
Function WriteTextboxTightWrap(value);override;
|
||||||
|
Function ReadTextboxTightWrap();override;
|
||||||
|
Function WriteTabStops(value);override;
|
||||||
|
Function ReadTabStops();override;
|
||||||
|
Function WriteStyle(value);override;
|
||||||
|
Function ReadStyle();override;
|
||||||
|
Function WriteSpaceBeforeAuto(value);override;
|
||||||
|
Function ReadSpaceBeforeAuto();override;
|
||||||
|
Function WriteSpaceBefore(value);override;
|
||||||
|
Function ReadSpaceBefore();override;
|
||||||
|
Function WriteSpaceAfterAuto(value);override;
|
||||||
|
Function ReadSpaceAfterAuto();override;
|
||||||
|
Function WriteSpaceAfter(value);override;
|
||||||
|
Function ReadSpaceAfter();override;
|
||||||
|
Function ReadShading();override;
|
||||||
|
Function WriteRightIndent(value);override;
|
||||||
|
Function ReadRightIndent();override;
|
||||||
|
Function WriteReadingOrder(value);override;
|
||||||
|
Function ReadReadingOrder();override;
|
||||||
|
Function WritePageBreakBefore(value);override;
|
||||||
|
Function ReadPageBreakBefore();override;
|
||||||
|
Function WriteOutlineLevel(value);override;
|
||||||
|
Function ReadOutlineLevel();override;
|
||||||
|
Function WriteNoLineNumber(value);override;
|
||||||
|
Function ReadNoLineNumber();override;
|
||||||
|
Function WriteMirrorIndents(value);override;
|
||||||
|
Function ReadMirrorIndents();override;
|
||||||
|
Function WriteLineUnitBefore(value);override;
|
||||||
|
Function ReadLineUnitBefore();override;
|
||||||
|
Function WriteLineUnitAfter(value);override;
|
||||||
|
Function ReadLineUnitAfter();override;
|
||||||
|
Function WriteLineSpacingRule(value);override;
|
||||||
|
Function ReadLineSpacingRule();override;
|
||||||
|
Function WriteLineSpacing(value);override;
|
||||||
|
Function ReadLineSpacing();override;
|
||||||
|
Function WriteLeftIndent(value);override;
|
||||||
|
Function ReadLeftIndent();override;
|
||||||
|
Function WriteKeepWithNext(value);override;
|
||||||
|
Function ReadKeepWithNext();override;
|
||||||
|
Function WriteKeepTogether(value);override;
|
||||||
|
Function ReadKeepTogether();override;
|
||||||
|
Function WriteHyphenation(value);override;
|
||||||
|
Function ReadHyphenation();override;
|
||||||
|
Function WriteHangingPunctuation(value);override;
|
||||||
|
Function ReadHangingPunctuation();override;
|
||||||
|
Function WriteHalfWidthPunctuationOnTopOfLine(value);override;
|
||||||
|
Function ReadHalfWidthPunctuationOnTopOfLine();override;
|
||||||
|
Function WriteFirstLineIndent(value);override;
|
||||||
|
Function ReadFirstLineIndent();override;
|
||||||
|
Function WriteFarEastLineBreakControl(value);override;
|
||||||
|
Function ReadFarEastLineBreakControl();override;
|
||||||
|
Function ReadDuplicate();override;
|
||||||
|
Function WriteDisableLineHeightGrid(value);override;
|
||||||
|
Function ReadDisableLineHeightGrid();override;
|
||||||
|
Function WriteCollapsedByDefault(value);override;
|
||||||
|
Function ReadCollapsedByDefault();override;
|
||||||
|
Function WriteCharacterUnitRightIndent(value);override;
|
||||||
|
Function ReadCharacterUnitRightIndent();override;
|
||||||
|
Function WriteCharacterUnitLeftIndent(value);override;
|
||||||
|
Function ReadCharacterUnitLeftIndent();override;
|
||||||
|
Function WriteCharacterUnitFirstLineIndent(value);override;
|
||||||
|
Function ReadCharacterUnitFirstLineIndent();override;
|
||||||
|
Function ReadBorders(index);override;
|
||||||
|
Function WriteBaseLineAlignment(value);override;
|
||||||
|
Function ReadBaseLineAlignment();override;
|
||||||
|
Function WriteAutoAdjustRightIndent(value);override;
|
||||||
|
Function ReadAutoAdjustRightIndent();override;
|
||||||
|
Function WriteAlignment(value);override;
|
||||||
|
Function ReadAlignment();override;
|
||||||
|
Function WriteAddSpaceBetweenFarEastAndDigit(value);override;
|
||||||
|
Function ReadAddSpaceBetweenFarEastAndDigit();override;
|
||||||
|
Function WriteAddSpaceBetweenFarEastAndAlpha(value);override;
|
||||||
|
Function ReadAddSpaceBetweenFarEastAndAlpha();override;
|
||||||
|
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
// ============== 实现 ================= //
|
||||||
|
Function TSDocxParagraphFormatRange.Init(docx, rangeObj);
|
||||||
|
Begin
|
||||||
|
class(TSDocxParagraphFormat).Init(docx, nil);
|
||||||
|
paragraph_arr_ := sselect distinct(["tparagraph"]) from rangeObj.Data end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.Apply();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).Apply), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.ReWrite(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).ReWrite), value);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.CallFunction(pf, value);overload;
|
||||||
|
Begin
|
||||||
|
for i:=0 to length(paragraph_arr_)-1 do
|
||||||
|
begin
|
||||||
|
pr_ := paragraph_arr_[i].pPr;
|
||||||
|
if not ifObj(pr_.Root()) then continue;
|
||||||
|
##pf(value);
|
||||||
|
end
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.CallFunction(pf);overload;
|
||||||
|
Begin
|
||||||
|
ret := nil;
|
||||||
|
for i:=0 to length(paragraph_arr_)-1 do
|
||||||
|
begin
|
||||||
|
pr_ := paragraph_arr_[i].pPr;
|
||||||
|
if not ifObj(pr_.Root()) then continue;
|
||||||
|
cur := ##pf();
|
||||||
|
if ifnil(ret) then ret := cur;
|
||||||
|
if ret <> cur then return TSDocxEnumerations.wdUndefined();
|
||||||
|
end
|
||||||
|
return ret;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// Methods
|
||||||
|
Function TSDocxParagraphFormatRange.CloseUp();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).CloseUp), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.IndentCharWidth(Count);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).IndentCharWidth), Count);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.IndentFirstLineCharWidth(Count);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).IndentFirstLineCharWidth), Count);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.OpenOrCloseUp();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).OpenOrCloseUp), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.OpenUp();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).OpenOrCloseUp), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.Reset();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).Reset), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.Space1();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).Space1), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.Space15();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).Space15), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.Space2();override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).Space2), nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.TabHangingIndent(Count);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).TabHangingIndent), Count);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.TabIndent(Count);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).TabIndent), Count);
|
||||||
|
End;
|
||||||
|
|
||||||
|
// property
|
||||||
|
Function TSDocxParagraphFormatRange.WriteWordWrap(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteWordWrap), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadWordWrap();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadWordWrap));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteWidowControl(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteWidowControl), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadWidowControl();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadWidowControl));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteTextboxTightWrap(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteTextboxTightWrap), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadTextboxTightWrap();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadTextboxTightWrap));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteTabStops(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteTabStops), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadTabStops();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadTabStops));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteStyle(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteStyle), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadStyle();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadStyle));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteSpaceBeforeAuto(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteSpaceBeforeAuto), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadSpaceBeforeAuto();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadSpaceBeforeAuto));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteSpaceBefore(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteSpaceBefore), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadSpaceBefore();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadSpaceBefore));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteSpaceAfterAuto(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteSpaceAfterAuto), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadSpaceAfterAuto();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadSpaceAfterAuto));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteSpaceAfter(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteSpaceAfter), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadSpaceAfter();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadSpaceAfter));
|
||||||
|
End;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
Function TSDocxParagraphFormatRange.ReadShading();override;
|
||||||
|
Begin
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteRightIndent(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteRightIndent), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadRightIndent();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadRightIndent));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteReadingOrder(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteReadingOrder), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadReadingOrder();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadReadingOrder));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WritePageBreakBefore(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WritePageBreakBefore), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadPageBreakBefore();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadPageBreakBefore));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteOutlineLevel(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteOutlineLevel), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadOutlineLevel();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadOutlineLevel));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteNoLineNumber(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteNoLineNumber), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadNoLineNumber();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadNoLineNumber));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteMirrorIndents(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteMirrorIndents), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadMirrorIndents();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadMirrorIndents));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteLineUnitBefore(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteLineUnitBefore), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadLineUnitBefore();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadLineUnitBefore));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteLineUnitAfter(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteLineUnitAfter), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadLineUnitAfter();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadLineUnitAfter));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteLineSpacingRule(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteLineSpacingRule), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadLineSpacingRule();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadLineSpacingRule));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteLineSpacing(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteLineSpacing), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadLineSpacing();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadLineSpacing));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteLeftIndent(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteLeftIndent), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadLeftIndent();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadLeftIndent));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteKeepWithNext(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteKeepWithNext), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadKeepWithNext();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadKeepWithNext));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteKeepTogether(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteKeepTogether), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadKeepTogether();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadKeepTogether));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteHyphenation(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteHyphenation), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadHyphenation();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadHyphenation));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteHangingPunctuation(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteHangingPunctuation), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadHangingPunctuation();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadHangingPunctuation));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteHalfWidthPunctuationOnTopOfLine(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteHalfWidthPunctuationOnTopOfLine), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadHalfWidthPunctuationOnTopOfLine();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadHalfWidthPunctuationOnTopOfLine));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteFirstLineIndent(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteFirstLineIndent), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadFirstLineIndent();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadFirstLineIndent));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteFarEastLineBreakControl(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteFarEastLineBreakControl), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadFarEastLineBreakControl();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadFarEastLineBreakControl));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.ReadDuplicate();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadDuplicate));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteDisableLineHeightGrid(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteDisableLineHeightGrid), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadDisableLineHeightGrid();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadDisableLineHeightGrid));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteCollapsedByDefault(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteCollapsedByDefault), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadCollapsedByDefault();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadCollapsedByDefault));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteCharacterUnitRightIndent(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteCharacterUnitRightIndent), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadCharacterUnitRightIndent();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadCharacterUnitRightIndent));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteCharacterUnitLeftIndent(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteCharacterUnitLeftIndent), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadCharacterUnitLeftIndent();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadCharacterUnitLeftIndent));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteCharacterUnitFirstLineIndent(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteCharacterUnitFirstLineIndent), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadCharacterUnitFirstLineIndent();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadCharacterUnitFirstLineIndent));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.ReadBorders(index);override;
|
||||||
|
Begin
|
||||||
|
// 重组一个新的range_arr_
|
||||||
|
arr := array();
|
||||||
|
for i:=0 to length(paragraph_arr_)-1 do
|
||||||
|
arr[i]["entirety"] := paragraph_arr_[i].Root();
|
||||||
|
borders_obj := new TSDocxBordersRange(self.Application, self.Creator, self.Parent);
|
||||||
|
borders_obj.Init(arr);
|
||||||
|
return ifnil(index) ? borders_obj : borders_obj.Item(index);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteBaseLineAlignment(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteBaseLineAlignment), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadBaseLineAlignment();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadBaseLineAlignment));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteAutoAdjustRightIndent(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteAutoAdjustRightIndent), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadAutoAdjustRightIndent();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadAutoAdjustRightIndent));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteAlignment(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteAlignment), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadAlignment();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadAlignment));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteAddSpaceBetweenFarEastAndDigit(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteAddSpaceBetweenFarEastAndDigit), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadAddSpaceBetweenFarEastAndDigit();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadAddSpaceBetweenFarEastAndDigit));
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxParagraphFormatRange.WriteAddSpaceBetweenFarEastAndAlpha(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction(ThisFunction(class(TSDocxParagraphFormat).WriteAddSpaceBetweenFarEastAndAlpha), value);
|
||||||
|
End;
|
||||||
|
Function TSDocxParagraphFormatRange.ReadAddSpaceBetweenFarEastAndAlpha();override;
|
||||||
|
Begin
|
||||||
|
return CallFunction(ThisFunction(class(TSDocxParagraphFormatRange).ReadAddSpaceBetweenFarEastAndAlpha));
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
@ -0,0 +1,305 @@
|
||||||
|
Type TSDocxShading = Class(TSVbaBase)
|
||||||
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
|
public
|
||||||
|
Function Init(shading);
|
||||||
|
Function Apply();virtual;
|
||||||
|
|
||||||
|
private
|
||||||
|
shading_; // TOfficeObj("TwShading")
|
||||||
|
color_index_;
|
||||||
|
color_;
|
||||||
|
|
||||||
|
public
|
||||||
|
property BackgroundPatternColor read ReadBackgroundPatternColor write WriteBackgroundPatternColor;
|
||||||
|
property BackgroundPatternColorIndex read ReadBackgroundPatternColorIndex write WriteBackgroundPatternColorIndex;
|
||||||
|
property ForegroundPatternColor read ReadForegroundPatternColor write WriteForegroundPatternColor;
|
||||||
|
property ForegroundPatternColorIndex read ReadForegroundPatternColorIndex write WriteForegroundPatternColorIndex;
|
||||||
|
property Texture read ReadTexture write WriteTexture;
|
||||||
|
Function WriteTexture(value);virtual;
|
||||||
|
Function ReadTexture();virtual;
|
||||||
|
Function WriteForegroundPatternColorIndex(value);virtual;
|
||||||
|
Function ReadForegroundPatternColorIndex();virtual;
|
||||||
|
Function WriteForegroundPatternColor(value);virtual;
|
||||||
|
Function ReadForegroundPatternColor();virtual;
|
||||||
|
Function WriteBackgroundPatternColorIndex(value);virtual;
|
||||||
|
Function ReadBackgroundPatternColorIndex();virtual;
|
||||||
|
Function WriteBackgroundPatternColor(value);virtual;
|
||||||
|
Function ReadBackgroundPatternColor();virtual;
|
||||||
|
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
// ============== 实现 ================= //
|
||||||
|
Function TSDocxShading.Init(shading);
|
||||||
|
Begin
|
||||||
|
shading_ := shading;
|
||||||
|
color_index_ := TSWdColorIndex();
|
||||||
|
color_ := TSWdColor();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShading.Apply();virtual;
|
||||||
|
Begin
|
||||||
|
shading_.Update();
|
||||||
|
End;
|
||||||
|
|
||||||
|
// property
|
||||||
|
Function TSDocxShading.WriteTexture(value);
|
||||||
|
Begin
|
||||||
|
case value of
|
||||||
|
TSDocxEnumerations.wdTexture10Percent():
|
||||||
|
shading_.Val := "pct10";
|
||||||
|
TSDocxEnumerations.wdTexture12Pt5Percent():
|
||||||
|
shading_.Val := "pct12";
|
||||||
|
TSDocxEnumerations.wdTexture15Percent():
|
||||||
|
shading_.Val := "pct15";
|
||||||
|
TSDocxEnumerations.wdTexture17Pt5Percent():
|
||||||
|
shading_.Val := "pct17";
|
||||||
|
TSDocxEnumerations.wdTexture20Percent():
|
||||||
|
shading_.Val := "pct20";
|
||||||
|
TSDocxEnumerations.wdTexture22Pt5Percent():
|
||||||
|
shading_.Val := "pct22";
|
||||||
|
TSDocxEnumerations.wdTexture25Percent():
|
||||||
|
shading_.Val := "pct25";
|
||||||
|
TSDocxEnumerations.wdTexture27Pt5Percent():
|
||||||
|
shading_.Val := "clear";
|
||||||
|
TSDocxEnumerations.wdTexture2Pt5Percent():
|
||||||
|
shading_.Val := "clear";
|
||||||
|
TSDocxEnumerations.wdTexture30Percent():
|
||||||
|
shading_.Val := "pct30";
|
||||||
|
TSDocxEnumerations.wdTexture32Pt5Percent():
|
||||||
|
shading_.Val := "pct32";
|
||||||
|
TSDocxEnumerations.wdTexture35Percent():
|
||||||
|
shading_.Val := "pct35";
|
||||||
|
TSDocxEnumerations.wdTexture37Pt5Percent():
|
||||||
|
shading_.Val := "pct37";
|
||||||
|
TSDocxEnumerations.wdTexture40Percent():
|
||||||
|
shading_.Val := "pct40";
|
||||||
|
TSDocxEnumerations.wdTexture42Pt5Percent():
|
||||||
|
shading_.Val := "pct42";
|
||||||
|
TSDocxEnumerations.wdTexture45Percent():
|
||||||
|
shading_.Val := "pct45";
|
||||||
|
TSDocxEnumerations.wdTexture47Pt5Percent():
|
||||||
|
shading_.Val := "pct47";
|
||||||
|
TSDocxEnumerations.wdTexture50Percent():
|
||||||
|
shading_.Val := "pct50";
|
||||||
|
TSDocxEnumerations.wdTexture52Pt5Percent():
|
||||||
|
shading_.Val := "pct52";
|
||||||
|
TSDocxEnumerations.wdTexture55Percent():
|
||||||
|
shading_.Val := "pct55";
|
||||||
|
TSDocxEnumerations.wdTexture57Pt5Percent():
|
||||||
|
shading_.Val := "clear";
|
||||||
|
TSDocxEnumerations.wdTexture5Percent():
|
||||||
|
shading_.Val := "pct5";
|
||||||
|
TSDocxEnumerations.wdTexture60Percent():
|
||||||
|
shading_.Val := "pct60";
|
||||||
|
TSDocxEnumerations.wdTexture62Pt5Percent():
|
||||||
|
shading_.Val := "pct62";
|
||||||
|
TSDocxEnumerations.wdTexture65Percent():
|
||||||
|
shading_.Val := "pct65";
|
||||||
|
TSDocxEnumerations.wdTexture67Pt5Percent():
|
||||||
|
shading_.Val := "pct67";
|
||||||
|
TSDocxEnumerations.wdTexture70Percent():
|
||||||
|
shading_.Val := "pct70";
|
||||||
|
TSDocxEnumerations.wdTexture72Pt5Percent():
|
||||||
|
shading_.Val := "pct72";
|
||||||
|
TSDocxEnumerations.wdTexture75Percent():
|
||||||
|
shading_.Val := "pct75";
|
||||||
|
TSDocxEnumerations.wdTexture77Pt5Percent():
|
||||||
|
shading_.Val := "pct77";
|
||||||
|
TSDocxEnumerations.wdTexture7Pt5Percent():
|
||||||
|
shading_.Val := "clear";
|
||||||
|
TSDocxEnumerations.wdTexture80Percent():
|
||||||
|
shading_.Val := "pct80";
|
||||||
|
TSDocxEnumerations.wdTexture82Pt5Percent():
|
||||||
|
shading_.Val := "pct82";
|
||||||
|
TSDocxEnumerations.wdTexture85Percent():
|
||||||
|
shading_.Val := "pct85";
|
||||||
|
TSDocxEnumerations.wdTexture87Pt5Percent():
|
||||||
|
shading_.Val := "pct87";
|
||||||
|
TSDocxEnumerations.wdTexture90Percent():
|
||||||
|
shading_.Val := "pct90";
|
||||||
|
TSDocxEnumerations.wdTexture92Pt5Percent():
|
||||||
|
shading_.Val := "pct92";
|
||||||
|
TSDocxEnumerations.wdTexture95Percent():
|
||||||
|
shading_.Val := "pct95";
|
||||||
|
TSDocxEnumerations.wdTexture97Pt5Percent():
|
||||||
|
shading_.Val := "pct97";
|
||||||
|
TSDocxEnumerations.wdTextureCross():
|
||||||
|
shading_.Val := "thinHorzCross";
|
||||||
|
TSDocxEnumerations.wdTextureDarkCross():
|
||||||
|
shading_.Val := "HorzCross";
|
||||||
|
TSDocxEnumerations.wdTextureDarkDiagonalCross():
|
||||||
|
shading_.Val := "diagCross";
|
||||||
|
TSDocxEnumerations.wdTextureDarkDiagonalDown():
|
||||||
|
shading_.Val := "reverseDiagStripe";
|
||||||
|
TSDocxEnumerations.wdTextureDarkDiagonalUp():
|
||||||
|
shading_.Val := "diagStripe";
|
||||||
|
TSDocxEnumerations.wdTextureDarkHorizontal():
|
||||||
|
shading_.Val := "horzStripe";
|
||||||
|
TSDocxEnumerations.wdTextureDarkVertical():
|
||||||
|
shading_.Val := "vertStripe";
|
||||||
|
TSDocxEnumerations.wdTextureDiagonalCross():
|
||||||
|
shading_.Val := "thinDiagCross";
|
||||||
|
TSDocxEnumerations.wdTextureDiagonalDown():
|
||||||
|
shading_.Val := "thinReverseDiagStripe";
|
||||||
|
TSDocxEnumerations.wdTextureDiagonalUp():
|
||||||
|
shading_.Val := "thinDiagStripe";
|
||||||
|
TSDocxEnumerations.wdTextureHorizontal():
|
||||||
|
shading_.Val := "thinHorzStripe";
|
||||||
|
TSDocxEnumerations.wdTextureNone():
|
||||||
|
shading_.Val := "none";
|
||||||
|
TSDocxEnumerations.wdTextureSolid():
|
||||||
|
shading_.Val := "solid";
|
||||||
|
TSDocxEnumerations.wdTextureVertical():
|
||||||
|
shading_.Val := "thinVertStripe";
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
Function TSDocxShading.ReadTexture();
|
||||||
|
Begin
|
||||||
|
value := shading_.Value("Val");
|
||||||
|
case value of
|
||||||
|
"pct10":
|
||||||
|
return TSDocxEnumerations.wdTexture10Percent();
|
||||||
|
"pct12":
|
||||||
|
return TSDocxEnumerations.wdTexture12Pt5Percent();
|
||||||
|
"pct15":
|
||||||
|
return TSDocxEnumerations.wdTexture15Percent();
|
||||||
|
"pct17":
|
||||||
|
return TSDocxEnumerations.wdTexture17Pt5Percent();
|
||||||
|
"pct20":
|
||||||
|
return TSDocxEnumerations.wdTexture20Percent();
|
||||||
|
"pct22":
|
||||||
|
return TSDocxEnumerations.wdTexture22Pt5Percent();
|
||||||
|
"pct25":
|
||||||
|
return TSDocxEnumerations.wdTexture25Percent();
|
||||||
|
"clear":
|
||||||
|
return TSDocxEnumerations.wdTexture27Pt5Percent();
|
||||||
|
"clear":
|
||||||
|
return TSDocxEnumerations.wdTexture2Pt5Percent();
|
||||||
|
"pct30":
|
||||||
|
return TSDocxEnumerations.wdTexture30Percent();
|
||||||
|
"pct32":
|
||||||
|
return TSDocxEnumerations.wdTexture32Pt5Percent();
|
||||||
|
"pct35":
|
||||||
|
return TSDocxEnumerations.wdTexture35Percent();
|
||||||
|
"pct37":
|
||||||
|
return TSDocxEnumerations.wdTexture37Pt5Percent();
|
||||||
|
"pct40":
|
||||||
|
return TSDocxEnumerations.wdTexture40Percent();
|
||||||
|
"pct42":
|
||||||
|
return TSDocxEnumerations.wdTexture42Pt5Percent();
|
||||||
|
"pct45":
|
||||||
|
return TSDocxEnumerations.wdTexture45Percent();
|
||||||
|
"pct47":
|
||||||
|
return TSDocxEnumerations.wdTexture47Pt5Percent();
|
||||||
|
"pct50":
|
||||||
|
return TSDocxEnumerations.wdTexture50Percent();
|
||||||
|
"pct52":
|
||||||
|
return TSDocxEnumerations.wdTexture52Pt5Percent();
|
||||||
|
"pct55":
|
||||||
|
return TSDocxEnumerations.wdTexture55Percent();
|
||||||
|
"clear":
|
||||||
|
return TSDocxEnumerations.wdTexture57Pt5Percent();
|
||||||
|
"pct5":
|
||||||
|
return TSDocxEnumerations.wdTexture5Percent();
|
||||||
|
"pct60":
|
||||||
|
return TSDocxEnumerations.wdTexture60Percent();
|
||||||
|
"pct62":
|
||||||
|
return TSDocxEnumerations.wdTexture62Pt5Percent();
|
||||||
|
"pct65":
|
||||||
|
return TSDocxEnumerations.wdTexture65Percent();
|
||||||
|
"pct67":
|
||||||
|
return TSDocxEnumerations.wdTexture67Pt5Percent();
|
||||||
|
"pct70":
|
||||||
|
return TSDocxEnumerations.wdTexture70Percent();
|
||||||
|
"pct72":
|
||||||
|
return TSDocxEnumerations.wdTexture72Pt5Percent();
|
||||||
|
"pct75":
|
||||||
|
return TSDocxEnumerations.wdTexture75Percent();
|
||||||
|
"pct77":
|
||||||
|
return TSDocxEnumerations.wdTexture77Pt5Percent();
|
||||||
|
"clear":
|
||||||
|
return TSDocxEnumerations.wdTexture7Pt5Percent();
|
||||||
|
"pct80":
|
||||||
|
return TSDocxEnumerations.wdTexture80Percent();
|
||||||
|
"pct82":
|
||||||
|
return TSDocxEnumerations.wdTexture82Pt5Percent();
|
||||||
|
"pct85":
|
||||||
|
return TSDocxEnumerations.wdTexture85Percent();
|
||||||
|
"pct87":
|
||||||
|
return TSDocxEnumerations.wdTexture87Pt5Percent();
|
||||||
|
"pct90":
|
||||||
|
return TSDocxEnumerations.wdTexture90Percent();
|
||||||
|
"pct92":
|
||||||
|
return TSDocxEnumerations.wdTexture92Pt5Percent();
|
||||||
|
"pct95":
|
||||||
|
return TSDocxEnumerations.wdTexture95Percent();
|
||||||
|
"pct97":
|
||||||
|
return TSDocxEnumerations.wdTexture97Pt5Percent();
|
||||||
|
"thinHorzCross":
|
||||||
|
return TSDocxEnumerations.wdTextureCross();
|
||||||
|
"HorzCross":
|
||||||
|
return TSDocxEnumerations.wdTextureDarkCross();
|
||||||
|
"diagCross":
|
||||||
|
return TSDocxEnumerations.wdTextureDarkDiagonalCross();
|
||||||
|
"reverseDiagStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureDarkDiagonalDown();
|
||||||
|
"diagStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureDarkDiagonalUp();
|
||||||
|
"horzStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureDarkHorizontal();
|
||||||
|
"vertStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureDarkVertical();
|
||||||
|
"thinDiagCross":
|
||||||
|
return TSDocxEnumerations.wdTextureDiagonalCross();
|
||||||
|
"thinReverseDiagStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureDiagonalDown();
|
||||||
|
"thinDiagStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureDiagonalUp();
|
||||||
|
"thinHorzStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureHorizontal();
|
||||||
|
"none":
|
||||||
|
return TSDocxEnumerations.wdTextureNone();
|
||||||
|
"solid":
|
||||||
|
return TSDocxEnumerations.wdTextureSolid();
|
||||||
|
"thinVertStripe":
|
||||||
|
return TSDocxEnumerations.wdTextureVertical();
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShading.WriteForegroundPatternColorIndex(value);
|
||||||
|
Begin
|
||||||
|
shading_.Color := color_index_[value];
|
||||||
|
End;
|
||||||
|
Function TSDocxShading.ReadForegroundPatternColorIndex();
|
||||||
|
Begin
|
||||||
|
return color_index_[shading_.Value("Color")];
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShading.WriteForegroundPatternColor(value);
|
||||||
|
Begin
|
||||||
|
shading_.Color := color_[value];
|
||||||
|
End;
|
||||||
|
Function TSDocxShading.ReadForegroundPatternColor();
|
||||||
|
Begin
|
||||||
|
return color_[shading_.Value("Color")];
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShading.WriteBackgroundPatternColorIndex(value);
|
||||||
|
Begin
|
||||||
|
shading_.Fill := color_index_[value];
|
||||||
|
End;
|
||||||
|
Function TSDocxShading.ReadBackgroundPatternColorIndex();
|
||||||
|
Begin
|
||||||
|
return color_index_[shading_.Value("Fill")];
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShading.WriteBackgroundPatternColor(value);
|
||||||
|
Begin
|
||||||
|
shading_.Fill := color_[value];
|
||||||
|
End;
|
||||||
|
Function TSDocxShading.ReadBackgroundPatternColor();
|
||||||
|
Begin
|
||||||
|
return color_[shading_.Value("Fill")];
|
||||||
|
End;
|
||||||
|
|
@ -0,0 +1,169 @@
|
||||||
|
Type TSDocxShadingRange = Class(TSDocxShading)
|
||||||
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
|
public
|
||||||
|
Function Init(rangeObj);
|
||||||
|
|
||||||
|
private
|
||||||
|
Function GetShadingObjectByNode(node);
|
||||||
|
Function GetShading(arr, hash);
|
||||||
|
Function CallFunction(fname, value);overload;
|
||||||
|
Function CallFunction(fname);overload;
|
||||||
|
Function SplitRun();
|
||||||
|
|
||||||
|
private
|
||||||
|
range_obj_;
|
||||||
|
|
||||||
|
public
|
||||||
|
Function WriteTexture(value);override;
|
||||||
|
Function ReadTexture();override;
|
||||||
|
Function WriteForegroundPatternColorIndex(value);override;
|
||||||
|
Function ReadForegroundPatternColorIndex();override;
|
||||||
|
Function WriteForegroundPatternColor(value);override;
|
||||||
|
Function ReadForegroundPatternColor();override;
|
||||||
|
Function WriteBackgroundPatternColorIndex(value);override;
|
||||||
|
Function ReadBackgroundPatternColorIndex();override;
|
||||||
|
Function WriteBackgroundPatternColor(value);override;
|
||||||
|
Function ReadBackgroundPatternColor();override;
|
||||||
|
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
// ============== 实现 ================= //
|
||||||
|
Function TSDocxShadingRange.Init(rangeObj);
|
||||||
|
Begin
|
||||||
|
range_obj_ := rangeObj;
|
||||||
|
class(TSDocxShading).Init(nil);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.SplitRun();
|
||||||
|
Begin
|
||||||
|
range_obj_.SplitRangeRun();
|
||||||
|
self.Parent.SetRangeObj(range_obj_);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.GetShading(arr, hash);
|
||||||
|
Begin
|
||||||
|
if arr["entirety"] then
|
||||||
|
begin
|
||||||
|
if not ifnil(hash[arr["entirety"]]) then nil;
|
||||||
|
hash[arr["entirety"]] := true;
|
||||||
|
shading := GetShadingObjectByNode(arr["entirety"]);
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
trun := arr["trun"];
|
||||||
|
if not ifObj(trun.Root()) then return nil;
|
||||||
|
shading := new TSDocxShading(self.Application, self.Creator, self.Parent);
|
||||||
|
shading.Init(trun.rPr.Shading);
|
||||||
|
end
|
||||||
|
return shading;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.GetShadingObjectByNode(node);
|
||||||
|
Begin
|
||||||
|
name := node.GetName();
|
||||||
|
if name = "w:p" then
|
||||||
|
begin
|
||||||
|
obj := TOfficeObj("TParagraph");
|
||||||
|
obj.Init(node);
|
||||||
|
paragraph_obj := new TSDocxParagraph(self.Application, self.Creator, self.Parent);
|
||||||
|
paragraph_obj.Init(nil, obj, nil);
|
||||||
|
return paragraph_obj.Shading();
|
||||||
|
end
|
||||||
|
else if name = "w:tbl" then
|
||||||
|
begin
|
||||||
|
obj := TOfficeObj("TTable");
|
||||||
|
obj.Init(node);
|
||||||
|
table_obj := new TSDocxTable(self.Application, self.Creator, self.Parent);
|
||||||
|
table_obj.Init(nil, obj);
|
||||||
|
return table_obj.Shading();
|
||||||
|
end
|
||||||
|
else if name = "w:tc" then
|
||||||
|
begin
|
||||||
|
cell_obj := new TSDocxCell(self.Application, self.Creator, self.Parent);
|
||||||
|
cell_obj.Init(node);
|
||||||
|
return cell_obj.Shading();
|
||||||
|
end
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.CallFunction(fname, value);overload;
|
||||||
|
Begin
|
||||||
|
// 这样设计是为了段落走走段落的shading,table走table的,cell走cell的
|
||||||
|
SplitRun();
|
||||||
|
hash := array();
|
||||||
|
range_arr := rangeObj.GetInfo();
|
||||||
|
for i:=0 to length(range_arr)-1 do
|
||||||
|
begin
|
||||||
|
shading := GetShading(range_arr[i], hash);
|
||||||
|
if ifnil(shading) then continue;
|
||||||
|
pf := FindFunction(fname, shading);
|
||||||
|
pf.Do(value);
|
||||||
|
end
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.CallFunction(fname);overload;
|
||||||
|
Begin
|
||||||
|
hash := array();
|
||||||
|
ret := nil;
|
||||||
|
range_arr := rangeObj.GetInfo();
|
||||||
|
for i:=0 to length(range_arr)-1 do
|
||||||
|
begin
|
||||||
|
shading := GetShading(range_arr[i], hash);
|
||||||
|
if ifnil(shading) then continue;
|
||||||
|
pf := FindFunction(fname, shading);
|
||||||
|
r := pf.Do();
|
||||||
|
if ifnil(ret) then ret := r;
|
||||||
|
if ret <> r then return TSDocxEnumerations.WdUnderline();
|
||||||
|
end
|
||||||
|
return ret;
|
||||||
|
End;
|
||||||
|
|
||||||
|
// property
|
||||||
|
Function TSDocxShadingRange.WriteTexture(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction("WriteTexture", value);
|
||||||
|
End;
|
||||||
|
Function TSDocxShadingRange.ReadTexture();override;
|
||||||
|
Begin
|
||||||
|
CallFunction("ReadTexture");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.WriteForegroundPatternColorIndex(value);override;
|
||||||
|
Begin
|
||||||
|
CallFunction("WriteForegroundPatternColorIndex", value);
|
||||||
|
End;
|
||||||
|
Function TSDocxShadingRange.ReadForegroundPatternColorIndex();override;
|
||||||
|
Begin
|
||||||
|
CallFunction("ReadForegroundPatternColorIndex");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.WriteForegroundPatternColor(value);override;
|
||||||
|
Begin
|
||||||
|
|
||||||
|
CallFunction("WriteForegroundPatternColor", value);
|
||||||
|
End;
|
||||||
|
Function TSDocxShadingRange.ReadForegroundPatternColor();override;
|
||||||
|
Begin
|
||||||
|
CallFunction("ReadForegroundPatternColor");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.WriteBackgroundPatternColorIndex(value);override;
|
||||||
|
Begin
|
||||||
|
|
||||||
|
CallFunction("WriteBackgroundPatternColorIndex", value);
|
||||||
|
End;
|
||||||
|
Function TSDocxShadingRange.ReadBackgroundPatternColorIndex();override;
|
||||||
|
Begin
|
||||||
|
CallFunction("ReadBackgroundPatternColorIndex");
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSDocxShadingRange.WriteBackgroundPatternColor(value);override;
|
||||||
|
Begin
|
||||||
|
|
||||||
|
CallFunction("WriteBackgroundPatternColor", value);
|
||||||
|
End;
|
||||||
|
Function TSDocxShadingRange.ReadBackgroundPatternColor();override;
|
||||||
|
Begin
|
||||||
|
CallFunction("ReadBackgroundPatternColor");
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
@ -10,17 +10,17 @@ Type TSWdCommon = Class
|
||||||
if pTotal + len > pStart then
|
if pTotal + len > pStart then
|
||||||
begin
|
begin
|
||||||
length := length(arr);
|
length := length(arr);
|
||||||
|
arr[length]["tparagraph"] := tparagraph;
|
||||||
|
arr[length]["trun"] := run_obj;
|
||||||
|
arr[length]["text"] := text;
|
||||||
|
arr[length]["root"] := rootNode;
|
||||||
|
arr[length]["parent"] := parentNode;
|
||||||
// 左边切割
|
// 左边切割
|
||||||
if pTotal < pstart and pTotal + len > pStart + 1 then
|
if pTotal < pstart and pTotal + len > pStart + 1 then
|
||||||
arr[length]["lsplit"] := pStart - pTotal; // 左边丢弃的字符数
|
arr[length]["lsplit"] := pStart - pTotal; // 左边丢弃的字符数
|
||||||
// 右边切割
|
// 右边切割
|
||||||
if pTotal + len > pEnd then
|
if pTotal + len > pEnd then
|
||||||
arr[length]["rsplit"] := pTotal + len - pEnd; // 右边丢弃的字符数
|
arr[length]["rsplit"] := pTotal + len - pEnd; // 右边丢弃的字符数
|
||||||
arr[length]["tparagraph"] := tparagraph;
|
|
||||||
arr[length]["trun"] := run_obj;
|
|
||||||
arr[length]["text"] := text;
|
|
||||||
arr[length]["root"] := rootNode;
|
|
||||||
arr[length]["parent"] := parentNode;
|
|
||||||
end
|
end
|
||||||
return len;
|
return len;
|
||||||
End;
|
End;
|
||||||
|
|
@ -37,7 +37,7 @@ Type TSWdCommon = Class
|
||||||
paragraph_obj.Init(node);
|
paragraph_obj.Init(node);
|
||||||
if paragraph_obj.Empty() then
|
if paragraph_obj.Empty() then
|
||||||
begin
|
begin
|
||||||
class(TSWdCommon).AddRun(root, startNode, nil, paragraph_obj, pStart, pEnd, pTotal, arr);
|
AddRun(root, startNode, nil, paragraph_obj, pStart, pEnd, pTotal, arr);
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
paragraph_len := length(arr); // 标记段落完整的起始位置
|
paragraph_len := length(arr); // 标记段落完整的起始位置
|
||||||
|
|
@ -47,7 +47,7 @@ Type TSWdCommon = Class
|
||||||
case sub_node.GetName() of
|
case sub_node.GetName() of
|
||||||
"w:r":
|
"w:r":
|
||||||
begin
|
begin
|
||||||
pTotal += class(TSWdCommon).AddRun(root, startNode, sub_node, paragraph_obj, pStart, pEnd, pTotal, arr);
|
pTotal += AddRun(root, startNode, sub_node, paragraph_obj, pStart, pEnd, pTotal, arr);
|
||||||
if pTotal >= pEnd then return 1;
|
if pTotal >= pEnd then return 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -56,7 +56,7 @@ Type TSWdCommon = Class
|
||||||
run_node := sub_node.FirstChildElement("w:r");
|
run_node := sub_node.FirstChildElement("w:r");
|
||||||
while ifObj(run_node) do
|
while ifObj(run_node) do
|
||||||
begin
|
begin
|
||||||
class(TSWdCommon).AddRun(paragraph_obj, root, run_node, pStart, pEnd, pTotal, arr);
|
AddRun(paragraph_obj, root, run_node, pStart, pEnd, pTotal, arr);
|
||||||
run_node := run_node.NextElement("w:r");
|
run_node := run_node.NextElement("w:r");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -80,7 +80,7 @@ Type TSWdCommon = Class
|
||||||
while ifObj(tc) do
|
while ifObj(tc) do
|
||||||
begin
|
begin
|
||||||
cell_len := length(arr);
|
cell_len := length(arr);
|
||||||
flag := class(TSWdCommon).SplitRange(root, tc, pStart, pEnd, pTotal, arr);
|
flag := SplitRange(root, tc, pStart, pEnd, pTotal, arr);
|
||||||
if flag then return 1;
|
if flag then return 1;
|
||||||
tc := tc.NextElement("w:tc");
|
tc := tc.NextElement("w:tc");
|
||||||
if pTotal >= pEnd then return 1;
|
if pTotal >= pEnd then return 1;
|
||||||
|
|
@ -119,21 +119,21 @@ Type TSWdCommon = Class
|
||||||
paragraph_obj.Init(node);
|
paragraph_obj.Init(node);
|
||||||
if paragraph_obj.Empty() then
|
if paragraph_obj.Empty() then
|
||||||
begin
|
begin
|
||||||
class(TSWdCommon).AddRange(root, startNode, findNode, paragraph_obj, nil, arr);
|
AddRange(root, startNode, findNode, paragraph_obj, nil, arr);
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
sub_node := node.FirstChildElement();
|
sub_node := node.FirstChildElement();
|
||||||
while ifObj(sub_node) do
|
while ifObj(sub_node) do
|
||||||
begin
|
begin
|
||||||
case sub_node.GetName() of
|
case sub_node.GetName() of
|
||||||
"w:r": pend += class(TSWdCommon).AddRange(root, startNode, findNode, paragraph_obj, sub_node, arr);
|
"w:r": pend += AddRange(root, startNode, findNode, paragraph_obj, sub_node, arr);
|
||||||
|
|
||||||
"w:ins", "w:del":
|
"w:ins", "w:del":
|
||||||
begin
|
begin
|
||||||
run_node := sub_node.FirstChildElement("w:r");
|
run_node := sub_node.FirstChildElement("w:r");
|
||||||
while ifObj(run_node) do
|
while ifObj(run_node) do
|
||||||
begin
|
begin
|
||||||
pend += class(TSWdCommon).AddRange(root, findNode, paragraph_obj, run_node, arr);
|
pend += AddRange(root, findNode, paragraph_obj, run_node, arr);
|
||||||
run_node := run_node.NextElement("w:r");
|
run_node := run_node.NextElement("w:r");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -156,7 +156,7 @@ Type TSWdCommon = Class
|
||||||
arr := array();
|
arr := array();
|
||||||
end
|
end
|
||||||
case node.GetName() of
|
case node.GetName() of
|
||||||
"w:p": class(TSWdCommon).ParagraphRange(root, startNode, findNode, node, pend, arr);
|
"w:p": ParagraphRange(root, startNode, findNode, node, pend, arr);
|
||||||
"w:tbl":
|
"w:tbl":
|
||||||
begin
|
begin
|
||||||
tr := node.FirstChildElement("w:tr");
|
tr := node.FirstChildElement("w:tr");
|
||||||
|
|
@ -188,7 +188,7 @@ Type TSWdCommon = Class
|
||||||
Class Function SplitRangeRun(rangeArr);overload;
|
Class Function SplitRangeRun(rangeArr);overload;
|
||||||
Begin
|
Begin
|
||||||
for i:=0 to length(rangeArr)-1 do
|
for i:=0 to length(rangeArr)-1 do
|
||||||
rangeArr[i] := class(TSWdCommon).SplitSingleRangeRun(rangeArr[i]);
|
rangeArr[i] := SplitSingleRangeRun(rangeArr[i]);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Class Function SplitSingleRangeRun(arr);overload;
|
Class Function SplitSingleRangeRun(arr);overload;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,340 @@
|
||||||
|
Type TSWdRange = Class
|
||||||
|
|
||||||
|
public
|
||||||
|
Function Create(rootNode, startP, endP);overload;
|
||||||
|
Function Create(rootNode, targetNode);overload;
|
||||||
|
Function Init();
|
||||||
|
Function Run();
|
||||||
|
Function GetStart();
|
||||||
|
Function GetEnd();
|
||||||
|
Function SplitRun();overload;
|
||||||
|
Function SplitRun(arr);overload;
|
||||||
|
Function Clear();
|
||||||
|
Function Print();
|
||||||
|
|
||||||
|
public
|
||||||
|
Data; // 管理range结构的数组,字段如下
|
||||||
|
// lsplit: 左边丢弃的字符数
|
||||||
|
// rsplit: 右边丢弃的字符数
|
||||||
|
// tparagraph: TOfficeObj("TParagraph")对象
|
||||||
|
// trun: TOfficeObj("TRun")对象
|
||||||
|
// text: 文本内容
|
||||||
|
// root: 根节点
|
||||||
|
// parent: 父节点
|
||||||
|
// entirety: 是否是完整的段落/表格/单元格
|
||||||
|
|
||||||
|
private
|
||||||
|
Function FindRangeByPosition(startNode);
|
||||||
|
Function FindRangeByNode(startNode);
|
||||||
|
Function AddEntirety(len, node);
|
||||||
|
Function AddRunInfo(parentNode, runNode, tParagraph);
|
||||||
|
Function AddRunInfo2(parentNode, runNode, tParagraph);
|
||||||
|
Function ParagraphRange(node);
|
||||||
|
|
||||||
|
private
|
||||||
|
start_position_; // 开始位置
|
||||||
|
end_position_; // 结束位置, 开始与结束遵循左闭右开原则
|
||||||
|
cur_position_; // 当前位置
|
||||||
|
root_node_; // 根节点
|
||||||
|
target_node_; // 目标节点,使用paragraph.Range,table.Range, cell.Range时用
|
||||||
|
split_flag_; // 切割标志
|
||||||
|
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.Create(rootNode, startP, endP);overload;
|
||||||
|
Begin
|
||||||
|
root_node_ := rootNode;
|
||||||
|
start_position_ := startP;
|
||||||
|
end_position_ := endP;
|
||||||
|
targetNode := nil;
|
||||||
|
Init();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.Create(rootNode, targetNode);overload;
|
||||||
|
Begin
|
||||||
|
root_node_ := rootNode;
|
||||||
|
target_node_ := targetNode;
|
||||||
|
start_position_ := nil;
|
||||||
|
end_position_ := nil;
|
||||||
|
Init();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.Init();
|
||||||
|
Begin
|
||||||
|
cur_position_ := 0;
|
||||||
|
split_flag_ := false;
|
||||||
|
Data := array();
|
||||||
|
Run();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.Run();
|
||||||
|
Begin
|
||||||
|
if target_node_ then
|
||||||
|
FindRangeByNode(target_node_);
|
||||||
|
else
|
||||||
|
FindRangeByPosition(root_node_);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.Print();
|
||||||
|
Begin
|
||||||
|
println("print... {}", Data);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.GetStart();
|
||||||
|
Begin
|
||||||
|
if ifnil(start_position_) then return 0;
|
||||||
|
return start_position_;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.GetEnd();
|
||||||
|
Begin
|
||||||
|
if ifnil(end_position_) then return 0;
|
||||||
|
return end_position_;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.SplitRun();overload;
|
||||||
|
Begin
|
||||||
|
if split_flag_ then return;
|
||||||
|
for i:=0 to length(Data)-1 do
|
||||||
|
Data[i] := SplitRun(Data[i]);
|
||||||
|
split_flag_ := true;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.SplitRun(arr);overload;
|
||||||
|
Begin
|
||||||
|
insert_run := function(root, node);
|
||||||
|
begin
|
||||||
|
new_node := root.InsertAfterChild(node, "element", "w:r");
|
||||||
|
run := TOfficeObj("TRun");
|
||||||
|
run.Init(new_node);
|
||||||
|
return run;
|
||||||
|
end
|
||||||
|
if ifnil(arr["lsplit"]) and ifnil(arr["rsplit"]) then return arr;
|
||||||
|
paragraph := arr["tparagraph"];
|
||||||
|
run := arr["trun"];
|
||||||
|
text := arr["text"];
|
||||||
|
if arr["lsplit"] then // 分割左边
|
||||||
|
begin
|
||||||
|
lpos := arr["lsplit"];
|
||||||
|
run.SetText(text[:lpos]);
|
||||||
|
run := ##insert_run(paragraph.Root(), run.Root());
|
||||||
|
text := text[lpos + 1:];
|
||||||
|
run.SetText(text);
|
||||||
|
arr["text"] := text;
|
||||||
|
arr["lsplit"] := nil;
|
||||||
|
end
|
||||||
|
if arr["rsplit"] then // 分割右边的run
|
||||||
|
begin
|
||||||
|
rpos := length(text) - arr["rsplit"];
|
||||||
|
run.SetText(text[1:rpos]);
|
||||||
|
new_run := ##insert_run(paragraph.Root(), run.Root());
|
||||||
|
new_run.SetText(text[rpos+1:]);
|
||||||
|
arr["rsplit"] := nil;
|
||||||
|
arr["text"] := text[1:rpos];
|
||||||
|
end
|
||||||
|
arr["trun"] := run;
|
||||||
|
return arr;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.FindRangeByPosition(startNode);
|
||||||
|
Begin
|
||||||
|
node := startNode.FirstChildElement();
|
||||||
|
while ifObj(node) do
|
||||||
|
begin
|
||||||
|
len := length(Data); // 标记完整段落/表格的起始位置
|
||||||
|
case node.GetName() of
|
||||||
|
"w:p":
|
||||||
|
begin
|
||||||
|
paragraph_obj := TOfficeObj("TParagraph");
|
||||||
|
paragraph_obj.Init(node);
|
||||||
|
if paragraph_obj.Empty() then // 空段落
|
||||||
|
begin
|
||||||
|
AddRunInfo(startNode, nil, paragraph_obj);
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
sub_node := node.FirstChildElement();
|
||||||
|
while ifObj(sub_node) do
|
||||||
|
begin
|
||||||
|
case sub_node.GetName() of
|
||||||
|
"w:r":
|
||||||
|
begin
|
||||||
|
AddRunInfo(startNode, sub_node, paragraph_obj);
|
||||||
|
if cur_position_ >= end_position_ then return 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
"w:ins", "w:del":
|
||||||
|
begin
|
||||||
|
run_node := sub_node.FirstChildElement("w:r");
|
||||||
|
while ifObj(run_node) do
|
||||||
|
begin
|
||||||
|
AddRunInfo(startNode, run_node, paragraph_obj);
|
||||||
|
if cur_position_ >= end_position_ then return 1;
|
||||||
|
run_node := run_node.NextElement("w:r");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
sub_node := sub_node.NextElement();
|
||||||
|
end
|
||||||
|
// 完整段落
|
||||||
|
cur_position_ += 1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
"w:tbl":
|
||||||
|
begin
|
||||||
|
tr := node.FirstChildElement("w:tr");
|
||||||
|
while ifObj(tr) do
|
||||||
|
begin
|
||||||
|
tc := tr.FirstChildElement("w:tc");
|
||||||
|
while ifObj(tc) do
|
||||||
|
begin
|
||||||
|
cell_len := length(Data);
|
||||||
|
flag := FindRangeByPosition(tc);
|
||||||
|
if flag then return 1;
|
||||||
|
if cur_position_ >= end_position_ then return 1;
|
||||||
|
AddEntirety(cell_len, tc);
|
||||||
|
tc := tc.NextElement("w:tc");
|
||||||
|
end
|
||||||
|
cur_position_ += 1;
|
||||||
|
if cur_position_ >= end_position_ then return 1;
|
||||||
|
tr := tr.NextElement("w:tr");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
AddEntirety(len, node);
|
||||||
|
if cur_position_ >= end_position_ then return 1;
|
||||||
|
node := node.NextElement();
|
||||||
|
end
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.AddEntirety(len, node);
|
||||||
|
Begin
|
||||||
|
for i:=len to length(Data)-1 do
|
||||||
|
Data[i]["entirety"] := node;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.AddRunInfo(parentNode, runNode, tParagraph);
|
||||||
|
Begin
|
||||||
|
run_obj := TOfficeObj("TRun");
|
||||||
|
run_obj.Init(runNode);
|
||||||
|
text := ifObj(runNode) ? run_obj.Text() : "";
|
||||||
|
len := text ? length(text) : 1;
|
||||||
|
|
||||||
|
if cur_position_ + len > start_position_ then
|
||||||
|
begin
|
||||||
|
length := length(Data);
|
||||||
|
Data[length]["tparagraph"] := tparagraph;
|
||||||
|
Data[length]["trun"] := run_obj;
|
||||||
|
Data[length]["text"] := text;
|
||||||
|
Data[length]["root"] := root_node_;
|
||||||
|
Data[length]["parent"] := parentNode;
|
||||||
|
|
||||||
|
// 左边切割,左边丢弃的字符数
|
||||||
|
if cur_position_ < start_position_ and cur_position_ + len > start_position_ + 1 then
|
||||||
|
Data[length]["lsplit"] := start_position_ - cur_position_;
|
||||||
|
// 右边切割,右边丢弃的字符数
|
||||||
|
if cur_position_ + len > end_position_ then
|
||||||
|
Data[length]["rsplit"] := cur_position_ + len - end_position_;
|
||||||
|
end
|
||||||
|
cur_position_ += len;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.FindRangeByNode(startNode);
|
||||||
|
Begin
|
||||||
|
tc_pf := function(tc);
|
||||||
|
begin
|
||||||
|
node := tc.FirstChildElement();
|
||||||
|
while ifObj(node) do
|
||||||
|
begin
|
||||||
|
FindRangeByNode(node);
|
||||||
|
node := node.NextElement();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
case startNode.GetName() of
|
||||||
|
"w:p": ParagraphRange(startNode);
|
||||||
|
"w:tbl":
|
||||||
|
begin
|
||||||
|
tr := startNode.FirstChildElement("w:tr");
|
||||||
|
while ifObj(tr) do
|
||||||
|
begin
|
||||||
|
tc := tr.FirstChildElement("w:tc");
|
||||||
|
while ifObj(tc) do
|
||||||
|
begin
|
||||||
|
##tc_pf(tc);
|
||||||
|
tc := tc.NextElement("w:tc");
|
||||||
|
end
|
||||||
|
tr := tr.NextElement("w:tr");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
"w:tc":
|
||||||
|
begin
|
||||||
|
##tc_pf(startNode);
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.ParagraphRange(node);
|
||||||
|
Begin
|
||||||
|
paragraph_obj := TOfficeObj("TParagraph");
|
||||||
|
paragraph_obj.Init(node);
|
||||||
|
if paragraph_obj.Empty() then
|
||||||
|
begin
|
||||||
|
AddRunInfo2(nil, nil, paragraph_obj);
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
sub_node := node.FirstChildElement();
|
||||||
|
while ifObj(sub_node) do
|
||||||
|
begin
|
||||||
|
case sub_node.GetName() of
|
||||||
|
"w:r": AddRunInfo2(nil, sub_node, paragraph_obj);
|
||||||
|
|
||||||
|
"w:ins", "w:del":
|
||||||
|
begin
|
||||||
|
run_node := sub_node.FirstChildElement("w:r");
|
||||||
|
while ifObj(run_node) do
|
||||||
|
begin
|
||||||
|
AddRunInfo2(nil, run_obj, paragraph_obj);
|
||||||
|
run_node := run_node.NextElement("w:r");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
sub_node := sub_node.NextElement();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.AddRunInfo2(parentNode, runNode, tParagraph);
|
||||||
|
Begin
|
||||||
|
run_obj := TOfficeObj("TRun");
|
||||||
|
run_obj.Init(runNode);
|
||||||
|
|
||||||
|
length := length(Data);
|
||||||
|
Data[length]["tparagraph"] := tParagraph;
|
||||||
|
Data[length]["trun"] := run_obj;
|
||||||
|
Data[length]["root"] := root_node_;
|
||||||
|
Data[length]["parent"] := parentNode;
|
||||||
|
Data[length]["entirety"] := target_node_;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function TSWdRange.Clear();
|
||||||
|
Begin
|
||||||
|
SplitRun();
|
||||||
|
first := Data[0];
|
||||||
|
para := first["tparagraph"];
|
||||||
|
index := 0;
|
||||||
|
for i:=1 to length(Data)-1 do
|
||||||
|
begin
|
||||||
|
if Data[i]["tparagraph"] <> para then
|
||||||
|
begin
|
||||||
|
parent := Data[i]["parent"];
|
||||||
|
parent.DeleteChild(Data[i]["tparagraph"].Root());
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
p := Data[i]["tparagraph"];
|
||||||
|
r := Data[i]["trun"];
|
||||||
|
if ifObj(p.Root()) and ifObj(r.Root()) then p.Root().DeleteChild(r.Root());
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Data := array();
|
||||||
|
Data[0] := first;
|
||||||
|
End;
|
||||||
|
|
@ -17,19 +17,25 @@ Begin
|
||||||
println("ActiveDocument.Name = {}", application.ActiveDocument.Name);
|
println("ActiveDocument.Name = {}", application.ActiveDocument.Name);
|
||||||
println("ActiveDocument.Tables.Count = {}", application.ActiveDocument.Tables.Count);
|
println("ActiveDocument.Tables.Count = {}", application.ActiveDocument.Tables.Count);
|
||||||
|
|
||||||
|
ActiveDocument := application.ActiveDocument;
|
||||||
|
ActiveDocument.Paragraphs.Add;
|
||||||
|
|
||||||
|
prange := ActiveDocument.Range(2, 4);
|
||||||
|
prange.Font.Size := 20;
|
||||||
|
prange.ParagraphFormat.Alignment := 1;
|
||||||
|
return;
|
||||||
// TestTableCell(application);
|
// TestTableCell(application);
|
||||||
// TestTableColumns(application);
|
// TestTableColumns(application);
|
||||||
// TestTables(application);
|
// TestTables(application);
|
||||||
// TestParagraphs(application);
|
// TestParagraphs(application);
|
||||||
// TestRange(application);
|
// TestRange(application);
|
||||||
TestBorders(application);
|
// TestBorders(application);
|
||||||
|
|
||||||
// arr := application.ActiveDocument.Range(0, 10);
|
// arr := application.ActiveDocument.Range(0, 10);
|
||||||
// println("arr = {}", arr);
|
// println("arr = {}", arr);
|
||||||
|
|
||||||
Documents[2].SaveAs2(FileName : savepath);
|
Documents[2].SaveAs2(FileName : savepath);
|
||||||
println("savepath = {}", savepath);
|
println("savepath = {}", savepath);
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
@ -54,8 +60,6 @@ Begin
|
||||||
crange.InsertAfter(Text: ".after");
|
crange.InsertAfter(Text: ".after");
|
||||||
crange.InsertBefore(Text: ".before");
|
crange.InsertBefore(Text: ".before");
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
ActiveDocument.Range(2, 17).Font.Size := 20;
|
ActiveDocument.Range(2, 17).Font.Size := 20;
|
||||||
println("ActiveDocument.Range(2, 4).Font.Size = {}", ActiveDocument.Range(2, 4).Font.Size);
|
println("ActiveDocument.Range(2, 4).Font.Size = {}", ActiveDocument.Range(2, 4).Font.Size);
|
||||||
println("ActiveDocument.Range(2, 5).Font.Size = {}", ActiveDocument.Range(2, 5).Font.Size);
|
println("ActiveDocument.Range(2, 5).Font.Size = {}", ActiveDocument.Range(2, 5).Font.Size);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
Uses TSDocxEnumerations;
|
||||||
|
|
||||||
|
Application := new TSDocxApplication();
|
||||||
|
|
||||||
|
openpath := "D://temp//default.docx";
|
||||||
|
savepath := "D://temp//docx_vba_help.docx";
|
||||||
|
|
||||||
|
document := Application.Documents.Open(FileName: openpath);
|
||||||
|
document.Activate;
|
||||||
|
println("Documents.Count = {}", Application.Documents.Count);
|
||||||
|
ActiveDocument := Application.ActiveDocument;
|
||||||
|
println("ActiveDocument.Name = {}", ActiveDocument.Name);
|
||||||
|
println("\n");
|
||||||
|
|
||||||
|
ActiveDocument.Paragraphs.Add;
|
||||||
|
para := ActiveDocument.Paragraphs.Last;
|
||||||
|
para.Range.Text := "TSVBA帮助文档";
|
||||||
|
println("para = {}", para);
|
||||||
|
// para.Range.Font.Size := 20;
|
||||||
|
para.Format.Alignment := TSDocxEnumerations.wdAlignParagraphCenter();
|
||||||
|
para.Format.Apply(); // 写属性后要apply
|
||||||
|
// ActiveDocument.SaveAs2(FileName : savepath);
|
||||||
|
// println("ActiveDocument.SaveAs2 = {}", savepath);
|
||||||
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
Uses SampleUnit;
|
||||||
|
InterfaceFunction();
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// xlsx.NewFile();
|
// xlsx.NewFile();
|
||||||
// xlsx.OpenFile("", "D:\\temp\\vba_new.xlsx");
|
// xlsx.OpenFile("", "D:\\temp\\vba_new.xlsx");
|
||||||
|
|
||||||
application := new Application();
|
application := new XlsxApplication();
|
||||||
application.Workbooks.Add;
|
application.Workbooks.Add;
|
||||||
Workbooks := application.Workbooks;
|
Workbooks := application.Workbooks;
|
||||||
Workbooks.Open(FileName : "D:/temp/vba_new.xlsx");
|
Workbooks.Open(FileName : "D:/temp/vba_new.xlsx");
|
||||||
|
|
|
||||||
|
|
@ -19,18 +19,12 @@ private
|
||||||
fp_; // 函数指针 -- 用来比较
|
fp_; // 函数指针 -- 用来比较
|
||||||
activation_; // 激活的对象
|
activation_; // 激活的对象
|
||||||
|
|
||||||
public
|
|
||||||
class Function GetInstance(value);
|
|
||||||
|
|
||||||
private
|
|
||||||
static collection_;
|
|
||||||
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// ============== 实现 ================= //
|
// ============== 实现 ================= //
|
||||||
Function Collection.Create();
|
Function Collection.Create();
|
||||||
Begin
|
Begin
|
||||||
container_ := ContainerList();
|
container_ := new LinkList();
|
||||||
ignorecase_ := false;
|
ignorecase_ := false;
|
||||||
fp_ := FindFunction("CompareFunction", self);
|
fp_ := FindFunction("CompareFunction", self);
|
||||||
End;
|
End;
|
||||||
|
|
@ -66,14 +60,6 @@ Begin
|
||||||
return name;
|
return name;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
class Function Collection.GetInstance(value);
|
|
||||||
Begin
|
|
||||||
if not istable(collection_) then collection_ := array();
|
|
||||||
if not collection_[value] then
|
|
||||||
collection_[value] := new Collection();
|
|
||||||
return collection_[value];
|
|
||||||
End;
|
|
||||||
|
|
||||||
Function Collection.AddCollection(obj, name);
|
Function Collection.AddCollection(obj, name);
|
||||||
Begin
|
Begin
|
||||||
data := new Data();
|
data := new Data();
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,3 @@
|
||||||
Function ContainerList();
|
|
||||||
Begin
|
|
||||||
return new LinkList();
|
|
||||||
End;
|
|
||||||
|
|
||||||
Type LinkList = class
|
Type LinkList = class
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
@ -4,9 +4,9 @@ public
|
||||||
Function Create(app, cre, par);
|
Function Create(app, cre, par);
|
||||||
|
|
||||||
private
|
private
|
||||||
application_;
|
[weakref]application_;
|
||||||
creator_;
|
[weakref]parent_;
|
||||||
parent_;
|
[autoref]creator_;
|
||||||
|
|
||||||
public
|
public
|
||||||
property Application read ReadApplication;
|
property Application read ReadApplication;
|
||||||
|
|
@ -26,7 +26,7 @@ Begin
|
||||||
parent_ := par;
|
parent_ := par;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
// property
|
// Properties
|
||||||
Function TSVbaBase.ReadApplication();
|
Function TSVbaBase.ReadApplication();
|
||||||
Begin
|
Begin
|
||||||
return application_;
|
return application_;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue