`range.font` and `range.border`
This commit is contained in:
parent
7283b7ac28
commit
3781bc96e7
|
|
@ -53,7 +53,7 @@ public
|
|||
Function PointsToMillimeters(Points);
|
||||
Function PointsToPicas(Points);
|
||||
Function PointsToPixels(Points, fVertical);
|
||||
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 ProductCode();
|
||||
Function PutFocusInMailHeader();
|
||||
Function Quit(SaveChanges, OriginalFormat, RouteDocument);
|
||||
|
|
@ -346,7 +346,7 @@ End;
|
|||
// ============== 实现 ================= //
|
||||
Function TSDocxApplication.Create();
|
||||
Begin
|
||||
Class(TSVbaBase).Create(self, random(10000000), self);
|
||||
Class(TSVbaBase).Create(self, random(100000000), self);
|
||||
Init();
|
||||
End;
|
||||
|
||||
|
|
@ -361,7 +361,7 @@ End;
|
|||
Function TSDocxApplication.ReadDocuments(Index)
|
||||
Begin
|
||||
if ifnil(Index) then return documents_;
|
||||
return documents_[Index];
|
||||
return documents_.Item(Index);
|
||||
End;
|
||||
|
||||
Function TSDocxApplication.ReadActiveDocument();
|
||||
|
|
|
|||
|
|
@ -1,144 +0,0 @@
|
|||
Type TSDocxBorder = Class(TSVbaBase)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(borders, borderType);
|
||||
|
||||
private
|
||||
border_;
|
||||
|
||||
public
|
||||
property ArtStyle read ReadArtStyle write WriteArtStyle;
|
||||
property ArtWidth read ReadArtWidth write WriteArtWidth;
|
||||
property Color read ReadColor write WriteColor;
|
||||
property ColorIndex read ReadColorIndex write WriteColorIndex;
|
||||
property Inside read ReadInside;
|
||||
property LineStyle read ReadLineStyle write WriteLineStyle;
|
||||
property LineWidth read ReadLineWidth write WriteLineWidth;
|
||||
property Visible read ReadVisible write WriteVisible;
|
||||
Function WriteVisible();
|
||||
Function ReadVisible();
|
||||
Function WriteLineWidth();
|
||||
Function ReadLineWidth();
|
||||
Function WriteLineStyle(value);virtual;
|
||||
Function ReadLineStyle();
|
||||
Function ReadInside();
|
||||
Function WriteColorIndex();
|
||||
Function ReadColorIndex();
|
||||
Function WriteColor();
|
||||
Function ReadColor();
|
||||
Function WriteArtWidth();
|
||||
Function ReadArtWidth();
|
||||
Function WriteArtStyle();
|
||||
Function ReadArtStyle();
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBorder.Init(borders, borderType);
|
||||
Begin
|
||||
|
||||
case borderType of
|
||||
TSDocxEnumerations.wdBorderBottom():
|
||||
border_ := borders.Bottom;
|
||||
TSDocxEnumerations.wdBorderDiagonalDown():
|
||||
border_ := borders.tl2br;
|
||||
TSDocxEnumerations.wdBorderDiagonalUp():
|
||||
border_ := borders.tr2bl;
|
||||
TSDocxEnumerations.wdBorderHorizontal():
|
||||
border_ := borders.InsideH;
|
||||
TSDocxEnumerations.wdBorderLeft():
|
||||
border_ := borders.Left;
|
||||
TSDocxEnumerations.wdBorderRight():
|
||||
border_ := borders.Right;
|
||||
TSDocxEnumerations.wdBorderTop():
|
||||
border_ := borders.Top;
|
||||
TSDocxEnumerations.wdBorderVertical():
|
||||
border_ := borders.InsideV;
|
||||
end;
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxBorder.WriteLineStyle(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdLineStyleDashDot():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashDotDot():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashDotStroked():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashLargeGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashSmallGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDot():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDouble():
|
||||
border_.Val := "double";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDoubleWavy():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleEmboss3D():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleEngrave3D():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleInset():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleNone():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleOutset():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleSingle():
|
||||
border_.Val := "single";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleSingleWavy():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThickThinLargeGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThickThinMedGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThickThinSmallGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickLargeGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickMedGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickSmallGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickThinLargeGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickThinMedGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickThinSmallGap():
|
||||
border_.Val := "nil";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleTriple():
|
||||
border_.Val := "nil";
|
||||
|
||||
end;
|
||||
border_.Update();
|
||||
|
||||
End;
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
Type TSDocxBorderTable = Class(TSDocxBorder)
|
||||
|
||||
public
|
||||
Function Init(table, borderType);
|
||||
|
||||
public
|
||||
Function WriteLineStyle(value);override;
|
||||
|
||||
private
|
||||
table_;
|
||||
border_type_;
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBorderTable.Init(table, borderType);
|
||||
Begin
|
||||
table_ := table;
|
||||
border_type_ := borderType;
|
||||
End;
|
||||
|
||||
|
||||
// property
|
||||
Function TSDocxBorderTable.WriteLineStyle(value);override;
|
||||
Begin
|
||||
for r:=1 to table_.Rows() do
|
||||
begin
|
||||
for c:=1 to table_.Cols() do
|
||||
begin
|
||||
cell := new TSDocxCell(self.Application, self.Creator, self.Parent);
|
||||
cell.Init(table_, r, c);
|
||||
cell.Borders(border_type_).LineStyle := value;
|
||||
end
|
||||
end
|
||||
End;
|
||||
|
|
@ -2,19 +2,29 @@ Type TSDocxCell = Class(TSVbaBase)
|
|||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(table, row, column);
|
||||
Function Init(docx, table, r, c);overload;
|
||||
Function Init(node);overload;
|
||||
|
||||
private
|
||||
Function GetCell();
|
||||
Function SetCellTcPrWidth(row, col, widthValue, widthType);
|
||||
Function SetCellTcPrWidth(r, c, widthValue, widthType);overload;
|
||||
Function SetCellTcPrWidth(tcpr, widthValue, widthType);overload;
|
||||
Function GetTcprObject(r, c);
|
||||
Function GetTrPrObject();
|
||||
Function AdjustSameWidth();
|
||||
Function AdjustFirstColumn(widthValue);
|
||||
Function ProcessWidthValue(widthValue, widthType);
|
||||
|
||||
private
|
||||
docx_;
|
||||
table_; // TOfficeObj("TTable")
|
||||
row_;
|
||||
column_;
|
||||
tcpr_; // TOfficeObj("TwTcPr")
|
||||
trpr_; // TOfficeObj("TwTrPr")
|
||||
cell_; // TOfficeObj("TCell")
|
||||
min_dxa_width_; // 最小宽度 321
|
||||
range_;
|
||||
row_;
|
||||
column_;
|
||||
|
||||
public
|
||||
Function AutoSum();
|
||||
|
|
@ -50,19 +60,19 @@ public
|
|||
property VerticalAlignment read ReadVerticalAlignment write WriteVerticalAlignment;
|
||||
property Width read ReadWidth write WriteWidth;
|
||||
property WordWrap read ReadWordWrap write WriteWordWrap;
|
||||
Function WriteWordWrap(wrap);
|
||||
Function WriteWordWrap(value);
|
||||
Function ReadWordWrap();
|
||||
Function WriteWidth(width);
|
||||
Function WriteWidth(value);
|
||||
Function ReadWidth();
|
||||
Function WriteVerticalAlignment(alignment);
|
||||
Function WriteVerticalAlignment(value);
|
||||
Function ReadVerticalAlignment();
|
||||
Function WriteTopPadding(top);
|
||||
Function WriteTopPadding(value);
|
||||
Function ReadTopPadding();
|
||||
Function ReadTables(index);
|
||||
Function ReadShading();
|
||||
Function ReadRowIndex();
|
||||
Function ReadRow();
|
||||
Function WriteRightPadding(right);
|
||||
Function WriteRightPadding(value);
|
||||
Function ReadRightPadding();
|
||||
Function ReadRange();
|
||||
Function ReadPrevious();
|
||||
|
|
@ -72,38 +82,42 @@ public
|
|||
Function ReadPreferredWidth();
|
||||
Function ReadNext();
|
||||
Function ReadNestingLevel();
|
||||
Function WriteLeftPadding(left);
|
||||
Function WriteLeftPadding(value);
|
||||
Function ReadLeftPadding();
|
||||
Function WriteID();
|
||||
Function ReadID();
|
||||
Function WriteHeightRule();
|
||||
Function WriteHeightRule(value);
|
||||
Function ReadHeightRule();
|
||||
Function WriteHeight();
|
||||
Function WriteHeight(value);
|
||||
Function ReadHeight();
|
||||
Function WriteFitText();
|
||||
Function ReadFitText();
|
||||
Function ReadColumnIndex();
|
||||
Function ReadColumn();
|
||||
Function WriteBottomPadding(bottom);
|
||||
Function WriteBottomPadding(value);
|
||||
Function ReadBottomPadding();
|
||||
Function ReadBorders(index);
|
||||
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxCell.Init(table, row, column);
|
||||
Function TSDocxCell.Init(docx, table, r, c);overload;
|
||||
Begin
|
||||
docx_ := docx;
|
||||
table_ := table;
|
||||
row_ := row;
|
||||
column_ := column;
|
||||
row_ := r;
|
||||
column_ := c;
|
||||
min_dxa_width_ := 321;
|
||||
cell := table_.GetCells()[row_-1, column_-1];
|
||||
if not ifnil(cell) then
|
||||
begin
|
||||
tcpr_node := class(TSXml).GetNode(cell[0], "w:tcPr", "first");
|
||||
tcpr_ := TOfficeObj("TwTcPr");
|
||||
tcpr_.InitRootNode(tcpr_node);
|
||||
end
|
||||
tcpr_ := GetTcprObject(row_, column_);
|
||||
trpr_ := nil; // 延迟访问
|
||||
cell_ := nil;
|
||||
range_ := nil;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.Init(node);overload;
|
||||
Begin
|
||||
cell_ := TOfficeObj("tcell");
|
||||
cell_.Create(node);
|
||||
End;
|
||||
|
||||
Function TSDocxCell.GetCell();
|
||||
|
|
@ -113,16 +127,55 @@ Begin
|
|||
return cell_;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.SetCellTcPrWidth(row, col, widthValue, widthType);
|
||||
Function TSDocxCell.ProcessWidthValue(widthValue, widthType);
|
||||
Begin
|
||||
cell := table_.GetCells()[row-1, col-1];
|
||||
if ifnil(cell) then return;
|
||||
case widthType of
|
||||
"dxa":
|
||||
begin
|
||||
widthValue := widthValue * 20;
|
||||
if widthValue < min_dxa_width_ then widthValue := min_dxa_width_;
|
||||
end
|
||||
"pct":
|
||||
begin
|
||||
widthValue := widthValue * 50;
|
||||
end
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.GetTrPrObject();
|
||||
Begin
|
||||
if ifObj(trpr_) then return trpr_;
|
||||
tr_node := class(TSXml).GetNodeN(table_.Root(), "w:tr", column_);
|
||||
trpr_node := tr_node.FirstChild("w:trPr");
|
||||
if not ifObj(trpr_node) then trpr_node := tr_node.InsertFirstChild("element", "w:trPr");
|
||||
trpr_:= TOfficeObj("TwTrPr");
|
||||
trpr_.InitRootNode(trpr_node);
|
||||
return trpr_;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.SetCellTcPrWidth(r, c, widthValue, widthType);overload;
|
||||
Begin
|
||||
tcpr_obj := GetTcprObject(r, c);
|
||||
if ifnil(tcpr_obj) then return;
|
||||
SetCellTcPrWidth(tcpr_obj, widthValue, widthType);
|
||||
End;
|
||||
|
||||
Function TSDocxCell.SetCellTcPrWidth(tcpr, widthValue, widthType);overload;
|
||||
Begin
|
||||
ProcessWidthValue(widthValue, widthType);
|
||||
tcpr.Width := widthValue;
|
||||
tcpr.Type := widthType;
|
||||
tcpr.Update();
|
||||
End;
|
||||
|
||||
Function TSDocxCell.GetTcprObject(r, c);
|
||||
Begin
|
||||
cell := table_.GetCell(r, c);
|
||||
if ifnil(cell) then return nil;
|
||||
tcpr_node := class(TSXml).GetNode(cell[0], "w:tcPr", "first");
|
||||
tcpr_obj := TOfficeObj("TwTcPr");
|
||||
tcpr_obj.InitRootNode(tcpr_node);
|
||||
tcpr_obj.Width := widthValue;
|
||||
tcpr_obj.Type := widthType;
|
||||
tcpr_obj.Update();
|
||||
tcpr := TOfficeObj("TwTcPr");
|
||||
tcpr.InitRootNode(tcpr_node);
|
||||
return tcpr;
|
||||
End;
|
||||
|
||||
// function
|
||||
|
|
@ -144,6 +197,79 @@ Begin
|
|||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.SetHeight(RowHeight, HeightRule);
|
||||
Begin
|
||||
trpr_obj := GetTrPrObject();
|
||||
case HeightRule of
|
||||
TSDocxEnumerations.wdRowHeightAtLeast:
|
||||
begin
|
||||
h_rule := "least";
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdRowHeightAuto:
|
||||
begin
|
||||
h_rule := "auto";
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdRowHeightExactly:
|
||||
begin
|
||||
h_rule := "exact";
|
||||
end
|
||||
end;
|
||||
trpr_obj.Rule := h_rule;
|
||||
trpr_obj.Height := RowHeight * 20;
|
||||
trpr_obj.Update();
|
||||
End;
|
||||
|
||||
Function TSDocxCell.SetWidth(ColumnWidth, RulerStyle);
|
||||
Begin
|
||||
if ifnil(RulerStyle) then RulerStyle := TSDocxEnumerations.wdAdjustNone();
|
||||
width_value := ColumnWidth;
|
||||
case RulerStyle of
|
||||
TSDocxEnumerations.wdAdjustFirstColumn():
|
||||
AdjustFirstColumn(width_value);
|
||||
|
||||
TSDocxEnumerations.wdAdjustNone():
|
||||
begin
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdAdjustProportional():
|
||||
begin
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdAdjustSameWidth():
|
||||
AdjustSameWidth();
|
||||
end;
|
||||
SetCellTcPrWidth(tcpr_, width_value, "dxa");
|
||||
End;
|
||||
|
||||
Function TSDocxCell.AdjustFirstColumn(widthValue);
|
||||
Begin
|
||||
tcpr_next := GetTcprObject(row_, column_ + 1);
|
||||
if not tcpr_next then return;
|
||||
ww := tcpr_next.Value("width");
|
||||
new_width := ww + tcpr_.Value("width") - widthValue;
|
||||
SetCellTcPrWidth(tcpr_next, new_width, "dxa");
|
||||
End;
|
||||
|
||||
Function TSDocxCell.AdjustSameWidth();
|
||||
Begin
|
||||
if column_ <> table_.Cols() then
|
||||
begin
|
||||
after_total_width := 0;
|
||||
tcpr_arr := array();
|
||||
for i:=column_+1 to table_.Cols() do
|
||||
begin
|
||||
tcpr := GetTcprObject(row_, i);
|
||||
after_total_width += tcpr.Value("Width");
|
||||
tcpr_arr[length(tcpr_arr)] := tcpr;
|
||||
end
|
||||
after_width := integer(after_total_width / length(tcpr_arr));
|
||||
for i:=0 to length(tcpr_arr)-1 do
|
||||
SetCellTcPrWidth(tcpr_arr[i], after_width, "dxa");
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxCell.Merge(MergeTo);
|
||||
Begin
|
||||
table_.Merge(self.RowIndex, self.ColumnIndex, MergeTo.RowIndex, MergeTo.ColumnIndex, false);
|
||||
|
|
@ -168,20 +294,36 @@ Begin
|
|||
End;
|
||||
|
||||
// VBA width=100,xml是2000
|
||||
Function TSDocxCell.WriteWidth(width);
|
||||
Function TSDocxCell.WriteWidth(value);
|
||||
Begin
|
||||
tcpr_.Width := width * 20;
|
||||
tcpr_.Type := "dxa";
|
||||
width_type := tcpr_.Value("Type");
|
||||
width_value := value;
|
||||
case width_type of
|
||||
"auto":
|
||||
begin
|
||||
width_value := width_value * 20;
|
||||
width_type := "dxa";
|
||||
end
|
||||
"dxa": width_value := width_value * 20;
|
||||
"pct": width_value := width_value * 12.05;
|
||||
end;
|
||||
tcpr_.Width := integer(width_value);
|
||||
tcpr_.Type := width_type;
|
||||
tcpr_.Update();
|
||||
End;
|
||||
Function TSDocxCell.ReadWidth();
|
||||
Begin
|
||||
return tcpr_.Value("width") / 20;
|
||||
width_type := tcpr_.Value("Type");
|
||||
width_value := tcpr_.Value("width");
|
||||
case width_type of
|
||||
"dxa", "auto": return width_value / 20;
|
||||
"pct": return width_value / 12.05;
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteWordWrap(wrap);
|
||||
Function TSDocxCell.WriteWordWrap(value);
|
||||
Begin
|
||||
tcpr_.noWrap := wrap ? 0 : 1;
|
||||
tcpr_.noWrap := value ? 0 : 1;
|
||||
tcpr_.Update();
|
||||
End;
|
||||
Function TSDocxCell.ReadWordWrap();
|
||||
|
|
@ -189,9 +331,9 @@ Begin
|
|||
return tcpr_.Value("noWrap") ? false : true;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteVerticalAlignment(alignment);
|
||||
Function TSDocxCell.WriteVerticalAlignment(value);
|
||||
Begin
|
||||
case alignment of
|
||||
case value of
|
||||
TSDocxEnumerations.wdCellAlignVerticalBottom():
|
||||
begin
|
||||
tcpr_.vAlign := "bottom";
|
||||
|
|
@ -222,9 +364,9 @@ Begin
|
|||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteTopPadding(top);
|
||||
Function TSDocxCell.WriteTopPadding(value);
|
||||
Begin
|
||||
tcpr_.CellMar.Top := 20 * top;
|
||||
tcpr_.CellMar.Top := 20 * value;
|
||||
tcpr_.CellMar.TopType := "dxa";
|
||||
tcpr_.Update();
|
||||
End;
|
||||
|
|
@ -233,9 +375,9 @@ Begin
|
|||
return tcpr_.CellMar.Value("Top") / 20;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteLeftPadding(left);
|
||||
Function TSDocxCell.WriteLeftPadding(value);
|
||||
Begin
|
||||
tcpr_.CellMar.Left := 20 * left;
|
||||
tcpr_.CellMar.Left := 20 * value;
|
||||
tcpr_.CellMar.LeftType := "dxa";
|
||||
tcpr_.Update();
|
||||
End;
|
||||
|
|
@ -244,7 +386,7 @@ Begin
|
|||
return tcpr_.CellMar.Value("Left") / 20;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteBottomPadding(bottom);
|
||||
Function TSDocxCell.WriteBottomPadding(value);
|
||||
Begin
|
||||
tcpr_.CellMar.Bottom := 20 * bottom;
|
||||
tcpr_.CellMar.BottomType := "dxa";
|
||||
|
|
@ -255,9 +397,9 @@ Begin
|
|||
return tcpr_.CellMar.Value("Bottom") / 20;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteRightPadding(right);
|
||||
Function TSDocxCell.WriteRightPadding(value);
|
||||
Begin
|
||||
tcpr_.CellMar.Right := 20 * right;
|
||||
tcpr_.CellMar.Right := 20 * value;
|
||||
tcpr_.CellMar.RightType := "dxa";
|
||||
tcpr_.Update();
|
||||
End;
|
||||
|
|
@ -282,9 +424,9 @@ End;
|
|||
|
||||
Function TSDocxCell.ReadBorders(index);
|
||||
Begin
|
||||
borders_obj := new TSDocxBorders(self.Application, self.Creator, self);
|
||||
borders_obj.Init(tcpr_.Borders);
|
||||
return ifnil(index) ? obj : obj[index];
|
||||
borders_obj := new TSDocxBordersCell(self.Application, self.Creator, self);
|
||||
borders_obj.Init(GetCell());
|
||||
return ifnil(index) ? borders_obj : borders_obj.Item(index);
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WritePreferredWidthType(value);
|
||||
|
|
@ -317,10 +459,7 @@ Begin
|
|||
width_type := "dxa";
|
||||
end
|
||||
end;
|
||||
if ifnil(width_value) and ifnil(width_type) then return;
|
||||
for r:=1 to table_.Rows() do
|
||||
for c:=1 to table_.Cols() do
|
||||
SetCellTcPrWidth(r, c, width_value, width_type);
|
||||
SetCellTcPrWidth(row_, column_, width_value, width_type);
|
||||
End;
|
||||
Function TSDocxCell.ReadPreferredWidthType();
|
||||
Begin
|
||||
|
|
@ -335,22 +474,18 @@ End;
|
|||
Function TSDocxCell.WritePreferredWidth(value);
|
||||
Begin
|
||||
width_type := self.PreferredWidthType;
|
||||
width_value := 0;
|
||||
width_value := value;
|
||||
case width_type of
|
||||
TSDocxEnumerations.wdPreferredWidthAuto(),
|
||||
TSDocxEnumerations.wdPreferredWidthPoints():
|
||||
begin
|
||||
width_type := "dxa";
|
||||
width_value := 20 * value;
|
||||
if width_type > min_dxa_width_ then width_type := min_dxa_width_;
|
||||
SetCellTcPrWidth(row_, column_, width_value, width_type);
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdPreferredWidthPercent():
|
||||
begin
|
||||
width_type := "pct";
|
||||
if value < 0 or value > 100 then return;
|
||||
width_value := 50 * value;
|
||||
SetCellTcPrWidth(row_, column_, width_value, width_type);
|
||||
end
|
||||
end;
|
||||
|
|
@ -364,3 +499,75 @@ Begin
|
|||
"pct": return width_value / 50;
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteHeight(value);
|
||||
Begin
|
||||
SetHeight(value, self.HeightRule);
|
||||
End;
|
||||
Function TSDocxCell.ReadHeight();
|
||||
Begin
|
||||
trpr_obj := GetTrPrObject();
|
||||
value := trpr_obj.Value("Height");
|
||||
return ifnil(value) ? 0 : value;
|
||||
End;
|
||||
|
||||
Function TSDocxCell.WriteHeightRule(value);
|
||||
Begin
|
||||
trpr_obj := GetTrPrObject();
|
||||
case value of
|
||||
TSDocxEnumerations.wdRowHeightAuto():
|
||||
trpr_obj.Rule := "auto";
|
||||
|
||||
TSDocxEnumerations.wdRowHeightAtLeast():
|
||||
trpr_obj.Rule := "least";
|
||||
|
||||
TSDocxEnumerations.wdRowHeightExactly():
|
||||
trpr_obj.Rule := "exact";
|
||||
end;
|
||||
trpr_obj.Update();
|
||||
End;
|
||||
Function TSDocxCell.ReadHeightRule();
|
||||
Begin
|
||||
trpr_obj := GetTrPrObject();
|
||||
rule := trpr_obj.Value("Rule");
|
||||
case rule of
|
||||
"auto": return TSDocxEnumerations.wdRowHeightAuto();
|
||||
"least": return TSDocxEnumerations.wdRowHeightAtLeast();
|
||||
"exact": return TSDocxEnumerations.wdRowHeightExactly();
|
||||
end;
|
||||
return TSDocxEnumerations.wdRowHeightAtLeast();
|
||||
End;
|
||||
|
||||
Function TSDocxCell.ReadNext();
|
||||
Begin
|
||||
if column_ = table_.Cols() then
|
||||
begin
|
||||
if row_ = table_.Rows() then return nil;
|
||||
return self.Parent.Cell(row_ + 1, 1);
|
||||
end
|
||||
return self.Parent.Cell(row_, column_ + 1);
|
||||
End;
|
||||
|
||||
Function TSDocxCell.ReadPrevious();
|
||||
Begin
|
||||
if column_ = 1 then
|
||||
begin
|
||||
if row_ = 1 then return nil;
|
||||
return self.Parent.Cell(row_ - 1, table_.Cols());
|
||||
end
|
||||
return self.Parent.Cell(row_, column_ - 1);
|
||||
End;
|
||||
|
||||
Function TSDocxCell.ReadRange();
|
||||
Begin
|
||||
if ifnil(range_) then
|
||||
begin
|
||||
pbegin := 0;
|
||||
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_.Init(pbegin, pend, arr);
|
||||
end
|
||||
return range_;
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
Type TSDocxCells = Class(TSVbaBase)
|
||||
|
||||
public
|
||||
Function Init(table);
|
||||
Function Init(table, row, column);
|
||||
Function Operator[](index);
|
||||
|
||||
private
|
||||
table_; // TOfficeObj("TTable")
|
||||
row_;
|
||||
column_;
|
||||
|
||||
public
|
||||
Function Add(BeforeCell);
|
||||
|
|
@ -48,3 +51,24 @@ public
|
|||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxCells.Init(table, row, column);
|
||||
Begin
|
||||
table_ := table;
|
||||
row_ := row;
|
||||
column_ := column;
|
||||
End;
|
||||
|
||||
Function Operator TSDocxCells.[](index);
|
||||
Begin
|
||||
row := ifnil(row_) ? index : row_;
|
||||
column := ifnil(column_) ? index : column_;
|
||||
cell_obj := new TSDocxCell(self.Application, self.Creator, self);
|
||||
cell_obj.Init(table_, row, column);
|
||||
return cell_obj;
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxCells.Item(Index);
|
||||
Begin
|
||||
return self[Index - 1];
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -5,13 +5,12 @@ public
|
|||
Function Init(table, column);
|
||||
|
||||
private
|
||||
Function SetColumnWidth(column, wvalue, type);
|
||||
Function SerializeTblGrid();
|
||||
|
||||
private
|
||||
table_;
|
||||
column_;
|
||||
min_dxa_width_; // 最小宽度 321
|
||||
cells_;
|
||||
|
||||
public
|
||||
Function AutoFit();
|
||||
|
|
@ -45,7 +44,7 @@ public
|
|||
Function ReadIsLast();
|
||||
Function ReadIsFirst();
|
||||
Function ReadIndex();
|
||||
Function ReadCells();
|
||||
Function ReadCells(n);
|
||||
Function ReadBorders();
|
||||
|
||||
End;
|
||||
|
|
@ -55,24 +54,8 @@ Function TSDocxColumn.Init(table, column);
|
|||
Begin
|
||||
table_ := table;
|
||||
column_ := column;
|
||||
min_dxa_width_ := 321;
|
||||
End;
|
||||
|
||||
Function TSDocxColumn.SetColumnWidth(column, wvalue, type);
|
||||
Begin
|
||||
if ifnil(wvalue) and ifnil(type) then return;
|
||||
tcells := table_.GetCells();
|
||||
for r:=0 to table_.Rows()-1 do
|
||||
begin
|
||||
cell := tcells[r, column-1];
|
||||
if ifnil(cell) then continue;
|
||||
tcpr := class(TSXml).GetNode(cell[0], "w:tcPr", "first");
|
||||
obj := TOfficeObj("TwTcPr");
|
||||
obj.InitRootNode(tcpr);
|
||||
obj.Width := wvalue;
|
||||
obj.Type := type;
|
||||
obj.Update();
|
||||
end
|
||||
cells_ := new TSDocxCells(self.Application, self.Creator, self);
|
||||
cells_.Init(table_, nil, column_);
|
||||
End;
|
||||
|
||||
Function TSDocxColumn.SerializeTblGrid();
|
||||
|
|
@ -93,146 +76,55 @@ End;
|
|||
// function
|
||||
Function TSDocxColumn.SetWidth(ColumnWidth, RulerStyle);
|
||||
Begin
|
||||
if ifnil(RulerStyle) then RulerStyle := TSDocxEnumerations.wdAdjustNone();
|
||||
width_value := ColumnWidth * 20;
|
||||
[total_width, grid_col_arr] := SerializeTblGrid();
|
||||
// 设置w:tblPr的总宽度
|
||||
table_.TblPr.Width := total_width;
|
||||
table_.TblPr.WidthType := "dxa";
|
||||
table_.TblPr.Update();
|
||||
|
||||
case RulerStyle of
|
||||
TSDocxEnumerations.wdAdjustFirstColumn():
|
||||
begin
|
||||
if column_ < length(grid_col_arr)-1 then
|
||||
begin
|
||||
new_width := grid_col_arr[column_][1] + grid_col_arr[column_-1][1] - width_value;
|
||||
if new_width < min_dxa_width_ then new_width := min_dxa_width_;
|
||||
grid_col_arr[column_][0].SetAttribute("w:w", new_width);
|
||||
SetColumnWidth(column_ + 1, new_w, "dxa");
|
||||
end
|
||||
end
|
||||
// 不再调整列宽 "w:tblGrid/w:gridCol",复杂表格列数不好判定
|
||||
for i:=1 to table_.Rows() do
|
||||
self.Cells(i).SetWidth(ColumnWidth, RulerStyle);
|
||||
|
||||
TSDocxEnumerations.wdAdjustNone():
|
||||
begin
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdAdjustProportional():
|
||||
begin
|
||||
// TODO : 需要搞懂算法
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdAdjustSameWidth():
|
||||
begin
|
||||
after_width := grid_col_arr[column_-1][1] - width_value;
|
||||
for i:=column_ to length(grid_col_arr)-1 do
|
||||
after_width += grid_col_arr[i][1];
|
||||
if length(grid_col_arr) > column_ then // 不是最后一列
|
||||
begin
|
||||
num := length(grid_col_arr) - column_;
|
||||
new_width := integer(after_width / num);
|
||||
for c:=column_+1 to length(grid_col_arr) do
|
||||
begin
|
||||
grid_col_arr[c-1][0].SetAttribute("w:w", new_width);
|
||||
SetColumnWidth(c, new_width, "dxa");
|
||||
end
|
||||
end
|
||||
end
|
||||
end;
|
||||
grid_col_arr[column_-1][0].SetAttribute("w:w", width_value);
|
||||
SetColumnWidth(column_, width_value, "dxa");
|
||||
End;
|
||||
|
||||
//property
|
||||
Function TSDocxColumn.WriteWidth(value);
|
||||
Begin
|
||||
for i:=1 to table_.Rows() do
|
||||
self.Cells(i).Width := value;
|
||||
End;
|
||||
Function TSDocxColumn.ReadWidth();
|
||||
Begin
|
||||
return self.Cells(1).Width;
|
||||
End;
|
||||
|
||||
Function TSDocxColumn.WritePreferredWidthType(value);
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdPreferredWidthAuto():
|
||||
begin
|
||||
table_.TblPr.Width := 0;
|
||||
table_.TblPr.WidthType := "auto";
|
||||
table_.TblPr.Update();
|
||||
for c:=1 to table_.Cols() do
|
||||
SetColumnWidth(c, 0, "auto");
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdPreferredWidthPercent():
|
||||
begin
|
||||
table_.TblPr.Width := 5000;
|
||||
table_.TblPr.WidthType := "pct";
|
||||
table_.TblPr.Update();
|
||||
|
||||
width_value := integer(5000 / table_.Cols());
|
||||
for c:=1 to table_.Cols() do
|
||||
SetColumnWidth(c, width_value, "pct");
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdPreferredWidthPoints():
|
||||
begin
|
||||
for c:=1 to table_.Cols() do
|
||||
SetColumnWidth(c, nil, "dxa");
|
||||
end
|
||||
end;
|
||||
for i:=1 to table_.Rows() do
|
||||
self.Cells(i).PreferredWidthType := value;
|
||||
End;
|
||||
Function TSDocxColumn.ReadPreferredWidthType();
|
||||
Begin
|
||||
tcells := table_.GetCells();
|
||||
cell := tcells[1, column_ - 1];
|
||||
if ifnil(cell) then return nil;
|
||||
tcpr := class(TSXml).GetNode(cell[0], "w:tcPr", "first");
|
||||
obj := TOfficeObj("TwTcPr");
|
||||
obj.InitRootNode(tcpr);
|
||||
width_type := obj.Value("Type");
|
||||
tcpr.print;
|
||||
case width_type of
|
||||
"auto": return TSDocxEnumerations.wdPreferredWidthAuto();
|
||||
"dxa": return TSDocxEnumerations.wdPreferredWidthPoints();
|
||||
"pct": return TSDocxEnumerations.wdPreferredWidthPercent();
|
||||
end;
|
||||
return self.Cells(1).PreferredWidthType;
|
||||
End;
|
||||
|
||||
Function TSDocxColumn.WritePreferredWidth(value);
|
||||
Begin
|
||||
width_type := self.PreferredWidthType;
|
||||
width_value := 0;
|
||||
case width_type of
|
||||
TSDocxEnumerations.wdPreferredWidthAuto(),
|
||||
TSDocxEnumerations.wdPreferredWidthPoints():
|
||||
begin
|
||||
width_type := "dxa";
|
||||
width_value := 20 * value;
|
||||
if width_type > min_dxa_width_ then width_type := min_dxa_width_;
|
||||
SetColumnWidth(column_, width_value, width_type);
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdPreferredWidthPercent():
|
||||
begin
|
||||
width_type := "pct";
|
||||
if value < 0 or value > 100 then return;
|
||||
width_value := 50 * value;
|
||||
SetColumnWidth(column_, width_value, width_type);
|
||||
end
|
||||
end;
|
||||
for i:=1 to table_.Rows() do
|
||||
self.Cells(i).PreferredWidth := value;
|
||||
End;
|
||||
Function TSDocxColumn.ReadPreferredWidth();
|
||||
Begin
|
||||
tcells := table_.GetCells();
|
||||
cell := tcells[1, column_ - 1];
|
||||
if ifnil(cell) then return nil;
|
||||
tcpr := class(TSXml).GetNode(cell[0], "w:tcPr", "first");
|
||||
obj := TOfficeObj("TwTcPr");
|
||||
obj.InitRootNode(tcpr);
|
||||
width_type := obj.Value("Type");
|
||||
width_value := obj.Value("Width");
|
||||
case width_type of
|
||||
"auto", "dxa": return width_value / 20;
|
||||
"pct": return width_value / 50;
|
||||
end;
|
||||
return self.Cells(1).PreferredWidth;
|
||||
End;
|
||||
|
||||
Function TSDocxColumn.ReadIndex();
|
||||
Begin
|
||||
return column_;
|
||||
End;
|
||||
|
||||
Function TSDocxColumn.ReadCells(n);
|
||||
Begin
|
||||
return ifnil(n) ? cells_: cells_[n];
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ End;
|
|||
|
||||
Function Operator TSDocxColumns.[](index);
|
||||
Begin
|
||||
column_obj := TSDocxColumn(self.Application, self.Creator, self);
|
||||
column_obj := new TSDocxColumn(self.Application, self.Creator, self);
|
||||
column_obj.Init(table_, index);
|
||||
return column_obj;
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ private
|
|||
file_name_;
|
||||
full_name_;
|
||||
tables_;
|
||||
paragraphs_;
|
||||
|
||||
public
|
||||
Function AcceptAllRevisions();
|
||||
|
|
@ -37,15 +38,15 @@ public
|
|||
Function CountNumberedItems(NumberType, Level);
|
||||
Function CreateLetterContent(DateFormat, IncludeHeaderFooter, PageDesign, LetterStyle, Letterhead, LetterheadLocation, LetterheadSize, RecipientName, RecipientAddress, Salutation, SalutationType, RecipientReference, MailingInstructions, AttentionLine, Subject, CCList, ReturnAddress, SenderName, Closing, SenderCompany, SenderJobTitle, SenderInitials, EnclosureNumber, InfoBlock, RecipientCode, RecipientGender, ReturnAddressShortForm, SenderCity, SenderCode, SenderGender, SenderReference);
|
||||
Function DataForm();
|
||||
Function DeleteAllComments(); // TODO
|
||||
Function DeleteAllCommentsShown(); // TODO
|
||||
Function DeleteAllComments();
|
||||
Function DeleteAllCommentsShown();
|
||||
Function DeleteAllEditableRanges(EditorID);
|
||||
Function DeleteAllInkAnnotations();
|
||||
Function DetectLanguage();
|
||||
Function DowngradeTSDocxDocument();
|
||||
Function EndReview();
|
||||
Function ExportAsFixedFormat(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, Range, From_, To_, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr);
|
||||
Function ExportAsFixedFormat2(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, Range, From_, To_, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, OptimizeForImageQuality, FixedFormatExtClassPtr);
|
||||
Function ExportAsFixedFormat(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, Range, _From, _To, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr);
|
||||
Function ExportAsFixedFormat2(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, Range, _From, _To, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, OptimizeForImageQuality, FixedFormatExtClassPtr);
|
||||
Function FitToPages();
|
||||
Function FollowHyperlink (Address, SubAddress, NewWindow, AddHistory, ExtraInfo, Method, HeaderInfo);
|
||||
Function FreezeLayout();
|
||||
|
|
@ -60,10 +61,10 @@ public
|
|||
Function Merge(Name, MergeTarget, DetectFormatChanges, UseFormattingFrom, AddToRecentFiles);
|
||||
Function Post();
|
||||
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 Protect(Type, NoReset, Password, UseIRM, EnforceStyleLock);
|
||||
Function Range(Start, End_); // TODO
|
||||
Function Range(Start, _End);
|
||||
Function Redo(Times);
|
||||
Function RejectAllRevisions();
|
||||
Function RejectAllRevisionsShown();
|
||||
|
|
@ -113,7 +114,7 @@ public
|
|||
|
||||
property ActiveTheme read ReadActiveTheme;
|
||||
property ActiveThemeDisplayName read ReadActiveThemeDisplayName;
|
||||
property ActiveWindow read ReadActiveWindow; // TODO
|
||||
property ActiveWindow read ReadActiveWindow;
|
||||
property ActiveWritingStyle read ReadActiveWritingStyle write WriteActiveWritingStyle;
|
||||
property AttachedTemplate read ReadAttachedTemplate write WriteAttachedTemplate;
|
||||
property AutoFormatOverride read ReadAutoFormatOverride write WriteAutoFormatOverride;
|
||||
|
|
@ -403,8 +404,8 @@ public
|
|||
Function ReadPasswordEncryptionKeyLength();
|
||||
Function ReadPasswordEncryptionFileProperties();
|
||||
Function ReadPasswordEncryptionAlgorithm();
|
||||
Function WritePassword(password);
|
||||
Function ReadParagraphs();
|
||||
Function WritePassword(value);
|
||||
Function ReadParagraphs(index);
|
||||
Function ReadPageSetup();
|
||||
Function ReadOriginalTSDocxDocumentTitle();
|
||||
Function WriteOptimizeForWord97();
|
||||
|
|
@ -584,8 +585,10 @@ Begin
|
|||
file_name_ := name;
|
||||
full_name_ := fullname;
|
||||
collection_ := class(Collection).GetInstance('document');
|
||||
tables_ := new TSDocxTables(self.Application, self.Parent, self);
|
||||
tables.Init(docx);
|
||||
tables_ := new TSDocxTables(self.Application, self.Creator, self);
|
||||
tables.Init(docx_);
|
||||
paragraphs_ := new TSDocxParagraphs(self.Application, self.Creator, self);
|
||||
paragraphs_.Init(docx_);
|
||||
End;
|
||||
|
||||
// function
|
||||
|
|
@ -614,6 +617,19 @@ Begin
|
|||
docx_.SaveAs("", FileName);
|
||||
End;
|
||||
|
||||
Function TSDocxDocument.Range(Start, _End);
|
||||
Begin
|
||||
// Range(0, 1) 左开右闭
|
||||
node := docx_.Body().Node(); // <body>
|
||||
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.Init(Start, _End, arr);
|
||||
return range_obj;
|
||||
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxDocument.ReadFullName();
|
||||
Begin
|
||||
|
|
@ -625,9 +641,9 @@ Begin
|
|||
return file_name_;
|
||||
End;
|
||||
|
||||
Function TSDocxDocument.WritePassword(passwd);
|
||||
Function TSDocxDocument.WritePassword(value);
|
||||
Begin
|
||||
docx_.SetPassword(passwd);
|
||||
docx_.SetPassword(value);
|
||||
End;
|
||||
|
||||
Function TSDocxDocument.ReadPath();
|
||||
|
|
@ -637,6 +653,10 @@ End;
|
|||
|
||||
Function TSDocxDocument.ReadTables(index);
|
||||
Begin
|
||||
if ifnil(index) then return tables_;
|
||||
return tables_[index];
|
||||
return ifnil(index) ? tables_ : tables.Item(index);
|
||||
End;
|
||||
|
||||
Function TSDocxDocument.ReadParagraphs(index);
|
||||
Begin
|
||||
return ifnil(index) ? paragraphs_ : paragraphs_.Item(index);
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -64,9 +64,9 @@ Begin
|
|||
AddDocument(docx, collection_.CalNewName("文档"));
|
||||
End;
|
||||
|
||||
Function TSDocxDocuments.Item(index);
|
||||
Function TSDocxDocuments.Item(Index);
|
||||
Begin
|
||||
return self[index];
|
||||
return self[Index];
|
||||
End;
|
||||
|
||||
Function TSDocxDocuments.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument,
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,211 @@
|
|||
Type TSDocxParagraph = Class(TSVbaBase)
|
||||
|
||||
public
|
||||
Function Init(body, paragraph, index);
|
||||
|
||||
private
|
||||
body_;
|
||||
paragraph_; // TOfficeObj("TParagraph")
|
||||
index_; // 第N个段落,1开始计数
|
||||
range_;
|
||||
|
||||
public
|
||||
Function CloseUp();
|
||||
Function Indent();
|
||||
Function IndentCharWidth(Count);
|
||||
Function IndentFirstLineCharWidth(Count);
|
||||
Function JoinList();
|
||||
Function ListAdvanceTo();
|
||||
Function Next(Count);
|
||||
Function OpenOrCloseUp();
|
||||
Function OpenUp();
|
||||
Function Outdent();
|
||||
Function OutlineDemote();
|
||||
Function OutlineDemoteToBody();
|
||||
Function OutlinePromote();
|
||||
Function Previous(Count);
|
||||
Function Reset();
|
||||
Function ResetAdvanceTo();
|
||||
Function SelectNumber();
|
||||
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 CollapseHeadingByDefault read ReadCollapseHeadingByDefault write WriteCollapseHeadingByDefault;
|
||||
property DisableLineHeightGrid read ReadDisableLineHeightGrid write WriteDisableLineHeightGrid;
|
||||
property DropCap read ReadDropCap;
|
||||
property FarEastLineBreakControl read ReadFarEastLineBreakControl write WriteFarEastLineBreakControl;
|
||||
property FirstLineIndent read ReadFirstLineIndent write WriteFirstLineIndent;
|
||||
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 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 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 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 ReadCollapsedState();
|
||||
Function WriteCharacterUnitRightIndent(value);
|
||||
Function ReadCharacterUnitRightIndent();
|
||||
Function WriteCharacterUnitLeftIndent(value);
|
||||
Function ReadCharacterUnitLeftIndent();
|
||||
Function WriteCharacterUnitFirstLineIndent(value);
|
||||
Function ReadCharacterUnitFirstLineIndent();
|
||||
Function ReadBorders(index);
|
||||
Function WriteBaseLineAlignment(value);
|
||||
Function ReadBaseLineAlignment();
|
||||
Function WriteAutoAdjustRightIndent(value);
|
||||
Function ReadAutoAdjustRightIndent();
|
||||
Function WriteAlignment(value);
|
||||
Function ReadAlignment();
|
||||
Function WriteAddSpaceBetweenFarEastAndDigit(value);
|
||||
Function ReadAddSpaceBetweenFarEastAndDigit();
|
||||
Function WriteAddSpaceBetweenFarEastAndAlpha(value);
|
||||
Function ReadAddSpaceBetweenFarEastAndAlpha();
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxParagraph.Init(body, paragraph, index);
|
||||
Begin
|
||||
body_ := body;
|
||||
paragraph_ := paragraph;
|
||||
index_ := index;
|
||||
range_ := nil;
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxParagraph.Next(Count);
|
||||
Begin
|
||||
return self.Parent.Item(index + Count);
|
||||
End;
|
||||
|
||||
Function TSDocxParagraph.Previous(Count);
|
||||
Begin
|
||||
return self.Parent.Item(index - Count);
|
||||
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;
|
||||
|
||||
Function TSDocxParagraph.ReadRange();
|
||||
Begin
|
||||
if ifnil(range_) then
|
||||
begin
|
||||
pbegin := 0;
|
||||
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_.Init(pbegin, pend, arr);
|
||||
end
|
||||
return range_;
|
||||
End;
|
||||
|
|
@ -0,0 +1,209 @@
|
|||
Type TSDocxParagraphs = Class(TSVbaBase)
|
||||
|
||||
public
|
||||
Function Init(docx);
|
||||
Function Operator[](index);
|
||||
Function SerializeParagraphs(root);
|
||||
|
||||
private
|
||||
docx_;
|
||||
body_;
|
||||
paragraphs_; // TOfficeObj("TParagraph")数组
|
||||
|
||||
public
|
||||
Function Add(Range);
|
||||
Function CloseUp();
|
||||
Function DecreaseSpacing();
|
||||
Function IncreaseSpacing();
|
||||
Function Indent();
|
||||
Function IndentCharWidth(Count);
|
||||
Function IndentFirstLineCharWidth(Count);
|
||||
Function Item(Index);
|
||||
Function OpenOrCloseUp();
|
||||
Function OpenUp();
|
||||
Function Outdent();
|
||||
Function OutlineDemote();
|
||||
Function OutlineDemoteToBody();
|
||||
Function OutlinePromote();
|
||||
Function Reset();
|
||||
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 Count read ReadCount;
|
||||
property DisableLineHeightGrid read ReadDisableLineHeightGrid write WriteDisableLineHeightGrid;
|
||||
property FarEastLineBreakControl read ReadFarEastLineBreakControl write WriteFarEastLineBreakControl;
|
||||
property First read ReadFirst;
|
||||
property FirstLineIndent read ReadFirstLineIndent write WriteFirstLineIndent;
|
||||
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 KeepTogether read ReadKeepTogether write WriteKeepTogether;
|
||||
property KeepWithNext read ReadKeepWithNext write WriteKeepWithNext;
|
||||
property Last read ReadLast;
|
||||
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 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 WidowControl read ReadWidowControl write WriteWidowControl;
|
||||
property WordWrap read ReadWordWrap write WriteWordWrap;
|
||||
Function WriteWordWrap(value);
|
||||
Function ReadWordWrap();
|
||||
Function WriteWidowControl(value);
|
||||
Function ReadWidowControl();
|
||||
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 WritePageBreakBefore(value);
|
||||
Function ReadPageBreakBefore();
|
||||
Function WriteOutlineLevel(value);
|
||||
Function ReadOutlineLevel();
|
||||
Function WriteNoLineNumber(value);
|
||||
Function ReadNoLineNumber();
|
||||
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 ReadLast();
|
||||
Function WriteKeepWithNext(value);
|
||||
Function ReadKeepWithNext();
|
||||
Function WriteKeepTogether(value);
|
||||
Function ReadKeepTogether();
|
||||
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 ReadFirst();
|
||||
Function WriteFarEastLineBreakControl(value);
|
||||
Function ReadFarEastLineBreakControl();
|
||||
Function WriteDisableLineHeightGrid(value);
|
||||
Function ReadDisableLineHeightGrid();
|
||||
Function ReadCount();
|
||||
Function WriteCharacterUnitRightIndent(value);
|
||||
Function ReadCharacterUnitRightIndent();
|
||||
Function WriteCharacterUnitLeftIndent(value);
|
||||
Function ReadCharacterUnitLeftIndent();
|
||||
Function WriteCharacterUnitFirstLineIndent(value);
|
||||
Function ReadCharacterUnitFirstLineIndent();
|
||||
Function ReadBorders();
|
||||
Function WriteBaseLineAlignment(value);
|
||||
Function ReadBaseLineAlignment();
|
||||
Function WriteAutoAdjustRightIndent(value);
|
||||
Function ReadAutoAdjustRightIndent();
|
||||
Function WriteAlignment(value);
|
||||
Function ReadAlignment();
|
||||
Function WriteAddSpaceBetweenFarEastAndDigit(value);
|
||||
Function ReadAddSpaceBetweenFarEastAndDigit();
|
||||
Function WriteAddSpaceBetweenFarEastAndAlpha(value);
|
||||
Function ReadAddSpaceBetweenFarEastAndAlpha();
|
||||
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxParagraphs.Init(docx);
|
||||
Begin
|
||||
docx_ := docx;
|
||||
body_ := docx_.Body();
|
||||
paragraphs_ := array();
|
||||
SerializeParagraphs(body_.Node());
|
||||
End;
|
||||
|
||||
Function TSDocxParagraphs.SerializeParagraphs(root);
|
||||
Begin
|
||||
node := root.FirstChildElement();
|
||||
while ifObj(node) do
|
||||
begin
|
||||
name := node.GetName();
|
||||
if name = "w:p" then
|
||||
begin
|
||||
obj := TOfficeObj("TParagraph");
|
||||
obj.Init(node);
|
||||
paragraphs_[length(paragraphs_)] := obj;
|
||||
end
|
||||
else if name = "w:tbl" then
|
||||
begin
|
||||
tr := node.FirstChildElement("w:tr");
|
||||
while ifObj(tr) do
|
||||
begin
|
||||
tc := tr.FirstChildElement("w:tc");
|
||||
while ifObj(tc) do
|
||||
begin
|
||||
SerializeParagraphs(tc);
|
||||
tc := tc.NextElement("w:tc");
|
||||
end
|
||||
paragraphs_[length(paragraphs_)] := TOfficeObj("TParagraph");
|
||||
tr := tr.NextElement("w:tr");
|
||||
end
|
||||
end
|
||||
node := node.NextElement();
|
||||
End;
|
||||
End;
|
||||
|
||||
Function Operator TSDocxParagraphs.[](index);
|
||||
Begin
|
||||
paragraph_obj := new TSDocxParagraph(self.Application, self.Creator, self.Parent);
|
||||
paragraph_obj.Init(body_, paragraphs_[index], index + 1);
|
||||
return paragraph_obj;
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxParagraphs.Item(Index);
|
||||
Begin
|
||||
return self[Index - 1];
|
||||
End;
|
||||
|
||||
Function TSDocxParagraphs.ReadCount();
|
||||
Begin
|
||||
return length(paragraphs_);
|
||||
End;
|
||||
|
|
@ -0,0 +1,446 @@
|
|||
Type TSDocxRange = class(TSVbaBase)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(pbegin, pend, arr);
|
||||
Function SetRangeArr(arr);
|
||||
Function SetRangeFont();
|
||||
Function CopyRunFormat(sourceRun, destRun);
|
||||
|
||||
private
|
||||
range_arr_;
|
||||
range_font_; // TSDocxFontRange
|
||||
begin_;
|
||||
end_;
|
||||
|
||||
public
|
||||
Function AutoFormat();
|
||||
Function Calculate();
|
||||
Function CheckGrammar();
|
||||
Function CheckSpelling(CustomDictionary, IgnoreUppercase, AlwaysSuggest, CustomDictionary2, CustomDictionary3, CustomDictionary4, CustomDictionary5, CustomDictionary6, CustomDictionary7, CustomDictionary8, CustomDictionary9, CustomDictionary10);
|
||||
Function CheckSynonyms();
|
||||
Function Collapse(Direction);
|
||||
Function ComputeStatistics(Statistic);
|
||||
Function ConvertHangulAndHanja(ConversionsMode, FastConversion, CheckHangulEnding, EnableRecentOrdering, CustomDictionary);
|
||||
Function ConvertToTable(Separator, NumRows, NumColumns, InitialColumnWidth, Format, ApplyBorders, ApplyShading, ApplyFont, ApplyColor, ApplyHeadingRows, ApplyLastRow, ApplyFirstColumn, ApplyLastColumn, AutoFit, AutoFitBehavior, DefaultTableBehavior);
|
||||
Function Copy();
|
||||
Function CopyAsPicture();
|
||||
Function Cut();
|
||||
Function Delete(_Unit, Count);
|
||||
Function DetectLanguage();
|
||||
Function EndOf(_Unit, Extend);
|
||||
Function Expand(_Unit);
|
||||
Function ExportAsFixedFormat(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, ExportCurrentPage, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr);
|
||||
Function ExportAsFixedFormat2(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, ExportCurrentPage, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, OptimizeForImageQuality, FixedFormatExtClassPtr);
|
||||
Function ExportFragment(FileName, Format);
|
||||
Function GetSpellingSuggestions(CustomDictionary, IgnoreUppercase, MainDictionary, SuggestionMode, CustomDictionary2, CustomDictionary3, CustomDictionary4, CustomDictionary5, CustomDictionary6, CustomDictionary7, CustomDictionary8, CustomDictionary9, CustomDictionary10);
|
||||
Function GoTo(What, Which, Count, Name);
|
||||
Function GoToEditableRange(EditorID);
|
||||
Function GoToNext(What);
|
||||
Function GoToPrevious(What);
|
||||
Function ImportFragment(FileName, MatchDestination);
|
||||
Function InRange(Range);
|
||||
Function InsertAfter(Text);
|
||||
Function InsertAlignmentTab(Alignment, RelativeTo);
|
||||
Function InsertAutoText(Text);
|
||||
Function InsertBefore(Text);
|
||||
Function InsertBreak(Type);
|
||||
Function InsertCaption(_Label, Title, TitleAutoText, Position, ExcludeLabel);
|
||||
Function InsertCrossReference(ReferenceType, ReferenceKind, ReferenceItem, InsertAsHyperlink, IncludePosition, SeparateNumbers, SeparatorString);
|
||||
Function InsertDatabase(Format, Style, LinkToSource, Connection, SQLStatement, SQLStatement1, PasswordDocument, PasswordTemplate, WritePasswordDocument, WritePasswordTemplate, DataSource, From_, To_, IncludeFields);
|
||||
Function InsertDateTime(DateTimeFormat, InsertAsField, InsertAsFullWidth, DateLanguage, CalendarType);
|
||||
Function InsertFile(FileName, Range, ConfirmConversions, Link, Attachment);
|
||||
Function InsertParagraph();
|
||||
Function InsertParagraphAfter();
|
||||
Function InsertParagraphBefore();
|
||||
Function InsertSymbol(CharacterNumber, Font, Unicode, Bias);
|
||||
Function InsertXML(XML, Transform);
|
||||
Function InStory(Range);
|
||||
Function IsEqual(Range);
|
||||
Function LookupNameProperties();
|
||||
Function ModifyEnclosure(Style, Symbol, EnclosedText);
|
||||
Function Move(_Unit, Count);
|
||||
Function MoveEnd(_Unit, Count);
|
||||
Function MoveEndUntil(Cset, Count);
|
||||
Function MoveEndWhile(Cset, Count);
|
||||
Function MoveStart(_Unit, Count);
|
||||
Function MoveStartUntil(Cset, Count);
|
||||
Function MoveStartWhile(Cset, Count);
|
||||
Function MoveUnti(Cset, Count);
|
||||
Function MoveWhile(Cset, Count);
|
||||
Function Nex(_Unit, Count);
|
||||
Function NextSubdocument();
|
||||
Function Paste();
|
||||
Function PasteAndFormat(Type);
|
||||
Function PasteAppendTable();
|
||||
Function PasteAsNestedTable();
|
||||
Function PasteExcelTable(LinkedToExcel, WordFormatting, RTF);
|
||||
Function PasteSpecial(IconIndex, Link, Placement, DisplayAsIcon, DataType, IconFileName, IconLabel);
|
||||
Function PhoneticGuide(Text, Alignment, Raise_, FontSize, FontName);
|
||||
Function Previous(_Unit, Count);
|
||||
Function PreviousSubdocument();
|
||||
Function Relocate(Direction);
|
||||
Function Select();
|
||||
Function SetListLevel(Level);
|
||||
Function SetRange(Start, _End);
|
||||
Function Sort(ExcludeHeader, FieldNumber, SortFieldType, SortOrder, FieldNumber2, SortFieldType2, SortOrder2, FieldNumber3, SortFieldType3, SortOrder3, SortColumn, Separator, CaseSensitive, BidiSort, IgnoreThe, IgnoreKashida, IgnoreDiacritics, IgnoreHe, LanguageID);
|
||||
Function SortAscending();
|
||||
Function SortByHeadings(SortFieldType, SortOrder, CaseSensitive, BidiSort, IgnoreThe, IgnoreKashida, IgnoreDiacritics, IgnoreHe, LanguageID);
|
||||
Function SortDescending();
|
||||
Function StartOf(_Unit, Extend);
|
||||
Function TCSCConverter(WdTCSCConverterDirection, CommonTerms, UseVariants);
|
||||
Function WholeStory();
|
||||
|
||||
property Bold read ReadBold write WriteBold;
|
||||
property BoldBi read ReadBoldBi write WriteBoldBi;
|
||||
property BookmarkID read ReadBookmarkID;
|
||||
property Bookmarks read ReadBookmarks;
|
||||
property Borders read ReadBorders;
|
||||
property Case_ read ReadCase write WriteCase;
|
||||
property Cells read ReadCells;
|
||||
property Characters read ReadCharacters;
|
||||
property CharacterStyle read ReadCharacterStyle;
|
||||
property CharacterWidth read ReadCharacterWidth write WriteCharacterWidth;
|
||||
property Columns read ReadColumns;
|
||||
property CombineCharacters read ReadCombineCharacters write WriteCombineCharacters;
|
||||
property Comments read ReadComments;
|
||||
property Conflicts read ReadConflicts;
|
||||
property ContentControls read ReadContentControls;
|
||||
property DisableCharacterSpaceGrid read ReadDisableCharacterSpaceGrid write WriteDisableCharacterSpaceGrid;
|
||||
property Document read ReadDocument;
|
||||
property Duplicate read ReadDuplicate;
|
||||
property Editors read ReadEditors;
|
||||
property EmphasisMark read ReadEmphasisMark write WriteEmphasisMark;
|
||||
property _End read ReadEnd write WriteEnd;
|
||||
property EndnoteOptions read ReadEndnoteOptions;
|
||||
property Endnotes read ReadEndnotes;
|
||||
property EnhMetaFileBits read ReadEnhMetaFileBits;
|
||||
property Fields read ReadFields;
|
||||
property Find read ReadFind;
|
||||
property FitTextWidth read ReadFitTextWidth write WriteFitTextWidth;
|
||||
property Font read ReadFont;
|
||||
property FootnoteOptions read ReadFootnoteOptions;
|
||||
property Footnotes read ReadFootnotes;
|
||||
property FormattedText read ReadFormattedText write WriteFormattedText;
|
||||
property FormFields read ReadFormFields;
|
||||
property Frames read ReadFrames;
|
||||
property GrammarChecked read ReadGrammarChecked write WriteGrammarChecked;
|
||||
property GrammaticalErrors read ReadGrammaticalErrors;
|
||||
property HighlightColorIndex read ReadHighlightColorIndex write WriteHighlightColorIndex;
|
||||
property HorizontalInVertical read ReadHorizontalInVertical write WriteHorizontalInVertical;
|
||||
property HTMLDivisions read ReadHTMLDivisions;
|
||||
property Hyperlinks read ReadHyperlinks;
|
||||
property ID read ReadID write WriteID;
|
||||
property Information read ReadInformation;
|
||||
property InlineShapes read ReadInlineShapes;
|
||||
property IsEndOfRowMark read ReadIsEndOfRowMark;
|
||||
property Italic read ReadItalic write WriteItalic;
|
||||
property ItalicBi read ReadItalicBi write WriteItalicBi;
|
||||
property Kana read ReadKana write WriteKana;
|
||||
property LanguageDetected read ReadLanguageDetected write WriteLanguageDetected;
|
||||
property LanguageID read ReadLanguageID write WriteLanguageID;
|
||||
property LanguageIDFarEast read ReadLanguageIDFarEast write WriteLanguageIDFarEast;
|
||||
property LanguageIDOther read ReadLanguageIDOther write WriteLanguageIDOther;
|
||||
property ListFormat read ReadListFormat;
|
||||
property ListParagraphs read ReadListParagraphs;
|
||||
property ListStyle read ReadListStyle;
|
||||
property Locks read ReadLocks;
|
||||
property NextStoryRange read ReadNextStoryRange;
|
||||
property NoProofing read ReadNoProofing write WriteNoProofing;
|
||||
property OMaths read ReadOMaths;
|
||||
property Orientation read ReadOrientation write WriteOrientation;
|
||||
property PageSetup read ReadPageSetup;
|
||||
property ParagraphFormat read ReadParagraphFormat write WriteParagraphFormat;
|
||||
property Paragraphs read ReadParagraphs;
|
||||
property ParagraphStyle read ReadParagraphStyle;
|
||||
property ParentContentControl read ReadParentContentControl;
|
||||
property PreviousBookmarkID read ReadPreviousBookmarkID;
|
||||
property ReadabilityStatistics read ReadReadabilityStatistics;
|
||||
property Revisions read ReadRevisions;
|
||||
property Rows read ReadRows;
|
||||
property Scripts read ReadScripts;
|
||||
property Sections read ReadSections;
|
||||
property Sentences read ReadSentences;
|
||||
property Shading read ReadShading;
|
||||
property ShapeRange read ReadShapeRange;
|
||||
property ShowAll read ReadShowAll write WriteShowAll;
|
||||
property SpellingChecked read ReadSpellingChecked write WriteSpellingChecked;
|
||||
property SpellingErrors read ReadSpellingErrors;
|
||||
property Start read ReadStart write WriteStart;
|
||||
property StoryLength read ReadStoryLength;
|
||||
property StoryType read ReadStoryType;
|
||||
property Style read ReadStyle write WriteStyle;
|
||||
property Subdocuments read ReadSubdocuments;
|
||||
property SynonymInfo read ReadSynonymInfo;
|
||||
property Tables read ReadTables;
|
||||
property TableStyle read ReadTableStyle;
|
||||
property Text read ReadText write WriteText;
|
||||
property TextRetrievalMode read ReadTextRetrievalMode write WriteTextRetrievalMode;
|
||||
property TextVisibleOnScreen read ReadTextVisibleOnScreen;
|
||||
property TopLevelTables read ReadTopLevelTables;
|
||||
property TwoLinesInOne read ReadTwoLinesInOne write WriteTwoLinesInOne;
|
||||
property Underline read ReadUnderline write WriteUnderline;
|
||||
property Updates read ReadUpdates;
|
||||
property WordOpenXML read ReadWordOpenXML;
|
||||
property Words read ReadWords;
|
||||
property XML read ReadXML;
|
||||
Function ReadXML();
|
||||
Function ReadWords();
|
||||
Function ReadWordOpenXML();
|
||||
Function ReadUpdates();
|
||||
Function WriteUnderline(value);
|
||||
Function ReadUnderline();
|
||||
Function WriteTwoLinesInOne(value);
|
||||
Function ReadTwoLinesInOne();
|
||||
Function ReadTopLevelTables();
|
||||
Function ReadTextVisibleOnScreen();
|
||||
Function WriteTextRetrievalMode(value);
|
||||
Function ReadTextRetrievalMode();
|
||||
Function WriteText(value);
|
||||
Function ReadText();
|
||||
Function ReadTableStyle();
|
||||
Function ReadTables();
|
||||
Function ReadSynonymInfo();
|
||||
Function ReadSubdocuments();
|
||||
Function WriteStyle(value);
|
||||
Function ReadStyle();
|
||||
Function ReadStoryType();
|
||||
Function ReadStoryLength();
|
||||
Function WriteStart(value);
|
||||
Function ReadStart();
|
||||
Function ReadSpellingErrors();
|
||||
Function WriteSpellingChecked(value);
|
||||
Function ReadSpellingChecked();
|
||||
Function WriteShowAll(value);
|
||||
Function ReadShowAll();
|
||||
Function ReadShapeRange();
|
||||
Function ReadShading();
|
||||
Function ReadSentences();
|
||||
Function ReadSections();
|
||||
Function ReadScripts();
|
||||
Function ReadRows();
|
||||
Function ReadRevisions();
|
||||
Function ReadReadabilityStatistics();
|
||||
Function ReadPreviousBookmarkID();
|
||||
Function ReadParentContentControl();
|
||||
Function ReadParagraphStyle();
|
||||
Function ReadParagraphs();
|
||||
Function WriteParagraphFormat(value);
|
||||
Function ReadParagraphFormat();
|
||||
Function ReadPageSetup();
|
||||
Function WriteOrientation(value);
|
||||
Function ReadOrientation();
|
||||
Function ReadOMaths();
|
||||
Function WriteNoProofing(value);
|
||||
Function ReadNoProofing();
|
||||
Function ReadNextStoryRange();
|
||||
Function ReadLocks();
|
||||
Function ReadListStyle();
|
||||
Function ReadListParagraphs();
|
||||
Function ReadListFormat();
|
||||
Function WriteLanguageIDOther(value);
|
||||
Function ReadLanguageIDOther();
|
||||
Function WriteLanguageIDFarEast(value);
|
||||
Function ReadLanguageIDFarEast();
|
||||
Function WriteLanguageID(value);
|
||||
Function ReadLanguageID();
|
||||
Function WriteLanguageDetected(value);
|
||||
Function ReadLanguageDetected();
|
||||
Function WriteKana(value);
|
||||
Function ReadKana();
|
||||
Function WriteItalicBi(value);
|
||||
Function ReadItalicBi();
|
||||
Function WriteItalic(value);
|
||||
Function ReadItalic();
|
||||
Function ReadIsEndOfRowMark();
|
||||
Function ReadInlineShapes();
|
||||
Function ReadInformation();
|
||||
Function WriteID(value);
|
||||
Function ReadID();
|
||||
Function ReadHyperlinks();
|
||||
Function ReadHTMLDivisions();
|
||||
Function WriteHorizontalInVertical(value);
|
||||
Function ReadHorizontalInVertical();
|
||||
Function WriteHighlightColorIndex(value);
|
||||
Function ReadHighlightColorIndex();
|
||||
Function ReadGrammaticalErrors();
|
||||
Function WriteGrammarChecked(value);
|
||||
Function ReadGrammarChecked();
|
||||
Function ReadFrames();
|
||||
Function ReadFormFields();
|
||||
Function WriteFormattedText(value);
|
||||
Function ReadFormattedText();
|
||||
Function ReadFootnotes();
|
||||
Function ReadFootnoteOptions();
|
||||
Function ReadFont();
|
||||
Function WriteFitTextWidth(value);
|
||||
Function ReadFitTextWidth();
|
||||
Function ReadFind();
|
||||
Function ReadFields();
|
||||
Function ReadEnhMetaFileBits();
|
||||
Function ReadEndnotes();
|
||||
Function ReadEndnoteOptions();
|
||||
Function WriteEnd(value);
|
||||
Function ReadEnd();
|
||||
Function WriteEmphasisMark(value);
|
||||
Function ReadEmphasisMark();
|
||||
Function ReadEditors();
|
||||
Function ReadDuplicate();
|
||||
Function ReadDocument();
|
||||
Function WriteDisableCharacterSpaceGrid(value);
|
||||
Function ReadDisableCharacterSpaceGrid();
|
||||
Function ReadContentControls();
|
||||
Function ReadConflicts();
|
||||
Function ReadComments();
|
||||
Function WriteCombineCharacters(value);
|
||||
Function ReadCombineCharacters();
|
||||
Function ReadColumns();
|
||||
Function WriteCharacterWidth(value);
|
||||
Function ReadCharacterWidth();
|
||||
Function ReadCharacterStyle();
|
||||
Function ReadCharacters();
|
||||
Function ReadCells();
|
||||
Function WriteCase(value);
|
||||
Function ReadCase();
|
||||
Function ReadBorders(index);
|
||||
Function ReadBookmarks();
|
||||
Function ReadBookmarkID();
|
||||
Function WriteBoldBi(value);
|
||||
Function ReadBoldBi();
|
||||
Function WriteBold(value);
|
||||
Function ReadBold();
|
||||
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxRange.Init(pbegin, pend, arr);
|
||||
Begin
|
||||
range_arr_ := arr;
|
||||
begin_ := pbegin;
|
||||
end_ := pend;
|
||||
range_font_ := new TSDocxFontRange(self.Application, self.Creator, self);
|
||||
range_font_.Init(range_arr_);
|
||||
End;
|
||||
|
||||
Function TSDocxRange.SetRangeArr(arr);
|
||||
Begin
|
||||
range_arr_ := arr;
|
||||
range_font_ := new TSDocxFontRange(self.Application, self.Creator, self);
|
||||
range_font_.Init(range_arr_);
|
||||
End;
|
||||
|
||||
Function TSDocxRange.CopyRunFormat(sourceRun, destRun);
|
||||
Begin
|
||||
rpr := sourceRun.FirstChildElement("w:rPr");
|
||||
marshal := rpr.Marshal();
|
||||
node := class(TSXml).GetNode(destRun, "w:rPr", "first");
|
||||
class(TSXml).UpdateNode(node, marshal[0]["attribute"], marshal[0]["children"]);
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxRange.InsertAfter(Text);
|
||||
Begin
|
||||
paragraph := range_arr_[length(range_arr_)-1]["tparagraph"];
|
||||
if paragraph.Empty() then
|
||||
begin
|
||||
run := paragraph.AppendRun();
|
||||
run.AddText(Text);
|
||||
paragraph.CopyRunFormat(false, run.Root());
|
||||
end
|
||||
else begin
|
||||
trun := range_arr_[length(range_arr_)-1]["trun"];
|
||||
run := paragraph.AppendRun(trun);
|
||||
run.AddText(Text);
|
||||
CopyRunFormat(trun.Root(), run.Root());
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxRange.InsertBefore(Text);
|
||||
Begin
|
||||
paragraph := range_arr_[0]["tparagraph"];
|
||||
if paragraph.Empty() then
|
||||
begin
|
||||
run := paragraph.AppendRun();
|
||||
run.AddText(Text);
|
||||
paragraph.CopyRunFormat(false, run.Root());
|
||||
end
|
||||
else begin
|
||||
trun := range_arr_[0]["trun"];
|
||||
node := trun.Root().PrevElement();
|
||||
if not ifObj(node) then node := trun.Root();
|
||||
run := paragraph.PrependRun(trun);
|
||||
run.AddText(Text);
|
||||
CopyRunFormat(node, run.Root());
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxRange.InsertBreak(Type);
|
||||
Begin
|
||||
pf := function(t, c);
|
||||
begin
|
||||
range_arr_[0] := class(TSWdCommon).SplitSingleRangeRun(range_arr_[0]);
|
||||
run := range_arr_[0]["trun"];
|
||||
run.Br.Type := t;
|
||||
run.Br.Clear := c;
|
||||
run.ClearText();
|
||||
run.Apply();
|
||||
end
|
||||
if ifnil(Type) then Type := TSDocxEnumerations.wdPageBreak();
|
||||
case Type of
|
||||
TSDocxEnumerations.wdColumnBreak():
|
||||
return;
|
||||
|
||||
TSDocxEnumerations.wdLineBreak():
|
||||
##pf("textWrapping", nil);
|
||||
|
||||
TSDocxEnumerations.wdLineBreakClearLeft():
|
||||
##pf("textWrapping", "left");
|
||||
|
||||
TSDocxEnumerations.wdLineBreakClearRight():
|
||||
##pf("textWrapping", "right");
|
||||
|
||||
TSDocxEnumerations.wdPageBreak(): // TODO:需要切割段落
|
||||
return;
|
||||
TSDocxEnumerations.wdSectionBreakContinuous():
|
||||
return;
|
||||
TSDocxEnumerations.wdSectionBreakEvenPage():
|
||||
return;
|
||||
TSDocxEnumerations.wdSectionBreakNextPage():
|
||||
return;
|
||||
TSDocxEnumerations.wdSectionBreakOddPage():
|
||||
return;
|
||||
|
||||
TSDocxEnumerations.wdTextWrappingBreak():
|
||||
##pf("textWrapping", "all");
|
||||
end;
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxRange.WriteBoldBi(value);
|
||||
Begin
|
||||
range_font_.BoldBi := value;
|
||||
End;
|
||||
Function TSDocxRange.ReadBoldBi();
|
||||
Begin
|
||||
return range_font_.BoldBi;
|
||||
End;
|
||||
Function TSDocxRange.WriteBold(value);
|
||||
Begin
|
||||
range_font_.Bold := value;
|
||||
End;
|
||||
Function TSDocxRange.ReadBold();
|
||||
Begin
|
||||
return range_font_.Bold;
|
||||
End;
|
||||
|
||||
Function TSDocxRange.ReadFont();
|
||||
Begin
|
||||
return range_font_;
|
||||
End;
|
||||
|
||||
Function TSDocxRange.ReadBorders(index);
|
||||
Begin
|
||||
borders_obj := new TSDocxBordersRange(self.Application, self.Creator, self);
|
||||
borders_obj.Init(range_arr_);
|
||||
return ifnil(index) ? borders_obj : borders_obj.Item(index);
|
||||
End;
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
Type TSDocxRow = Class(TSVbaBase)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(table, row);
|
||||
|
|
|
|||
|
|
@ -153,3 +153,8 @@ Begin
|
|||
class(TSXml).RemoveNode(table_.Root(), "w:tblPr/w:tblOverlap");
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxRows.ReadCount();
|
||||
Begin
|
||||
return table_.Rows();
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
Type TSDocxShading = Class(TSVbaBase)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(pr);
|
||||
|
|
@ -27,7 +28,7 @@ End;
|
|||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxShading.Init(application, pr);
|
||||
Function TSDocxShading.Init(pr);
|
||||
Begin
|
||||
pr_ := pr;
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ public
|
|||
private
|
||||
docx_;
|
||||
table_; // TOfficeObj('TTable') 对象
|
||||
range_;
|
||||
|
||||
public
|
||||
Function ApplyStyleDirectFormatting(StyleName);
|
||||
|
|
@ -105,77 +106,87 @@ Function TSDocxTable.Init(docx, table);
|
|||
Begin
|
||||
docx_ := docx;
|
||||
table_ := table;
|
||||
range_ := nil;
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxTable.ApplyStyleDirectFormatting(StyleName);
|
||||
Begin
|
||||
table_.TblPr.StyleId := docx_.StyleObject().GetStyle(StyleName).Value('StyleId');
|
||||
table_.Apply();
|
||||
table_.TblPr.Update();
|
||||
End;
|
||||
|
||||
Function TSDocxTable.AutoFitBehavior(Behavior);
|
||||
Begin
|
||||
// TODO : 这里应该使用递归去处理每个单元格
|
||||
// TODO : 等cell方法完善
|
||||
case Behavior of
|
||||
TSDocxEnumerations.wdAutoFitContent():
|
||||
begin
|
||||
table_.TblPr.WidthType := "auto";
|
||||
table_.TblPr.Width := 0;
|
||||
table_.TblApply();
|
||||
col := table_.Cols();
|
||||
row := table_.Rows();
|
||||
for i:=1 to row do
|
||||
begin
|
||||
for j:=1 to col do
|
||||
begin
|
||||
cell := table_.Cell(i, j);
|
||||
cell.TcPr.Type := "auto";
|
||||
cell.TcPr.Width := 0;
|
||||
cell.Apply();
|
||||
end
|
||||
end
|
||||
pr_width_type := "auto";
|
||||
pr_width_value := 0;
|
||||
width_value := 0;
|
||||
width_type := "auto";
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdAutoFitFixed():
|
||||
begin
|
||||
// 需要搞懂算法
|
||||
pr_width_type := "dxa";
|
||||
pr_width_value := 0;
|
||||
end
|
||||
|
||||
TSDocxEnumerations.wdAutoFitWindow():
|
||||
begin
|
||||
table_.TblPr.WidthType := "pct";
|
||||
table_.TblPr.Width := 5000;
|
||||
table_.Apply();
|
||||
pr_width_type := "pct";
|
||||
pr_width_value := 5000;
|
||||
width_type := "pct";
|
||||
width_value := integer(5000 / table_.Cols());
|
||||
end
|
||||
End;
|
||||
table_.TblPr.WidthType := pr_width_type;
|
||||
table_.TblPr.Width := pr_width_value;
|
||||
table_.TblPr.Update();
|
||||
|
||||
for r:=1 to table_.Rows() do
|
||||
begin
|
||||
for c:=1 to table_.Cols() do
|
||||
begin
|
||||
cel := table_.GetCell(r, c);
|
||||
if ifnil(cel) then return nil;
|
||||
tcpr_node := class(TSXml).GetNode(cel[0], "w:tcPr", "first");
|
||||
tcpr := TOfficeObj("TwTcPr");
|
||||
tcpr.InitRootNode(tcpr_node);
|
||||
tcpr.Width := width_value;
|
||||
tcpr.Type := width_type;
|
||||
tcpr.Update();
|
||||
end
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxTable.Cell(Row, Column);
|
||||
Begin
|
||||
cell_obj := new TSDocxCell(self.Application, self.Creator, self);
|
||||
cell_obj.Init(table_, Row, Column);
|
||||
cell_obj := new TSDocxCell(self.Application, self.Creator, self.Parent);
|
||||
cell_obj.Init(docx_, table_, Row, Column);
|
||||
return cell_obj;
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxTable.ReadBorders(index);
|
||||
Begin
|
||||
borders_obj := new TSDocxBordersTable(self.Application, self.Creator, self);
|
||||
borders_obj := new TSDocxBordersTable(self.Application, self.Creator, self.Parent);
|
||||
borders_obj.Init(table_);
|
||||
return ifnil(index) ? borders_obj : borders_obj[index];
|
||||
End;
|
||||
|
||||
Function TSDocxTable.ReadColumns(index);
|
||||
Begin
|
||||
columns_obj := new TSDocxColumns(self.Application, self.Creator, self);
|
||||
columns_obj.Init(table);
|
||||
columns_obj := new TSDocxColumns(self.Application, self.Creator, self.Parent);
|
||||
columns_obj.Init(table_);
|
||||
return ifnil(index) ? columns_obj : columns_obj[index];
|
||||
End;
|
||||
|
||||
Function TSDocxTable.ReadRows(index);
|
||||
Begin
|
||||
rows_obj := new TSDocxRows(self.Application, self.Creator, self);
|
||||
rows_obj := new TSDocxRows(self.Application, self.Creator, self.Parent);
|
||||
rows_obj.Init(table_);
|
||||
return ifnil(index) ? rows_obj : rows_obj[index];
|
||||
End;
|
||||
|
|
@ -193,3 +204,18 @@ End;
|
|||
Function TSDocxTable.ReadPreferredWidth();
|
||||
Begin
|
||||
End;
|
||||
|
||||
Function TSDocxTable.ReadRange();
|
||||
Begin
|
||||
if ifnil(range_) then
|
||||
begin
|
||||
pbegin := 0;
|
||||
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_.Init(pbegin, pend, arr);
|
||||
end
|
||||
return range_;
|
||||
End;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,445 @@
|
|||
Type TSDocxBorder = Class(TSVbaBase)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(borders);
|
||||
|
||||
protected
|
||||
border_;
|
||||
color_;
|
||||
color_index_;
|
||||
|
||||
public
|
||||
property ArtStyle read ReadArtStyle write WriteArtStyle;
|
||||
property ArtWidth read ReadArtWidth write WriteArtWidth;
|
||||
property Color read ReadColor write WriteColor;
|
||||
property ColorIndex read ReadColorIndex write WriteColorIndex;
|
||||
property Inside read ReadInside;
|
||||
property LineStyle read ReadLineStyle write WriteLineStyle;
|
||||
property LineWidth read ReadLineWidth write WriteLineWidth;
|
||||
property Visible read ReadVisible write WriteVisible;
|
||||
Function WriteVisible(value);virtual;
|
||||
Function ReadVisible();virtual;
|
||||
Function WriteLineWidth(value);virtual;
|
||||
Function ReadLineWidth();virtual;
|
||||
Function WriteLineStyle(value);virtual;
|
||||
Function ReadLineStyle();virtual;
|
||||
Function ReadInside();virtual; // don't complete
|
||||
Function WriteColorIndex(value);virtual;
|
||||
Function ReadColorIndex();virtual;
|
||||
Function WriteColor(value);virtual;
|
||||
Function ReadColor();virtual;
|
||||
Function WriteArtWidth(value);virtual;
|
||||
Function ReadArtWidth();virtual;
|
||||
Function WriteArtStyle(value);virtual;
|
||||
Function ReadArtStyle();virtual;
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBorder.Init(border);
|
||||
Begin
|
||||
border_ := border;
|
||||
color_index_ := TSWdColorIndex();
|
||||
color_ := TSWdColor();
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxBorder.WriteArtStyle(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdArtApples():
|
||||
border_.Val := "apples";
|
||||
// TSDocxEnumerations.wdArtArchedScallops():
|
||||
// TSDocxEnumerations.wdArtBabyPacifier():
|
||||
// TSDocxEnumerations.wdArtBabyRattle():
|
||||
// TSDocxEnumerations.wdArtBalloons3Colors():
|
||||
// TSDocxEnumerations.wdArtBalloonsHotAir():
|
||||
// TSDocxEnumerations.wdArtBasicBlackDashes():
|
||||
// TSDocxEnumerations.wdArtBasicBlackDots():
|
||||
// TSDocxEnumerations.wdArtBasicBlackSquares():
|
||||
// TSDocxEnumerations.wdArtBasicThinLines():
|
||||
// TSDocxEnumerations.wdArtBasicWhiteDashes():
|
||||
// TSDocxEnumerations.wdArtBasicWhiteDots():
|
||||
// TSDocxEnumerations.wdArtBasicWhiteSquares():
|
||||
// TSDocxEnumerations.wdArtBasicWideInline():
|
||||
// TSDocxEnumerations.wdArtBasicWideMidline():
|
||||
// TSDocxEnumerations.wdArtBasicWideOutline():
|
||||
// TSDocxEnumerations.wdArtBats():
|
||||
// TSDocxEnumerations.wdArtBirds():
|
||||
// TSDocxEnumerations.wdArtBirdsFlight():
|
||||
// TSDocxEnumerations.wdArtCabins():
|
||||
// TSDocxEnumerations.wdArtCakeSlice():
|
||||
// TSDocxEnumerations.wdArtCandyCorn():
|
||||
// TSDocxEnumerations.wdArtCelticKnotwork():
|
||||
// TSDocxEnumerations.wdArtCertificateBanner():
|
||||
// TSDocxEnumerations.wdArtChainLink():
|
||||
// TSDocxEnumerations.wdArtChampagneBottle():
|
||||
// TSDocxEnumerations.wdArtCheckedBarBlack():
|
||||
// TSDocxEnumerations.wdArtCheckedBarColor():
|
||||
// TSDocxEnumerations.wdArtCheckered():
|
||||
// TSDocxEnumerations.wdArtChristmasTree():
|
||||
// TSDocxEnumerations.wdArtCirclesLines():
|
||||
// TSDocxEnumerations.wdArtCirclesRectangles():
|
||||
// TSDocxEnumerations.wdArtClassicalWave():
|
||||
// TSDocxEnumerations.wdArtClocks():
|
||||
// TSDocxEnumerations.wdArtCompass():
|
||||
// TSDocxEnumerations.wdArtConfetti():
|
||||
// TSDocxEnumerations.wdArtConfettiGrays():
|
||||
// TSDocxEnumerations.wdArtConfettiOutline():
|
||||
// TSDocxEnumerations.wdArtConfettiStreamers():
|
||||
// TSDocxEnumerations.wdArtConfettiWhite():
|
||||
// TSDocxEnumerations.wdArtCornerTriangles():
|
||||
// TSDocxEnumerations.wdArtCouponCutoutDashes():
|
||||
// TSDocxEnumerations.wdArtCouponCutoutDots():
|
||||
// TSDocxEnumerations.wdArtCrazyMaze():
|
||||
// TSDocxEnumerations.wdArtCreaturesButterfly():
|
||||
// TSDocxEnumerations.wdArtCreaturesFish():
|
||||
// TSDocxEnumerations.wdArtCreaturesInsects():
|
||||
// TSDocxEnumerations.wdArtCreaturesLadyBug():
|
||||
// TSDocxEnumerations.wdArtCrossStitch():
|
||||
// TSDocxEnumerations.wdArtCup():
|
||||
// TSDocxEnumerations.wdArtDecoArch():
|
||||
// TSDocxEnumerations.wdArtDecoArchColor():
|
||||
// TSDocxEnumerations.wdArtDecoBlocks():
|
||||
// TSDocxEnumerations.wdArtDiamondsGray():
|
||||
// TSDocxEnumerations.wdArtDoubleD():
|
||||
// TSDocxEnumerations.wdArtDoubleDiamonds():
|
||||
// TSDocxEnumerations.wdArtEarth1():
|
||||
// TSDocxEnumerations.wdArtEarth2():
|
||||
// TSDocxEnumerations.wdArtEclipsingSquares1():
|
||||
// TSDocxEnumerations.wdArtEclipsingSquares2():
|
||||
// TSDocxEnumerations.wdArtEggsBlack():
|
||||
// TSDocxEnumerations.wdArtFans():
|
||||
// TSDocxEnumerations.wdArtFilm():
|
||||
// TSDocxEnumerations.wdArtFirecrackers():
|
||||
// TSDocxEnumerations.wdArtFlowersBlockPrint():
|
||||
// TSDocxEnumerations.wdArtFlowersDaisies():
|
||||
// TSDocxEnumerations.wdArtFlowersModern1():
|
||||
// TSDocxEnumerations.wdArtFlowersModern2():
|
||||
// TSDocxEnumerations.wdArtFlowersPansy():
|
||||
// TSDocxEnumerations.wdArtFlowersRedRose():
|
||||
// TSDocxEnumerations.wdArtFlowersRoses():
|
||||
// TSDocxEnumerations.wdArtFlowersTeacup():
|
||||
// TSDocxEnumerations.wdArtFlowersTiny():
|
||||
// TSDocxEnumerations.wdArtGems():
|
||||
// TSDocxEnumerations.wdArtGingerbreadMan():
|
||||
// TSDocxEnumerations.wdArtGradient():
|
||||
// TSDocxEnumerations.wdArtHandmade1():
|
||||
// TSDocxEnumerations.wdArtHandmade2():
|
||||
// TSDocxEnumerations.wdArtHeartBalloon():
|
||||
// TSDocxEnumerations.wdArtHeartGray():
|
||||
// TSDocxEnumerations.wdArtHearts():
|
||||
// TSDocxEnumerations.wdArtHeebieJeebies():
|
||||
// TSDocxEnumerations.wdArtHolly():
|
||||
// TSDocxEnumerations.wdArtHouseFunky():
|
||||
// TSDocxEnumerations.wdArtHypnotic():
|
||||
// TSDocxEnumerations.wdArtIceCreamCones():
|
||||
// TSDocxEnumerations.wdArtLightBulb():
|
||||
// TSDocxEnumerations.wdArtLightning1():
|
||||
// TSDocxEnumerations.wdArtLightning2():
|
||||
// TSDocxEnumerations.wdArtMapleLeaf():
|
||||
// TSDocxEnumerations.wdArtMapleMuffins():
|
||||
// TSDocxEnumerations.wdArtMapPins():
|
||||
// TSDocxEnumerations.wdArtMarquee():
|
||||
// TSDocxEnumerations.wdArtMarqueeToothed():
|
||||
// TSDocxEnumerations.wdArtMoons():
|
||||
// TSDocxEnumerations.wdArtMosaic():
|
||||
// TSDocxEnumerations.wdArtMusicNotes():
|
||||
// TSDocxEnumerations.wdArtNorthwest():
|
||||
// TSDocxEnumerations.wdArtOvals():
|
||||
// TSDocxEnumerations.wdArtPackages():
|
||||
// TSDocxEnumerations.wdArtPalmsBlack():
|
||||
// TSDocxEnumerations.wdArtPalmsColor():
|
||||
// TSDocxEnumerations.wdArtPaperClips():
|
||||
// TSDocxEnumerations.wdArtPapyrus():
|
||||
// TSDocxEnumerations.wdArtPartyFavor():
|
||||
// TSDocxEnumerations.wdArtPartyGlass():
|
||||
// TSDocxEnumerations.wdArtPencils():
|
||||
// TSDocxEnumerations.wdArtPeople():
|
||||
// TSDocxEnumerations.wdArtPeopleHats():
|
||||
// TSDocxEnumerations.wdArtPeopleWaving():
|
||||
// TSDocxEnumerations.wdArtPoinsettias():
|
||||
// TSDocxEnumerations.wdArtPostageStamp():
|
||||
// TSDocxEnumerations.wdArtPumpkin1():
|
||||
// TSDocxEnumerations.wdArtPushPinNote1():
|
||||
// TSDocxEnumerations.wdArtPushPinNote2():
|
||||
// TSDocxEnumerations.wdArtPyramids():
|
||||
// TSDocxEnumerations.wdArtPyramidsAbove():
|
||||
// TSDocxEnumerations.wdArtQuadrants():
|
||||
// TSDocxEnumerations.wdArtRings():
|
||||
// TSDocxEnumerations.wdArtSafari():
|
||||
// TSDocxEnumerations.wdArtSawtooth():
|
||||
// TSDocxEnumerations.wdArtSawtoothGray():
|
||||
// TSDocxEnumerations.wdArtScaredCat():
|
||||
// TSDocxEnumerations.wdArtSeattle():
|
||||
// TSDocxEnumerations.wdArtShadowedSquares():
|
||||
// TSDocxEnumerations.wdArtSharksTeeth():
|
||||
// TSDocxEnumerations.wdArtShorebirdTracks():
|
||||
// TSDocxEnumerations.wdArtSkyrocket():
|
||||
// TSDocxEnumerations.wdArtSnowflakeFancy():
|
||||
// TSDocxEnumerations.wdArtSnowflakes():
|
||||
// TSDocxEnumerations.wdArtSombrero():
|
||||
// TSDocxEnumerations.wdArtSouthwest():
|
||||
// TSDocxEnumerations.wdArtStars():
|
||||
// TSDocxEnumerations.wdArtStars3D():
|
||||
// TSDocxEnumerations.wdArtStarsBlack():
|
||||
// TSDocxEnumerations.wdArtStarsShadowed():
|
||||
// TSDocxEnumerations.wdArtStarsTop():
|
||||
// TSDocxEnumerations.wdArtSun():
|
||||
// TSDocxEnumerations.wdArtSwirligig():
|
||||
// TSDocxEnumerations.wdArtTornPaper():
|
||||
// TSDocxEnumerations.wdArtTornPaperBlack():
|
||||
// TSDocxEnumerations.wdArtTrees():
|
||||
// TSDocxEnumerations.wdArtTriangleParty():
|
||||
// TSDocxEnumerations.wdArtTriangles():
|
||||
// TSDocxEnumerations.wdArtTribal1():
|
||||
// TSDocxEnumerations.wdArtTribal2():
|
||||
// TSDocxEnumerations.wdArtTribal3():
|
||||
// TSDocxEnumerations.wdArtTribal4():
|
||||
// TSDocxEnumerations.wdArtTribal5():
|
||||
// TSDocxEnumerations.wdArtTribal6():
|
||||
// TSDocxEnumerations.wdArtTwistedLines1():
|
||||
// TSDocxEnumerations.wdArtTwistedLines2():
|
||||
// TSDocxEnumerations.wdArtVine():
|
||||
// TSDocxEnumerations.wdArtWaveline():
|
||||
// TSDocxEnumerations.wdArtWeavingAngles():
|
||||
// TSDocxEnumerations.wdArtWeavingBraid():
|
||||
// TSDocxEnumerations.wdArtWeavingRibbon():
|
||||
// TSDocxEnumerations.wdArtWeavingStrips():
|
||||
// TSDocxEnumerations.wdArtWhiteFlowers():
|
||||
// TSDocxEnumerations.wdArtWoodwork():
|
||||
// TSDocxEnumerations.wdArtXIllusions():
|
||||
// TSDocxEnumerations.wdArtZanyTriangles():
|
||||
// TSDocxEnumerations.wdArtZigZag():
|
||||
// TSDocxEnumerations.wdArtZigZagStitch():
|
||||
end;
|
||||
border_.Update("first");
|
||||
End;
|
||||
Function TSDocxBorder.ReadArtStyle();virtual;
|
||||
Begin
|
||||
value := border_.Value("Val");
|
||||
case value of
|
||||
"apples": return TSDocxEnumerations.wdArtApples();
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxBorder.WriteArtWidth(value);virtual;
|
||||
Begin
|
||||
border_.Size := value;
|
||||
border_.Update("first");
|
||||
End;
|
||||
Function TSDocxBorder.ReadArtWidth();virtual;
|
||||
Begin
|
||||
return border_.Value("Size");
|
||||
End;
|
||||
|
||||
Function TSDocxBorder.WriteColor(value);virtual;
|
||||
Begin
|
||||
border_.Color := color_[value];
|
||||
border_.Update("first");
|
||||
End;
|
||||
Function TSDocxBorder.ReadColor();virtual;
|
||||
Begin
|
||||
return color_[border_.Value("Color")];
|
||||
End;
|
||||
|
||||
Function TSDocxBorder.WriteColorIndex(value);virtual;
|
||||
Begin
|
||||
color := color_index_[value];
|
||||
if ifnil(color) then border_.Root().DeleteAttribute("w:color");
|
||||
else begin
|
||||
border_.Color := color;
|
||||
border_.Update("first");
|
||||
end
|
||||
End;
|
||||
Function TSDocxBorder.ReadColorIndex();virtual;
|
||||
Begin
|
||||
return color_index_[border_.Value("Color")];
|
||||
End;
|
||||
|
||||
Function TSDocxBorder.WriteLineStyle(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdLineStyleDashDot():
|
||||
border_.Val := "dotDash";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashDotDot():
|
||||
border_.Val := "dotDotDash";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashDotStroked():
|
||||
border_.Val := "dashDotStroked";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashLargeGap():
|
||||
border_.Val := "dashed";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDashSmallGap():
|
||||
border_.Val := "dashSmallGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDot():
|
||||
border_.Val := "dotted";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDouble():
|
||||
border_.Val := "double";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleDoubleWavy():
|
||||
border_.Val := "doubleWave";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleEmboss3D():
|
||||
border_.Val := "threeDEmboss";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleEngrave3D():
|
||||
border_.Val := "threeDEngrave";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleInset():
|
||||
border_.Val := "inset";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleNone():
|
||||
border_.Val := "none";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleOutset():
|
||||
border_.Val := "outset";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleSingle():
|
||||
border_.Val := "single";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleSingleWavy():
|
||||
border_.Val := "wave";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThickThinLargeGap():
|
||||
border_.Val := "thickThinLargeGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThickThinMedGap():
|
||||
border_.Val := "thickThinMediumGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThickThinSmallGap():
|
||||
border_.Val := "thickThinSmallGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickLargeGap():
|
||||
border_.Val := "thinThickLargeGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickMedGap():
|
||||
border_.Val := "thinThickMediumGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickSmallGap():
|
||||
border_.Val := "thinThickSmallGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickThinLargeGap():
|
||||
border_.Val := "thinThickThinLargeGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickThinMedGap():
|
||||
border_.Val := "thinThickThinMediumGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleThinThickThinSmallGap():
|
||||
border_.Val := "thinThickThinSmallGap";
|
||||
|
||||
TSDocxEnumerations.wdLineStyleTriple():
|
||||
border_.Val := "triple";
|
||||
|
||||
end;
|
||||
border_.Update("first");
|
||||
|
||||
End;
|
||||
|
||||
Function TSDocxBorder.ReadLineStyle();virtual;
|
||||
Begin
|
||||
value := border_.Value("Val");
|
||||
case value of
|
||||
"dotDash":
|
||||
return TSDocxEnumerations.wdLineStyleDashDot();
|
||||
|
||||
"dotDotDash":
|
||||
return TSDocxEnumerations.wdLineStyleDashDotDot();
|
||||
|
||||
"dashDotStroked":
|
||||
return TSDocxEnumerations.wdLineStyleDashDotStroked();
|
||||
|
||||
"dashed":
|
||||
return TSDocxEnumerations.wdLineStyleDashLargeGap();
|
||||
|
||||
"dashSmallGap":
|
||||
return TSDocxEnumerations.wdLineStyleDashSmallGap();
|
||||
|
||||
"dotted":
|
||||
return TSDocxEnumerations.wdLineStyleDot();
|
||||
|
||||
"double":
|
||||
return TSDocxEnumerations.wdLineStyleDouble();
|
||||
|
||||
"doubleWave":
|
||||
return TSDocxEnumerations.wdLineStyleDoubleWavy();
|
||||
|
||||
"threeDEmboss":
|
||||
return TSDocxEnumerations.wdLineStyleEmboss3D();
|
||||
|
||||
"threeDEngrave":
|
||||
return TSDocxEnumerations.wdLineStyleEngrave3D();
|
||||
|
||||
"inset":
|
||||
return TSDocxEnumerations.wdLineStyleInset();
|
||||
|
||||
"none":
|
||||
return TSDocxEnumerations.wdLineStyleNone();
|
||||
|
||||
"outset":
|
||||
return TSDocxEnumerations.wdLineStyleOutset();
|
||||
|
||||
"single":
|
||||
return TSDocxEnumerations.wdLineStyleSingle();
|
||||
|
||||
"wave":
|
||||
return TSDocxEnumerations.wdLineStyleSingleWavy();
|
||||
|
||||
"thickThinLargeGap":
|
||||
return TSDocxEnumerations.wdLineStyleThickThinLargeGap();
|
||||
|
||||
"thickThinMediumGap":
|
||||
return TSDocxEnumerations.wdLineStyleThickThinMedGap();
|
||||
|
||||
"thickThinSmallGap":
|
||||
return TSDocxEnumerations.wdLineStyleThickThinSmallGap();
|
||||
|
||||
"thinThickLargeGap":
|
||||
return TSDocxEnumerations.wdLineStyleThinThickLargeGap();
|
||||
|
||||
"thinThickMediumGap":
|
||||
return TSDocxEnumerations.wdLineStyleThinThickMedGap();
|
||||
|
||||
"thinThickSmallGap":
|
||||
return TSDocxEnumerations.wdLineStyleThinThickSmallGap();
|
||||
|
||||
"thinThickThinLargeGap":
|
||||
return TSDocxEnumerations.wdLineStyleThinThickThinLargeGap();
|
||||
|
||||
"thinThickThinMediumGap":
|
||||
return TSDocxEnumerations.wdLineStyleThinThickThinMedGap();
|
||||
|
||||
"thinThickThinSmallGap":
|
||||
return TSDocxEnumerations.wdLineStyleThinThickThinSmallGap();
|
||||
|
||||
"triple":
|
||||
return TSDocxEnumerations.wdLineStyleTriple();
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxBorder.WriteLineWidth(value);virtual;
|
||||
Begin
|
||||
border_.Size := value;
|
||||
border_.Update("first");
|
||||
End;
|
||||
Function TSDocxBorder.ReadLineWidth();virtual;
|
||||
Begin
|
||||
return border_.Value("Size");
|
||||
End;
|
||||
|
||||
Function TSDocxBorder.WriteVisible(value);virtual;
|
||||
Begin
|
||||
v := value ? "single" : "nil";
|
||||
border_.Update("first");
|
||||
End;
|
||||
Function TSDocxBorder.ReadVisible();virtual;
|
||||
Begin
|
||||
value := border_.Value("Val");
|
||||
return value = "nil" ? false : true;
|
||||
End;
|
||||
|
|
@ -0,0 +1,190 @@
|
|||
Type TSDocxBorderRange = Class(TSDocxBorder)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(arr, borderType);
|
||||
|
||||
private
|
||||
Function GetBorderObjectByNode(node);
|
||||
Function GetBorder(arr, hash);
|
||||
Function CallFunction(fname, value);overload;
|
||||
Function CallFunction(fname);overload;
|
||||
Function SplitRun();
|
||||
|
||||
private
|
||||
range_arr_;
|
||||
border_type_;
|
||||
split_flag_;
|
||||
|
||||
public
|
||||
Function WriteVisible(value);override;
|
||||
Function ReadVisible();override;
|
||||
Function WriteLineWidth(value);override;
|
||||
Function ReadLineWidth();override;
|
||||
Function WriteLineStyle(value);override;
|
||||
Function ReadLineStyle();override;
|
||||
Function WriteColorIndex(value);override;
|
||||
Function ReadColorIndex();override;
|
||||
Function WriteColor(value);override;
|
||||
Function ReadColor();override;
|
||||
Function WriteArtWidth(value);override;
|
||||
Function ReadArtWidth();override;
|
||||
Function WriteArtStyle(value);override;
|
||||
Function ReadArtStyle();override;
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBorderRange.Init(arr, borderType);
|
||||
Begin
|
||||
range_arr_ := arr;
|
||||
border_type_ := borderType;
|
||||
split_flag_ := false;
|
||||
class(TSDocxBorder).Init(nil);
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.SplitRun();
|
||||
Begin
|
||||
if split_flag_ then return;
|
||||
class(TSWdCommon).SplitRangeRun(range_arr_);
|
||||
self.Parent.SetRangeArr(range_arr_);
|
||||
split_flag_ := true;
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.GetBorder(arr, hash);
|
||||
Begin
|
||||
if arr["entirety"] then
|
||||
begin
|
||||
if not ifnil(hash[arr["entirety"]]) then nil;
|
||||
hash[arr["entirety"]] := true;
|
||||
border := GetBorderObjectByNode(arr["entirety"]);
|
||||
end
|
||||
else begin
|
||||
trun := arr["trun"];
|
||||
if not ifObj(trun.Root()) then return nil;
|
||||
border := new TSDocxBorder(self.Application, self.Creator, self.Parent);
|
||||
border.Init(trun.rPr.Bdr);
|
||||
end
|
||||
return border;
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.GetBorderObjectByNode(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.Borders(border_type_);
|
||||
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.Borders(border_type_);
|
||||
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.Borders(border_type_);
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.CallFunction(fname, value);overload;
|
||||
Begin
|
||||
SplitRun();
|
||||
hash := array();
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
begin
|
||||
border := GetBorder(range_arr_[i], hash);
|
||||
if ifnil(border) then continue;
|
||||
pf := FindFunction(fname, border);
|
||||
pf.Do(value);
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.CallFunction(fname);overload;
|
||||
Begin
|
||||
hash := array();
|
||||
ret := nil;
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
begin
|
||||
border := GetBorder(range_arr_[i], hash);
|
||||
if ifnil(border) then continue;
|
||||
pf := FindFunction(fname, border);
|
||||
r := pf.Do();
|
||||
if ifnil(ret) then ret := r;
|
||||
if ret <> r then return TSDocxEnumerations.WdUnderline();
|
||||
end
|
||||
return ret;
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxBorderRange.WriteVisible(value);override;
|
||||
Begin
|
||||
CallFunction("WriteVisible", value);
|
||||
End;
|
||||
Function TSDocxBorderRange.ReadVisible();override;
|
||||
Begin
|
||||
return CallFunction("ReadVisible");
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.WriteLineWidth(value);override;
|
||||
Begin
|
||||
CallFunction("WriteLineWidth", value);
|
||||
End;
|
||||
Function TSDocxBorderRange.ReadLineWidth();override;
|
||||
Begin
|
||||
return CallFunction("ReadLineWidth");
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.WriteLineStyle(value);override;
|
||||
Begin
|
||||
CallFunction("WriteLineStyle", value);
|
||||
End;
|
||||
Function TSDocxBorderRange.ReadLineStyle();override;
|
||||
Begin
|
||||
return CallFunction("ReadLineStyle");
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.WriteColorIndex(value);override;
|
||||
Begin
|
||||
CallFunction("WriteColorIndex", value);
|
||||
End;
|
||||
Function TSDocxBorderRange.ReadColorIndex();override;
|
||||
Begin
|
||||
return CallFunction("ReadColorIndex");
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.WriteColor(value);override;
|
||||
Begin
|
||||
CallFunction("WriteColor", value);
|
||||
End;
|
||||
Function TSDocxBorderRange.ReadColor();override;
|
||||
Begin
|
||||
return CallFunction("ReadColor");
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.WriteArtWidth(value);override;
|
||||
Begin
|
||||
CallFunction("WriteArtWidth", value);
|
||||
End;
|
||||
Function TSDocxBorderRange.ReadArtWidth();override;
|
||||
Begin
|
||||
return CallFunction("ReadArtWidth");
|
||||
End;
|
||||
|
||||
Function TSDocxBorderRange.WriteArtStyle(value);override;
|
||||
Begin
|
||||
CallFunction("WriteArtStyle", value);
|
||||
End;
|
||||
Function TSDocxBorderRange.ReadArtStyle();override;
|
||||
Begin
|
||||
return CallFunction("ReadArtStyle");
|
||||
End;
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
Type TSDocxBorderTable = Class(TSDocxBorder)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(table, borderType);
|
||||
|
||||
private
|
||||
Function CallFunction(pf, value);overload;
|
||||
Function CallFunction(pf);overload;
|
||||
|
||||
public
|
||||
Function WriteVisible(value);override;
|
||||
Function ReadVisible();override;
|
||||
Function WriteLineWidth(value);override;
|
||||
Function ReadLineWidth();override;
|
||||
Function WriteLineStyle(value);override;
|
||||
Function ReadLineStyle();override;
|
||||
Function WriteColorIndex(value);override;
|
||||
Function ReadColorIndex();override;
|
||||
Function WriteColor(value);override;
|
||||
Function ReadColor();override;
|
||||
Function WriteArtWidth(value);override;
|
||||
Function ReadArtWidth();override;
|
||||
Function WriteArtStyle(value);override;
|
||||
Function ReadArtStyle();override;
|
||||
|
||||
private
|
||||
table_;
|
||||
border_type_;
|
||||
cell_border_; // 对角线只需要处理cell
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBorderTable.Init(table, borderType);
|
||||
Begin
|
||||
table_ := table;
|
||||
border_type_ := borderType;
|
||||
cell_border_ := false;
|
||||
|
||||
case border_type_ of
|
||||
TSDocxEnumerations.wdBorderBottom():
|
||||
border_ := table_.TblPr.Borders.Bottom;
|
||||
TSDocxEnumerations.wdBorderHorizontal():
|
||||
border_ := table_.TblPr.Borders.InsideH;
|
||||
TSDocxEnumerations.wdBorderLeft():
|
||||
border_ := table_.TblPr.Borders.Left;
|
||||
TSDocxEnumerations.wdBorderRight():
|
||||
border_ := table_.TblPr.Borders.Right;
|
||||
TSDocxEnumerations.wdBorderTop():
|
||||
border_ := table_.TblPr.Borders.Top;
|
||||
TSDocxEnumerations.wdBorderVertical():
|
||||
border_ := table_.TblPr.Borders.InsideV;
|
||||
|
||||
TSDocxEnumerations.wdBorderDiagonalDown(),
|
||||
TSDocxEnumerations.wdBorderDiagonalUp():
|
||||
cell_border_ := true;
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.CallFunction(pf, value);overload;
|
||||
Begin
|
||||
// 对角线时候只需要处理cell
|
||||
if cell_border_ then
|
||||
begin
|
||||
for r:=1 to table_.Rows() do
|
||||
begin
|
||||
for c:=1 to table_.Cols() do
|
||||
begin
|
||||
cell_obj := new TSDocxCell(self.Application, self.Creator, self.Parent);
|
||||
cell_obj.Init(nil, table_, r, c);
|
||||
border := cell_obj.Borders(border_type_);
|
||||
fun := FindFunction(pf, border);
|
||||
fun.Do(value);
|
||||
end
|
||||
end
|
||||
end
|
||||
else begin
|
||||
##pf(value);
|
||||
end
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.CallFunction(pf);overload;
|
||||
Begin
|
||||
ret := nil;
|
||||
cur := nil;
|
||||
if cell_border_ then
|
||||
begin
|
||||
for r:=1 to table_.Rows() do
|
||||
begin
|
||||
for c:=1 to table_.Cols() do
|
||||
begin
|
||||
cell_obj := new TSDocxCell(self.Application, self.Creator, self.Parent);
|
||||
cell_obj.Init(nil, table_, r, c);
|
||||
border := cell_obj.Borders(border_type_);
|
||||
fun := FindFunction(pf, border);
|
||||
cur := fun.Do();
|
||||
if ifnil(ret) then ret := cur;
|
||||
if ret <> cur then return TSDocxEnumerations.wdUndefined();
|
||||
end
|
||||
end
|
||||
end
|
||||
else begin
|
||||
ret := ##pf();
|
||||
end
|
||||
return ret;
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxBorderTable.WriteVisible(value);override;
|
||||
Begin
|
||||
if cell_border_ then CallFunction("WriteVisible", value);
|
||||
else CallFunction(ThisFunction(class(TSDocxBorder).WriteVisible), value);
|
||||
End;
|
||||
Function TSDocxBorderTable.ReadVisible();override;
|
||||
Begin
|
||||
if cell_border_ then return CallFunction("ReadVisible");
|
||||
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadVisible));
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.WriteLineWidth(value);override;
|
||||
Begin
|
||||
if cell_border_ then CallFunction("WriteLineWidth", value);
|
||||
else CallFunction(ThisFunction(class(TSDocxBorder).WriteLineWidth), value);
|
||||
End;
|
||||
Function TSDocxBorderTable.ReadLineWidth();override;
|
||||
Begin
|
||||
if cell_border_ then return CallFunction("ReadLineWidth");
|
||||
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadLineWidth));
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.WriteLineStyle(value);override;
|
||||
Begin
|
||||
if cell_border_ then CallFunction("WriteLineStyle", value);
|
||||
else CallFunction(ThisFunction(class(TSDocxBorder).WriteLineStyle), value);
|
||||
End;
|
||||
Function TSDocxBorderTable.ReadLineStyle();override;
|
||||
Begin
|
||||
if cell_border_ then return CallFunction("ReadLineStyle");
|
||||
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadLineStyle));
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.WriteColorIndex(value);override;
|
||||
Begin
|
||||
if cell_border_ then CallFunction("WriteColorIndex", value);
|
||||
else CallFunction(ThisFunction(class(TSDocxBorder).WriteColorIndex), value);
|
||||
End;
|
||||
Function TSDocxBorderTable.ReadColorIndex();override;
|
||||
Begin
|
||||
if cell_border_ then return CallFunction("ReadColorIndex");
|
||||
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadColorIndex));
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.WriteColor(value);override;
|
||||
Begin
|
||||
if cell_border_ then CallFunction("WriteColor", value);
|
||||
else CallFunction(ThisFunction(class(TSDocxBorder).WriteColor), value);
|
||||
End;
|
||||
Function TSDocxBorderTable.ReadColor();override;
|
||||
Begin
|
||||
if cell_border_ then return CallFunction("ReadColor");
|
||||
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadColor));
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.WriteArtWidth(value);override;
|
||||
Begin
|
||||
if cell_border_ then CallFunction("WriteArtWidth", value);
|
||||
else CallFunction(ThisFunction(class(TSDocxBorder).WriteArtWidth), value);
|
||||
End;
|
||||
Function TSDocxBorderTable.ReadArtWidth();override;
|
||||
Begin
|
||||
if cell_border_ then return CallFunction("ReadArtWidth");
|
||||
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadArtWidth));
|
||||
End;
|
||||
|
||||
Function TSDocxBorderTable.WriteArtStyle(value);override;
|
||||
Begin
|
||||
if cell_border_ then CallFunction("WriteArtStyle", value);
|
||||
else CallFunction(ThisFunction(class(TSDocxBorder).WriteArtStyle), value);
|
||||
End;
|
||||
Function TSDocxBorderTable.ReadArtStyle();override;
|
||||
Begin
|
||||
if cell_border_ then return CallFunction("ReadArtStyle");
|
||||
else return CallFunction(ThisFunction(class(TSDocxBorder).ReadArtStyle));
|
||||
End;
|
||||
|
||||
|
|
@ -1,15 +1,12 @@
|
|||
Type TSDocxBorders = Class(TSVbaBase)
|
||||
|
||||
public
|
||||
Function Init(borders);
|
||||
Function Operator[](index);virtual;
|
||||
|
||||
private
|
||||
borders_;
|
||||
Function GetBorder(index);virtual;
|
||||
|
||||
public
|
||||
Function ApplyPageBordersToAllSections();
|
||||
Function Item(Index);
|
||||
Function Item(Index);virtual;
|
||||
|
||||
property AlwaysInFront read ReadAlwaysInFront write WriteAlwaysInFront;
|
||||
property Count read ReadCount;
|
||||
|
|
@ -85,20 +82,15 @@ End;
|
|||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBorders.Init(borders);
|
||||
Begin
|
||||
borders_ := borders;
|
||||
End;
|
||||
|
||||
Function Operator TSDocxBorders.[](index);virtual;
|
||||
Begin
|
||||
border_obj := new TSDocxBorder(self.Application, self.Creator, self);
|
||||
border_obj.Init(borders_, index);
|
||||
border_obj.Init(GetBorder(index));
|
||||
return border_obj;
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxBorders.Item(Index);
|
||||
Function TSDocxBorders.Item(Index);virtual;
|
||||
Begin
|
||||
return self[Index];
|
||||
End;
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
Type TSDocxBordersCell = Class(TSDocxBorders)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(cell);
|
||||
Function GetBorder(index);override;
|
||||
|
||||
private
|
||||
cell_;
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBordersCell.Init(cell);
|
||||
Begin
|
||||
cell_ := cell;
|
||||
End;
|
||||
|
||||
Function TSDocxBordersCell.GetBorder(index);override;
|
||||
Begin
|
||||
obj := cell_.TcPr.Borders;
|
||||
case index of
|
||||
TSDocxEnumerations.wdBorderBottom():
|
||||
border := obj.Bottom;
|
||||
TSDocxEnumerations.wdBorderDiagonalDown():
|
||||
border := obj.tl2br;
|
||||
TSDocxEnumerations.wdBorderDiagonalUp():
|
||||
border := obj.tr2bl;
|
||||
TSDocxEnumerations.wdBorderHorizontal():
|
||||
border := obj.InsideH;
|
||||
TSDocxEnumerations.wdBorderLeft():
|
||||
border := obj.Left;
|
||||
TSDocxEnumerations.wdBorderRight():
|
||||
border := obj.Right;
|
||||
TSDocxEnumerations.wdBorderTop():
|
||||
border := obj.Top;
|
||||
TSDocxEnumerations.wdBorderVertical():
|
||||
border := obj.InsideV;
|
||||
end;
|
||||
return border;
|
||||
End;
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
Type TSDocxBordersParagraph = Class(TSDocxBorders)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(Paragraph);
|
||||
Function GetBorder(index);override;
|
||||
|
||||
private
|
||||
paragraph_; // TOfficeObj("TParagraph")
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBordersParagraph.Init(paragraph);
|
||||
Begin
|
||||
paragraph_ := paragraph;
|
||||
End;
|
||||
|
||||
Function TSDocxBordersParagraph.GetBorder(index);override;
|
||||
Begin
|
||||
obj := paragraph_.pPr.Bdr;
|
||||
case index of
|
||||
TSDocxEnumerations.wdBorderBottom():
|
||||
border := obj.Bottom;
|
||||
TSDocxEnumerations.wdBorderLeft():
|
||||
border := obj.Left;
|
||||
TSDocxEnumerations.wdBorderRight():
|
||||
border := obj.Right;
|
||||
TSDocxEnumerations.wdBorderTop():
|
||||
border := obj.Top;
|
||||
TSDocxEnumerations.wdBorderHorizontal():
|
||||
border := obj.Between;
|
||||
else
|
||||
raise "段落不支持该边框类型";
|
||||
end;
|
||||
return border;
|
||||
End;
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
Type TSDocxBordersRange = Class(TSDocxBorders)
|
||||
|
||||
public
|
||||
Function Init(arr);
|
||||
Function Operator[](index);override;
|
||||
|
||||
private
|
||||
range_arr_;
|
||||
|
||||
public
|
||||
Function Item(Index);override;
|
||||
|
||||
End;
|
||||
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxBordersRange.Init(arr);
|
||||
Begin
|
||||
range_arr_ := arr;
|
||||
End;
|
||||
|
||||
Function Operator TSDocxBordersRange.[](index);override;
|
||||
Begin
|
||||
border_obj := new TSDocxBorderRange(self.Application, self.Creator, self.Parent);
|
||||
border_obj.Init(range_arr_, index);
|
||||
return border_obj;
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxBordersRange.Item(Index);override;
|
||||
Begin
|
||||
return self[Index];
|
||||
End;
|
||||
|
|
@ -2,7 +2,7 @@ Type TSDocxBordersTable = Class(TSDocxBorders)
|
|||
|
||||
public
|
||||
Function Init(table);
|
||||
Function Operator[](index);overload;
|
||||
Function Operator[](index);override;
|
||||
|
||||
private
|
||||
table_;
|
||||
|
|
@ -16,7 +16,7 @@ Begin
|
|||
table_ := table;
|
||||
End;
|
||||
|
||||
Function Operator TSDocxBordersTable.[](index);overload;
|
||||
Function Operator TSDocxBordersTable.[](index);override;
|
||||
Begin
|
||||
border_table_obj := new TSDocxBorderTable(self.Application, self.Creator, self.Parent);
|
||||
border_table_obj.Init(table_, index);
|
||||
|
|
@ -0,0 +1,732 @@
|
|||
Type TSDocxFont = Class(TSVbaBase)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(pr);
|
||||
|
||||
protected
|
||||
pr_;
|
||||
color_index_;
|
||||
color_;
|
||||
|
||||
public
|
||||
Function Grow();virtual;
|
||||
Function Reset();virtual;
|
||||
Function SetAsTemplateDefault();virtual;
|
||||
Function Shrink();virtual;
|
||||
|
||||
property AllCaps read ReadAllCaps write WriteAllCaps;
|
||||
property Bold read ReadBold write WriteBold;
|
||||
property BoldBi read ReadBoldBi write WriteBoldBi;
|
||||
property Borders read ReadBorders;
|
||||
property ColorIndex read ReadColorIndex write WriteColorIndex;
|
||||
property ColorIndexBi read ReadColorIndexBi write WriteColorIndexBi;
|
||||
property ContextualAlternates read ReadContextualAlternates write WriteContextualAlternates;
|
||||
property DiacriticColor read ReadDiacriticColor write WriteDiacriticColor;
|
||||
property DisableCharacterSpaceGrid read ReadDisableCharacterSpaceGrid write WriteDisableCharacterSpaceGrid;
|
||||
property DoubleStrikeThrough read ReadDoubleStrikeThrough write WriteDoubleStrikeThrough;
|
||||
property Duplicate read ReadDuplicate;
|
||||
property Emboss read ReadEmboss write WriteEmboss;
|
||||
property EmphasisMark read ReadEmphasisMark write WriteEmphasisMark;
|
||||
property Engrave read ReadEngrave write WriteEngrave;
|
||||
property Fill read ReadFill;
|
||||
property Glow read ReadGlow;
|
||||
property Hidden read ReadHidden write WriteHidden;
|
||||
property Italic read ReadItalic write WriteItalic;
|
||||
property ItalicBi read ReadItalicBi write WriteItalicBi;
|
||||
property Kerning read ReadKerning write WriteKerning;
|
||||
property Ligatures read ReadLigatures write WriteLigatures;
|
||||
property Line read ReadLine write WriteLine;
|
||||
property Name read ReadName write WriteName;
|
||||
property NameAscii read ReadNameAscii write WriteNameAscii;
|
||||
property NameBi read ReadNameBi write WriteNameBi;
|
||||
property NameFarEast read ReadNameFarEast write WriteNameFarEast;
|
||||
property NameOther read ReadNameOther write WriteNameOther;
|
||||
property NumberForm read ReadNumberForm write WriteNumberForm;
|
||||
property NumberSpacing read ReadNumberSpacing write WriteNumberSpacing;
|
||||
property Outline read ReadOutline write WriteOutline;
|
||||
property Position read ReadPosition write WritePosition;
|
||||
property Reflection read ReadReflection;
|
||||
property Scaling read ReadScaling write WriteScaling;
|
||||
property Shading read ReadShading;
|
||||
property Shadow read ReadShadow write WriteShadow;
|
||||
property Size read ReadSize write WriteSize;
|
||||
property SizeBi read ReadSizeBi write WriteSizeBi;
|
||||
property SmallCaps read ReadSmallCaps write WriteSmallCaps;
|
||||
property Spacing read ReadSpacing write WriteSpacing;
|
||||
property StrikeThrough read ReadStrikeThrough write WriteStrikeThrough;
|
||||
property StylisticSet read ReadStylisticSet write WriteStylisticSet;
|
||||
property Subscript read ReadSubscript write WriteSubscript;
|
||||
property Superscript read ReadSuperscript write WriteSuperscript;
|
||||
property TextColor read ReadTextColor;
|
||||
property TextShadow read ReadTextShadow;
|
||||
property ThreeD read ReadThreeD;
|
||||
property Underline read ReadUnderline write WriteUnderline;
|
||||
property UnderlineColor read ReadUnderlineColor write WriteUnderlineColor;
|
||||
Function WriteUnderlineColor(value);virtual;
|
||||
Function ReadUnderlineColor();virtual;
|
||||
Function WriteUnderline(value);virtual;
|
||||
Function ReadUnderline();virtual;
|
||||
Function ReadThreeD();virtual;
|
||||
Function ReadTextShadow();virtual;
|
||||
Function ReadTextColor();virtual;
|
||||
Function WriteSuperscript(value);virtual;
|
||||
Function ReadSuperscript();virtual;
|
||||
Function WriteSubscript(value);virtual;
|
||||
Function ReadSubscript();virtual;
|
||||
Function WriteStylisticSet(value);virtual;
|
||||
Function ReadStylisticSet();virtual;
|
||||
Function WriteStrikeThrough(value);virtual;
|
||||
Function ReadStrikeThrough();virtual;
|
||||
Function WriteSpacing(value);virtual;
|
||||
Function ReadSpacing();virtual;
|
||||
Function WriteSmallCaps(value);virtual;
|
||||
Function ReadSmallCaps();virtual;
|
||||
Function WriteSizeBi(value);virtual;
|
||||
Function ReadSizeBi();virtual;
|
||||
Function WriteSize(value);virtual;
|
||||
Function ReadSize();virtual;
|
||||
Function WriteShadow(value);virtual;
|
||||
Function ReadShadow();virtual;
|
||||
Function ReadShading();virtual;
|
||||
Function WriteScaling(value);virtual;
|
||||
Function ReadScaling();virtual;
|
||||
Function ReadReflection();virtual;
|
||||
Function WritePosition(value);virtual;
|
||||
Function ReadPosition();virtual;
|
||||
Function WriteOutline(value);virtual;
|
||||
Function ReadOutline();virtual;
|
||||
Function WriteNumberSpacing(value);virtual;
|
||||
Function ReadNumberSpacing();virtual;
|
||||
Function WriteNumberForm(value);virtual;
|
||||
Function ReadNumberForm();virtual;
|
||||
Function WriteNameOther(value);virtual;
|
||||
Function ReadNameOther();virtual;
|
||||
Function WriteNameFarEast(value);virtual;
|
||||
Function ReadNameFarEast();virtual;
|
||||
Function WriteNameBi(value);virtual;
|
||||
Function ReadNameBi();virtual;
|
||||
Function WriteNameAscii(value);virtual;
|
||||
Function ReadNameAscii();virtual;
|
||||
Function WriteName(value);virtual;
|
||||
Function ReadName();virtual;
|
||||
Function WriteLine(value);virtual;
|
||||
Function ReadLine();virtual;
|
||||
Function WriteLigatures(value);virtual;
|
||||
Function ReadLigatures();virtual;
|
||||
Function WriteKerning(value);virtual;
|
||||
Function ReadKerning();virtual;
|
||||
Function WriteItalicBi(value);virtual;
|
||||
Function ReadItalicBi();virtual;
|
||||
Function WriteItalic(value);virtual;
|
||||
Function ReadItalic();virtual;
|
||||
Function WriteHidden(value);virtual;
|
||||
Function ReadHidden();virtual;
|
||||
Function ReadGlow();virtual;
|
||||
Function ReadFill();virtual;
|
||||
Function WriteEngrave(value);virtual;
|
||||
Function ReadEngrave();virtual;
|
||||
Function WriteEmphasisMark(value);virtual;
|
||||
Function ReadEmphasisMark();virtual;
|
||||
Function WriteEmboss(value);virtual;
|
||||
Function ReadEmboss();virtual;
|
||||
Function ReadDuplicate();virtual;
|
||||
Function WriteDoubleStrikeThrough(value);virtual;
|
||||
Function ReadDoubleStrikeThrough();virtual;
|
||||
Function WriteDisableCharacterSpaceGrid(value);virtual;
|
||||
Function ReadDisableCharacterSpaceGrid();virtual;
|
||||
Function WriteDiacriticColor(value);virtual;
|
||||
Function ReadDiacriticColor();virtual;
|
||||
Function WriteContextualAlternates(value);virtual;
|
||||
Function ReadContextualAlternates();virtual;
|
||||
Function WriteColorIndexBi(value);virtual;
|
||||
Function ReadColorIndexBi();virtual;
|
||||
Function WriteColorIndex(value);virtual;
|
||||
Function ReadColorIndex();virtual;
|
||||
Function ReadBorders();virtual;
|
||||
Function WriteBoldBi(value);virtual;
|
||||
Function ReadBoldBi();virtual;
|
||||
Function WriteBold(value);virtual;
|
||||
Function ReadBold();virtual;
|
||||
Function WriteAllCaps(value);virtual;
|
||||
Function ReadAllCaps();virtual;
|
||||
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxFont.Init(pr);
|
||||
Begin
|
||||
pr_ := pr;
|
||||
color_index_ := TSWdColorIndex();
|
||||
color_ := TSWdColor();
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxFont.Reset();virtual;
|
||||
Begin
|
||||
pr_.Delete();
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSDocxFont.WriteAllCaps(value);virtual;
|
||||
Begin
|
||||
pr_.Caps := value = TSDocxEnumerations.wdToggle() ? _Not(self.Caps) : value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadAllCaps();virtual;
|
||||
Begin
|
||||
return pr_.Value("Caps");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteBold(value);virtual;
|
||||
Begin
|
||||
pr_.Bold := value = TSDocxEnumerations.wdToggle() ? _Not(self.Bold) : value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadBold();virtual;
|
||||
Begin
|
||||
return pr_.Value("Bold");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteBoldBi(value);virtual;
|
||||
Begin
|
||||
pr_.BoldBi := value = TSDocxEnumerations.wdToggle() ? _Not(self.BoldBi) : value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadBoldBi();virtual;
|
||||
Begin
|
||||
return pr_.Value("bCs");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteColorIndex(value);virtual;
|
||||
Begin
|
||||
color := color_index_[value];
|
||||
if ifnil(color) then pr_.Root().DeleteChild("w:color");
|
||||
else begin
|
||||
pr_.Color := color;
|
||||
pr_.Update("first");
|
||||
end
|
||||
End;
|
||||
Function TSDocxFont.ReadColorIndex();virtual;
|
||||
Begin
|
||||
return color_index_[pr_.Value("Color")];
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteColorIndexBi(value);virtual;
|
||||
Begin
|
||||
self.ColorIndex := value;
|
||||
End;
|
||||
Function TSDocxFont.ReadColorIndexBi();virtual;
|
||||
Begin
|
||||
return self.ColorIndex;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteContextualAlternates(value);virtual;
|
||||
Begin
|
||||
pr_.ContextualAlternates := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadContextualAlternates();virtual;
|
||||
Begin
|
||||
return pr_.Value("ContextualAlternates");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteDisableCharacterSpaceGrid(value);virtual;
|
||||
Begin
|
||||
pr_.SnapToGrid := value ? false : true;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadDisableCharacterSpaceGrid();virtual;
|
||||
Begin
|
||||
return pr_.Value("SnapToGrid") ? false : true;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteDoubleStrikeThrough(value);virtual;
|
||||
Begin
|
||||
pr_.dStrike := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadDoubleStrikeThrough();virtual;
|
||||
Begin
|
||||
return pr_.Value("dStrike");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.ReadDuplicate();virtual;
|
||||
Begin
|
||||
pr := pr_;
|
||||
return pr;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteEmboss(value);override;
|
||||
Begin
|
||||
pr_.Emboss := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadEmboss();override;
|
||||
Begin
|
||||
return pr_.Value("Emboss");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteEmphasisMark(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdEmphasisMarkNone:
|
||||
pr_.Em := "none";
|
||||
TSDocxEnumerations.wdEmphasisMarkOverComma:
|
||||
pr_.Em := "comma";
|
||||
TSDocxEnumerations.wdEmphasisMarkOverSolidCircle:
|
||||
pr_.Em := "dot";
|
||||
TSDocxEnumerations.wdEmphasisMarkOverWhiteCircle:
|
||||
pr_.Em := "circle";
|
||||
TSDocxEnumerations.wdEmphasisMarkUnderSolidCircle:
|
||||
pr_.Em := "underDot";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadEmphasisMark();virtual;
|
||||
Begin
|
||||
case pr_.Value("first") of
|
||||
"none":
|
||||
return TSDocxEnumerations.wdEmphasisMarkNone;
|
||||
"comma":
|
||||
return TSDocxEnumerations.wdEmphasisMarkOverComma;
|
||||
"dot":
|
||||
return TSDocxEnumerations.wdEmphasisMarkOverSolidCircle;
|
||||
"circle":
|
||||
return TSDocxEnumerations.wdEmphasisMarkOverWhiteCircle;
|
||||
"underDot":
|
||||
return TSDocxEnumerations.wdEmphasisMarkUnderSolidCircle;
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteEngrave(value);virtual;
|
||||
Begin
|
||||
pr_.ImPrint := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadEngrave();virtual;
|
||||
Begin
|
||||
return pr_.Value("ImPrint");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteHidden(value);virtual;
|
||||
Begin
|
||||
pr_.Vanish := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadHidden();virtual;
|
||||
Begin
|
||||
return pr_.Value("Vanish");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteItalic(value);virtual;
|
||||
Begin
|
||||
pr_.Italic := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadItalic();virtual;
|
||||
Begin
|
||||
return pr_.Value("Italic");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteItalicBi(value);virtual;
|
||||
Begin
|
||||
pr_.ICs := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadItalicBi();virtual;
|
||||
Begin
|
||||
return pr_.Value("ICs");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteKerning(value);virtual;
|
||||
Begin
|
||||
pr_.Kern := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadKerning();virtual;
|
||||
Begin
|
||||
return pr_.Value("Kern") / 2;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteLigatures(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdLigaturesAll():
|
||||
pr_.Ligatures := "all";
|
||||
TSDocxEnumerations.wdLigaturesContextual():
|
||||
pr_.Ligatures := "contextual";
|
||||
TSDocxEnumerations.wdLigaturesContextualDiscretional():
|
||||
pr_.Ligatures := "contextualDiscretional";
|
||||
TSDocxEnumerations.wdLigaturesContextualHistorical():
|
||||
pr_.Ligatures := "contextualHistorical";
|
||||
TSDocxEnumerations.wdLigaturesContextualHistoricalDiscretional():
|
||||
pr_.Ligatures := "contextualHistoricalDiscretional";
|
||||
TSDocxEnumerations.wdLigaturesDiscretional():
|
||||
pr_.Ligatures := "discretional";
|
||||
TSDocxEnumerations.wdLigaturesHistorical():
|
||||
pr_.Ligatures := "historical";
|
||||
TSDocxEnumerations.wdLigaturesHistoricalDiscretional():
|
||||
pr_.Ligatures := "historicalDiscretional";
|
||||
TSDocxEnumerations.wdLigaturesNone():
|
||||
pr_.Ligatures := "none";
|
||||
TSDocxEnumerations.wdLigaturesStandard():
|
||||
pr_.Ligatures := "standard";
|
||||
TSDocxEnumerations.wdLigaturesStandardContextual():
|
||||
pr_.Ligatures := "standardContextual";
|
||||
TSDocxEnumerations.wdLigaturesStandardContextualDiscretional():
|
||||
pr_.Ligatures := "standardContextualDiscretional";
|
||||
TSDocxEnumerations.wdLigaturesStandardContextualHistorical():
|
||||
pr_.Ligatures := "standardContextualHistorical";
|
||||
TSDocxEnumerations.wdLigaturesStandardDiscretional():
|
||||
pr_.Ligatures := "standardDiscretional";
|
||||
TSDocxEnumerations.wdLigaturesStandardHistorical():
|
||||
pr_.Ligatures := "standardHistorical";
|
||||
TSDocxEnumerations.wdLigaturesStandardHistoricalDiscretional():
|
||||
pr_.Ligatures := "standardHistoricalDiscretional";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadLigatures();virtual;
|
||||
Begin
|
||||
case pr_.Value("Ligatures") of
|
||||
"all":
|
||||
return TSDocxEnumerations.wdLigaturesAll();
|
||||
"contextual":
|
||||
return TSDocxEnumerations.wdLigaturesContextual();
|
||||
"contextualDiscretional":
|
||||
return TSDocxEnumerations.wdLigaturesContextualDiscretional();
|
||||
"contextualHistorical":
|
||||
return TSDocxEnumerations.wdLigaturesContextualHistorical();
|
||||
"contextualHistoricalDiscretional":
|
||||
return TSDocxEnumerations.wdLigaturesContextualHistoricalDiscretional();
|
||||
"discretional":
|
||||
return TSDocxEnumerations.wdLigaturesDiscretional();
|
||||
"historical":
|
||||
return TSDocxEnumerations.wdLigaturesHistorical();
|
||||
"historicalDiscretional":
|
||||
return TSDocxEnumerations.wdLigaturesHistoricalDiscretional();
|
||||
"none", nil:
|
||||
return TSDocxEnumerations.wdLigaturesNone();
|
||||
"standard":
|
||||
return TSDocxEnumerations.wdLigaturesStandard();
|
||||
"standardContextual":
|
||||
return TSDocxEnumerations.wdLigaturesStandardContextual();
|
||||
"standardContextualDiscretional":
|
||||
return TSDocxEnumerations.wdLigaturesStandardContextualDiscretional();
|
||||
"standardContextualHistorical":
|
||||
return TSDocxEnumerations.wdLigaturesStandardContextualHistorical();
|
||||
"standardDiscretional":
|
||||
return TSDocxEnumerations.wdLigaturesStandardDiscretional();
|
||||
"standardHistorical":
|
||||
return TSDocxEnumerations.wdLigaturesStandardHistorical();
|
||||
"standardHistoricalDiscretional":
|
||||
return TSDocxEnumerations.wdLigaturesStandardHistoricalDiscretional();
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteName(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.EastAsia := value;
|
||||
pr_.rFont.Ascii := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.ReadName();virtual;
|
||||
Begin
|
||||
return pr_.rFont.Value("EastAsia");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteNameAscii(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.Ascii := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNameAscii();virtual;
|
||||
Begin
|
||||
return pr_.rFont.Value("Ascii");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteNameBi(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.Cs := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNameBi();virtual;
|
||||
Begin
|
||||
return pr_.rFont.Value("Cs");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteNameFarEast(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.EastAsia := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNameFarEast();virtual;
|
||||
Begin
|
||||
ret := pr_.rFont.Value("EastAsia");
|
||||
return ret ? ret : "宋体";
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteNameOther(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.HAnsi := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.ReadNameOther();virtual;
|
||||
Begin
|
||||
return pr_.rFont.Value("HAnsi");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteNumberForm(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdNumberFormDefault():
|
||||
pr_.NumForm := "default";
|
||||
TSDocxEnumerations.wdNumberFormLining():
|
||||
pr_.NumForm := "lining";
|
||||
TSDocxEnumerations.wdNumberFormOldstyle():
|
||||
pr_.NumForm := "oldStyle";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNumberForm();virtual;
|
||||
Begin
|
||||
case pr_.Value("NumForm") of
|
||||
"default", nil:
|
||||
return TSDocxEnumerations.wdNumberFormDefault();
|
||||
"lining":
|
||||
return TSDocxEnumerations.wdNumberFormLining();
|
||||
"oldStyle":
|
||||
return TSDocxEnumerations.wdNumberFormOldstyle();
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteNumberSpacing(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdNumberSpacingDefault():
|
||||
pr_.NumSpacing := "default";
|
||||
TSDocxEnumerations.wdNumberSpacingProportional():
|
||||
pr_.NumSpacing := "proportional";
|
||||
TSDocxEnumerations.wdNumberSpacingTabular():
|
||||
pr_.NumSpacing := "tabular";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNumberSpacing();virtual;
|
||||
Begin
|
||||
case pr_.Value("NumSpacing") of
|
||||
"default", nil:
|
||||
return TSDocxEnumerations.wdNumberSpacingDefault();
|
||||
"proportional":
|
||||
return TSDocxEnumerations.wdNumberSpacingProportional();
|
||||
"tabular":
|
||||
return TSDocxEnumerations.wdNumberSpacingTabular();
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteOutline(value);virtual;
|
||||
Begin
|
||||
pr_.Outline := value = TSDocxEnumerations.wdToggle() ? _Not(self.Outline) : value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadOutline();virtual;
|
||||
Begin
|
||||
return pr_.Value("Outline");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WritePosition(value);virtual;
|
||||
Begin
|
||||
pr_.Position := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadPosition();virtual;
|
||||
Begin
|
||||
return pr_.Value("Position ") / 2;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteScaling(value);virtual;
|
||||
Begin
|
||||
pr_.W := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadScaling();virtual;
|
||||
Begin
|
||||
return pr_.Value("W");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteShadow(value);virtual;
|
||||
Begin
|
||||
pr_.Shadow := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadShadow();virtual;
|
||||
Begin
|
||||
return pr_.Value("Shadow");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteSize(value);virtual;
|
||||
Begin
|
||||
pr_.Sz := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSize();virtual;
|
||||
Begin
|
||||
return pr_.Value("Sz") / 2;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteSizeBi(value);virtual;
|
||||
Begin
|
||||
pr_.SzCs := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSizeBi();virtual;
|
||||
Begin
|
||||
return pr_.Value("SzCs") / 2;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteSmallCaps(value);virtual;
|
||||
Begin
|
||||
pr_.SmallCaps := value = TSDocxEnumerations.wdToggle() ? _Not(self.SmallCaps) : value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSmallCaps();virtual;
|
||||
Begin
|
||||
return pr_.Value("SmallCaps");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteSpacing(value);virtual;
|
||||
Begin
|
||||
pr_.Spacing := value * 20;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSpacing();virtual;
|
||||
Begin
|
||||
return pr_.Value("Spacing") / 20;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteStrikeThrough(value);virtual;
|
||||
Begin
|
||||
pr_.Strike := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadStrikeThrough();virtual;
|
||||
Begin
|
||||
return pr_.Value("Strike");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteSubscript(value);virtual;
|
||||
Begin
|
||||
pr_.VertAlign := "subscript";
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSubscript();virtual;
|
||||
Begin
|
||||
return pr_.Value("VertAlign");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteSuperscript(value);virtual;
|
||||
Begin
|
||||
pr_.VertAlign := "supercript";
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSuperscript();virtual;
|
||||
Begin
|
||||
return pr_.Value("VertAlign");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteUnderline(value);virtual;
|
||||
Begin
|
||||
case value of
|
||||
TSDocxEnumerations.wdUnderlineDash():
|
||||
pr_.U := "dash";
|
||||
TSDocxEnumerations.wdUnderlineDashHeavy():
|
||||
pr_.U := "dashedHeavy";
|
||||
TSDocxEnumerations.wdUnderlineDashLong():
|
||||
pr_.U := "dashLong";
|
||||
TSDocxEnumerations.wdUnderlineDashLongHeavy():
|
||||
pr_.U := "dashLongHeavy";
|
||||
TSDocxEnumerations.wdUnderlineDotDash():
|
||||
pr_.U := "dotDash";
|
||||
TSDocxEnumerations.wdUnderlineDotDashHeavy():
|
||||
pr_.U := "dashDotHeavy";
|
||||
TSDocxEnumerations.wdUnderlineDotDotDash():
|
||||
pr_.U := "dotDotDash";
|
||||
TSDocxEnumerations.wdUnderlineDotDotDashHeavy():
|
||||
pr_.U := "dashDotDotHeavy";
|
||||
TSDocxEnumerations.wdUnderlineDotted():
|
||||
pr_.U := "dotted";
|
||||
TSDocxEnumerations.wdUnderlineDottedHeavy():
|
||||
pr_.U := "dottedHeavy";
|
||||
TSDocxEnumerations.wdUnderlineDouble():
|
||||
pr_.U := "double";
|
||||
TSDocxEnumerations.wdUnderlineNone():
|
||||
pr_.U := "none";
|
||||
TSDocxEnumerations.wdUnderlineSingle():
|
||||
pr_.U := "single";
|
||||
TSDocxEnumerations.wdUnderlineThick():
|
||||
pr_.U := "thick";
|
||||
TSDocxEnumerations.wdUnderlineWavy():
|
||||
pr_.U := "wave";
|
||||
TSDocxEnumerations.wdUnderlineWavyDouble():
|
||||
pr_.U := "wavyDoule";
|
||||
TSDocxEnumerations.wdUnderlineWavyHeavy():
|
||||
pr_.U := "wavyHeavy";
|
||||
TSDocxEnumerations.wdUnderlineWords():
|
||||
pr_.U := "words";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadUnderline();virtual;
|
||||
Begin
|
||||
case pr_.Value("U") of
|
||||
"dash":
|
||||
return TSDocxEnumerations.wdUnderlineDash();
|
||||
"dashedHeavy":
|
||||
return TSDocxEnumerations.wdUnderlineDashHeavy();
|
||||
"dashLong":
|
||||
return TSDocxEnumerations.wdUnderlineDashLong();
|
||||
"dashLongHeavy":
|
||||
return TSDocxEnumerations.wdUnderlineDashLongHeavy();
|
||||
"dotDash":
|
||||
return TSDocxEnumerations.wdUnderlineDotDash();
|
||||
"dashDotHeavy":
|
||||
return TSDocxEnumerations.wdUnderlineDotDashHeavy();
|
||||
"dotDotDash":
|
||||
return TSDocxEnumerations.wdUnderlineDotDotDash();
|
||||
"dashDotDotHeavy":
|
||||
return TSDocxEnumerations.wdUnderlineDotDotDashHeavy();
|
||||
"dotted":
|
||||
return TSDocxEnumerations.wdUnderlineDotted();
|
||||
"dottedHeavy":
|
||||
return TSDocxEnumerations.wdUnderlineDottedHeavy();
|
||||
"double":
|
||||
return TSDocxEnumerations.wdUnderlineDouble();
|
||||
"none", nil:
|
||||
return TSDocxEnumerations.wdUnderlineNone();
|
||||
"single":
|
||||
return TSDocxEnumerations.wdUnderlineSingle();
|
||||
"thick":
|
||||
return TSDocxEnumerations.wdUnderlineThick();
|
||||
"wave":
|
||||
return TSDocxEnumerations.wdUnderlineWavy();
|
||||
"wavyDoule":
|
||||
return TSDocxEnumerations.wdUnderlineWavyDouble();
|
||||
"wavyHeavy":
|
||||
return TSDocxEnumerations.wdUnderlineWavyHeavy();
|
||||
"words":
|
||||
return TSDocxEnumerations.wdUnderlineWords();
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxFont.WriteUnderlineColor(value);virtual;
|
||||
Begin
|
||||
pr_.UColor := color_[value];
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadUnderlineColor();virtual;
|
||||
Begin
|
||||
return color_[pr_.Value("UColor")];
|
||||
End;
|
||||
|
|
@ -0,0 +1,551 @@
|
|||
Type TSDocxFontRange = Class(TSDocxFont)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(arr);
|
||||
|
||||
private
|
||||
Function CallFunction(pf, value);overload;
|
||||
Function CallFunction(pf);overload;
|
||||
Function SplitRun();
|
||||
|
||||
private
|
||||
range_arr_;
|
||||
split_flag_; // 写之前切割run,切割后设为true
|
||||
|
||||
public
|
||||
Function Reset();override;
|
||||
|
||||
Function WriteUnderlineColor(value);override;
|
||||
Function ReadUnderlineColor();override;
|
||||
Function WriteUnderline(value);override;
|
||||
Function ReadUnderline();override;
|
||||
Function ReadThreeD();override;
|
||||
Function ReadTextShadow();override;
|
||||
Function ReadTextColor();override;
|
||||
Function WriteSuperscript(value);override;
|
||||
Function ReadSuperscript();override;
|
||||
Function WriteSubscript(value);override;
|
||||
Function ReadSubscript();override;
|
||||
Function WriteStylisticSet(value);override;
|
||||
Function ReadStylisticSet();override;
|
||||
Function WriteStrikeThrough(value);override;
|
||||
Function ReadStrikeThrough();override;
|
||||
Function WriteSpacing(value);override;
|
||||
Function ReadSpacing();override;
|
||||
Function WriteSmallCaps(value);override;
|
||||
Function ReadSmallCaps();override;
|
||||
Function WriteSizeBi(value);override;
|
||||
Function ReadSizeBi();override;
|
||||
Function WriteSize(value);override;
|
||||
Function ReadSize();override;
|
||||
Function WriteShadow(value);override;
|
||||
Function ReadShadow();override;
|
||||
Function ReadShading();override;
|
||||
Function WriteScaling(value);override;
|
||||
Function ReadScaling();override;
|
||||
Function ReadReflection();override;
|
||||
Function WritePosition(value);override;
|
||||
Function ReadPosition();override;
|
||||
Function WriteOutline(value);override;
|
||||
Function ReadOutline();override;
|
||||
Function WriteNumberSpacing(value);override;
|
||||
Function ReadNumberSpacing();override;
|
||||
Function WriteNumberForm(value);override;
|
||||
Function ReadNumberForm();override;
|
||||
Function WriteNameOther(value);override;
|
||||
Function ReadNameOther();override;
|
||||
Function WriteNameFarEast(value);override;
|
||||
Function ReadNameFarEast();override;
|
||||
Function WriteNameBi(value);override;
|
||||
Function ReadNameBi();override;
|
||||
Function WriteNameAscii(value);override;
|
||||
Function ReadNameAscii();override;
|
||||
Function WriteName(value);override;
|
||||
Function ReadName();override;
|
||||
Function WriteLine(value);override;
|
||||
Function ReadLine();override;
|
||||
Function WriteLigatures(value);override;
|
||||
Function ReadLigatures();override;
|
||||
Function WriteKerning(value);override;
|
||||
Function ReadKerning();override;
|
||||
Function WriteItalicBi(value);override;
|
||||
Function ReadItalicBi();override;
|
||||
Function WriteItalic(value);override;
|
||||
Function ReadItalic();override;
|
||||
Function WriteHidden(value);override;
|
||||
Function ReadHidden();override;
|
||||
Function ReadGlow();override;
|
||||
Function ReadFill();override;
|
||||
Function WriteEngrave(value);override;
|
||||
Function ReadEngrave();override;
|
||||
Function WriteEmphasisMark(value);override;
|
||||
Function ReadEmphasisMark();override;
|
||||
Function WriteEmboss(value);override;
|
||||
Function ReadEmboss();override;
|
||||
Function ReadDuplicate();override;
|
||||
Function WriteDoubleStrikeThrough(value);override;
|
||||
Function ReadDoubleStrikeThrough();override;
|
||||
Function WriteDisableCharacterSpaceGrid(value);override;
|
||||
Function ReadDisableCharacterSpaceGrid();override;
|
||||
Function WriteDiacriticColor(value);override;
|
||||
Function ReadDiacriticColor();override;
|
||||
Function WriteContextualAlternates(value);override;
|
||||
Function ReadContextualAlternates();override;
|
||||
Function WriteColorIndexBi(value);override;
|
||||
Function ReadColorIndexBi();override;
|
||||
Function WriteColorIndex(value);override;
|
||||
Function ReadColorIndex();override;
|
||||
Function ReadBorders();override;
|
||||
Function WriteBoldBi(value);override;
|
||||
Function ReadBoldBi();override;
|
||||
Function WriteBold(value);override;
|
||||
Function ReadBold();override;
|
||||
Function WriteAllCaps(value);override;
|
||||
Function ReadAllCaps();override;
|
||||
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxFontRange.Init(arr);
|
||||
Begin
|
||||
range_arr_ := arr;
|
||||
split_flag_ := false;
|
||||
class(TSDocxFont).Init(nil);
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.SplitRun();
|
||||
Begin
|
||||
if split_flag_ then return;
|
||||
class(TSWdCommon).SplitRangeRun(range_arr_);
|
||||
self.Parent.SetRangeArr(range_arr_);
|
||||
split_flag_ := true;
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.CallFunction(pf, value);overload;
|
||||
Begin
|
||||
SplitRun();
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
begin
|
||||
paragraph := range_arr_[i]["tparagraph"];
|
||||
pr_ := paragraph.pPr.rPr;
|
||||
##pf(value);
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
begin
|
||||
pr_ := range_arr_[i]["trun"].rPr;
|
||||
##pf(value);
|
||||
end
|
||||
end;
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.CallFunction(pf);overload;
|
||||
Begin
|
||||
ret := nil;
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
begin
|
||||
pr_ := range_arr_[i]["trun"].rPr;
|
||||
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;
|
||||
|
||||
// function
|
||||
Function TSDocxFontRange.Reset();override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).Reset));
|
||||
End;
|
||||
// property
|
||||
Function TSDocxFontRange.WriteUnderlineColor(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteUnderlineColor), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadUnderlineColor();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadUnderlineColor));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteUnderline(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteUnderline), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadUnderline();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadUnderline));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadThreeD();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadThreeD));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadTextShadow();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadTextShadow));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadTextColor();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadTextColor));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteSuperscript(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteSuperscript), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadSuperscript();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadSuperscript));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteSubscript(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteSubscript), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadSubscript();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadSubscript));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteStylisticSet(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteStylisticSet), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadStylisticSet();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadStylisticSet));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteStrikeThrough(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteStrikeThrough), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadStrikeThrough();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadStrikeThrough));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteSpacing(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteSpacing), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadSpacing();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadSpacing));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteSmallCaps(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteSmallCaps), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadSmallCaps();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadSmallCaps));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteSizeBi(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteSizeBi), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadSizeBi();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadSizeBi));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteSize(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteSize), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadSize();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadSize));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteShadow(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteShadow), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadShadow();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadShadow));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadShading();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadShading));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteScaling(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteScaling), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadScaling();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadScaling));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadReflection();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadReflection));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WritePosition(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WritePosition), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadPosition();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadPosition));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteOutline(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteOutline), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadOutline();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadOutline));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteNumberSpacing(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteNumberSpacing), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadNumberSpacing();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadNumberSpacing));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteNumberForm(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteNumberForm), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadNumberForm();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadNumberForm));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteNameOther(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteNameOther), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadNameOther();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadNameOther));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteNameFarEast(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteNameFarEast), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadNameFarEast();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadNameFarEast));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteNameBi(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteNameBi), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadNameBi();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadNameBi));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteNameAscii(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteNameAscii), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadNameAscii();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadNameAscii));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteName(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteName), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadName();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadName));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteLine(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteLine), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadLine();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadLine));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteLigatures(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteLigatures), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadLigatures();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadLigatures));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteKerning(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteKerning), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadKerning();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadKerning));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteItalicBi(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteItalicBi), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadItalicBi();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadItalicBi));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteItalic(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteItalic), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadItalic();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadItalic));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteHidden(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteHidden), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadHidden();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadHidden));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadGlow();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadGlow));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadFill();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadFill));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteEngrave(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteEngrave), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadEngrave();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadEngrave));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteEmphasisMark(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteEmphasisMark), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadEmphasisMark();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadEmphasisMark));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteEmboss(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteEmboss), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadEmboss();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadEmboss));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadDuplicate();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadDuplicate));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadDoubleStrikeThrough();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadDoubleStrikeThrough));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteDisableCharacterSpaceGrid(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteDisableCharacterSpaceGrid), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadDisableCharacterSpaceGrid();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadDisableCharacterSpaceGrid));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteDiacriticColor(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteDiacriticColor), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadDiacriticColor();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadDiacriticColor));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteContextualAlternates(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteContextualAlternates), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadContextualAlternates();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadContextualAlternates));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteColorIndexBi(value);override;
|
||||
Begin
|
||||
CallFunction(ThisFunction(class(TSDocxFont).WriteColorIndexBi), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadColorIndexBi();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadColorIndexBi));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteColorIndex(value);override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).WriteColorIndex), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadColorIndex();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadColorIndex));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.ReadBorders();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadBorders));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteBoldBi(value);override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).WriteBoldBi), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadBoldBi();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadBoldBi));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteBold(value);override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).WriteBold), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadBold();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadBold));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.WriteAllCaps(value);override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).WriteAllCaps), value);
|
||||
End;
|
||||
Function TSDocxFontRange.ReadAllCaps();override;
|
||||
Begin
|
||||
return CallFunction(ThisFunction(class(TSDocxFont).ReadAllCaps));
|
||||
End;
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
Function TSWdColor();
|
||||
Begin
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
hash := array();
|
||||
hash[wdColorAqua()] := "33CCCC";
|
||||
hash[wdColorAutomatic()] := "auto";
|
||||
hash[wdColorBlack()] := "000000";
|
||||
hash[wdColorBlue()] := "0000FF";
|
||||
hash[wdColorBlueGray()] := "666699";
|
||||
hash[wdColorBrightGreen()] := "00FF00";
|
||||
hash[wdColorBrown()] := "993300";
|
||||
hash[wdColorDarkBlue()] := "000080";
|
||||
hash[wdColorDarkGreen()] := "003300";
|
||||
hash[wdColorDarkRed()] := "800000";
|
||||
hash[wdColorDarkTeal()] := "003366";
|
||||
hash[wdColorDarkYellow()] := "808000";
|
||||
hash[wdColorGold()] := "FFCC00";
|
||||
hash[wdColorGray05()] := "F3F3F3";
|
||||
hash[wdColorGray10()] := "E6E6E6";
|
||||
hash[wdColorGray125()] := "E0E0E0";
|
||||
hash[wdColorGray15()] := "D9D9D9";
|
||||
hash[wdColorGray20()] := "CCCCCC";
|
||||
hash[wdColorGray25()] := "C0C0C0";
|
||||
hash[wdColorGray30()] := "B3B3B3";
|
||||
hash[wdColorGray35()] := "A6A6A6";
|
||||
hash[wdColorGray375()] := "A0A0A0";
|
||||
hash[wdColorGray40()] := "999999";
|
||||
hash[wdColorGray45()] := "8C8C8C";
|
||||
hash[wdColorGray50()] := "808080";
|
||||
hash[wdColorGray55()] := "737373";
|
||||
hash[wdColorGray60()] := "666666";
|
||||
hash[wdColorGray625()] := "606060";
|
||||
hash[wdColorGray65()] := "595959";
|
||||
hash[wdColorGray70()] := "4C4C4C";
|
||||
hash[wdColorGray75()] := "404040";
|
||||
hash[wdColorGray80()] := "333333";
|
||||
hash[wdColorGray85()] := "262626";
|
||||
hash[wdColorGray875()] := "202020";
|
||||
hash[wdColorGray90()] := "191919";
|
||||
hash[wdColorGray95()] := "0C0C0C";
|
||||
hash[wdColorGreen()] := "008000";
|
||||
hash[wdColorIndigo()] := "333399";
|
||||
hash[wdColorLavender()] := "CC99FF";
|
||||
hash[wdColorLightBlue()] := "3366FF";
|
||||
hash[wdColorLightGreen()] := "CCFFCC";
|
||||
hash[wdColorLightOrange()] := "FF9900";
|
||||
hash[wdColorLightTurquoise()] := "CCFFFF";
|
||||
hash[wdColorLightYellow()] := "FFFF99";
|
||||
hash[wdColorLime()] := "99CC00";
|
||||
hash[wdColorOliveGreen()] := "333300";
|
||||
hash[wdColorOrange()] := "FF6600";
|
||||
hash[wdColorPaleBlue()] := "99CCFF";
|
||||
hash[wdColorPink()] := "FF00FF";
|
||||
hash[wdColorPlum()] := "993366";
|
||||
hash[wdColorRed()] := "FF0000";
|
||||
hash[wdColorRose()] := "FF99CC";
|
||||
hash[wdColorSeaGreen()] := "339966";
|
||||
hash[wdColorSkyBlue()] := "00CCFF";
|
||||
hash[wdColorTan()] := "FFCC99";
|
||||
hash[wdColorTeal()] := "008080";
|
||||
hash[wdColorTurquoise()] := "00FFFF";
|
||||
hash[wdColorViolet()] := "800080";
|
||||
hash[wdColorWhite()] := "FFFFFF";
|
||||
hash[wdColorYellow()] := "FFFF00";
|
||||
|
||||
hash2 := hash;
|
||||
for k, v in hash do
|
||||
hash2[v] := k;
|
||||
hash2[nil] := TSDocxEnumerations.wdColorAutomatic();
|
||||
|
||||
return hash2;
|
||||
|
||||
End;
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
Function TSWdColorIndex();
|
||||
Begin
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
hash := array();
|
||||
hash[TSDocxEnumerations.wdAuto()] := nil;
|
||||
hash[TSDocxEnumerations.wdBlack()] := "000000";
|
||||
hash[TSDocxEnumerations.wdBlue()] := "0000FF";
|
||||
hash[TSDocxEnumerations.wdBrightGreen()] := "00FF00";
|
||||
hash[TSDocxEnumerations.wdByAuthor()] := nil;
|
||||
hash[TSDocxEnumerations.wdDarkBlue()] := "000080";
|
||||
hash[TSDocxEnumerations.wdDarkRed()] := "800000";
|
||||
hash[TSDocxEnumerations.wdDarkYellow()] := "808000";
|
||||
hash[TSDocxEnumerations.wdGray25()] := "C0C0C0";
|
||||
hash[TSDocxEnumerations.wdGray50()] := "808080";
|
||||
hash[TSDocxEnumerations.wdGreen()] := "008000";
|
||||
hash[TSDocxEnumerations.wdNoHighlight()] := nil;
|
||||
hash[TSDocxEnumerations.wdPink()] := "FF00FF";
|
||||
hash[TSDocxEnumerations.wdRed()] := "FF0000";
|
||||
hash[TSDocxEnumerations.wdTeal()] := "008080";
|
||||
hash[TSDocxEnumerations.wdTurquoise()] := "00FFFF";
|
||||
hash[TSDocxEnumerations.wdViolet()] := "800080";
|
||||
hash[TSDocxEnumerations.wdWhite()] := "FFFFFF";
|
||||
hash[TSDocxEnumerations.wdYellow()] := "FFFF00";
|
||||
|
||||
hash2 := hash;
|
||||
for k, v in hash do
|
||||
hash2[v] := k;
|
||||
hash2[nil] := TSDocxEnumerations.wdAuto();
|
||||
|
||||
return hash2;
|
||||
|
||||
End;
|
||||
|
||||
|
|
@ -0,0 +1,229 @@
|
|||
Type TSWdCommon = Class
|
||||
|
||||
Class Function AddRun(rootNode, parentNode, runNode, tParagraph, pStart, pEnd, pTotal, arr);
|
||||
Begin
|
||||
run_obj := TOfficeObj("TRun");
|
||||
run_obj.Init(runNode);
|
||||
text := ifObj(runNode) ? run_obj.Text() : "";
|
||||
len := text ? length(text) : 1;
|
||||
|
||||
if pTotal + len > pStart then
|
||||
begin
|
||||
length := length(arr);
|
||||
// 左边切割
|
||||
if pTotal < pstart and pTotal + len > pStart + 1 then
|
||||
arr[length]["lsplit"] := pStart - pTotal; // 左边丢弃的字符数
|
||||
// 右边切割
|
||||
if pTotal + len > pEnd then
|
||||
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
|
||||
return len;
|
||||
End;
|
||||
|
||||
Class Function SplitRange(root, startNode, pStart, pEnd, pTotal, arr);
|
||||
Begin
|
||||
node := startNode.FirstChildElement();
|
||||
while ifObj(node) do
|
||||
begin
|
||||
case node.GetName() of
|
||||
"w:p":
|
||||
begin
|
||||
paragraph_obj := TOfficeObj("TParagraph");
|
||||
paragraph_obj.Init(node);
|
||||
if paragraph_obj.Empty() then
|
||||
begin
|
||||
class(TSWdCommon).AddRun(root, startNode, nil, paragraph_obj, pStart, pEnd, pTotal, arr);
|
||||
end
|
||||
else begin
|
||||
paragraph_len := length(arr); // 标记段落完整的起始位置
|
||||
sub_node := node.FirstChildElement();
|
||||
while ifObj(sub_node) do
|
||||
begin
|
||||
case sub_node.GetName() of
|
||||
"w:r":
|
||||
begin
|
||||
pTotal += class(TSWdCommon).AddRun(root, startNode, sub_node, paragraph_obj, pStart, pEnd, pTotal, arr);
|
||||
if pTotal >= pEnd then return 1;
|
||||
end
|
||||
|
||||
"w:ins", "w:del":
|
||||
begin
|
||||
run_node := sub_node.FirstChildElement("w:r");
|
||||
while ifObj(run_node) do
|
||||
begin
|
||||
class(TSWdCommon).AddRun(paragraph_obj, root, run_node, pStart, pEnd, pTotal, arr);
|
||||
run_node := run_node.NextElement("w:r");
|
||||
end
|
||||
end
|
||||
end;
|
||||
sub_node := sub_node.NextElement();
|
||||
end
|
||||
for i:=paragraph_len to length(arr)-1 do
|
||||
arr[i]["entirety"] := node;
|
||||
end
|
||||
pTotal += 1;
|
||||
if pTotal >= pEnd then return 1;
|
||||
end
|
||||
|
||||
"w:tbl":
|
||||
begin
|
||||
table_len := length(arr);
|
||||
tr := node.FirstChildElement("w:tr");
|
||||
while ifObj(tr) do
|
||||
begin
|
||||
tc := tr.FirstChildElement("w:tc");
|
||||
while ifObj(tc) do
|
||||
begin
|
||||
cell_len := length(arr);
|
||||
flag := class(TSWdCommon).SplitRange(root, tc, pStart, pEnd, pTotal, arr);
|
||||
if flag then return 1;
|
||||
tc := tc.NextElement("w:tc");
|
||||
if pTotal >= pEnd then return 1;
|
||||
for i:=cell_len to length(arr)-1 do
|
||||
arr[i]["entirety"] := node;
|
||||
end
|
||||
tr := tr.NextElement("w:tr");
|
||||
pTotal += 1;
|
||||
if pTotal >= pEnd then return 1;
|
||||
end
|
||||
for i:=table_len to length(arr)-1 do
|
||||
arr[i]["entirety"] := node;
|
||||
end
|
||||
end;
|
||||
node := node.NextElement();
|
||||
end
|
||||
End;
|
||||
|
||||
Class Function AddRange(root, startNode, findNode, tParagraph, runNode, arr);
|
||||
Begin
|
||||
run_obj := TOfficeObj("TRun");
|
||||
run_obj.Init(runNode);
|
||||
length := length(arr);
|
||||
arr[length]["tparagraph"] := tParagraph;
|
||||
arr[length]["trun"] := run_obj;
|
||||
arr[length]["root"] := root;
|
||||
arr[length]["parent"] := startNode;
|
||||
arr[length]["entirety"] := findNode;
|
||||
text := ifObj(runNode) ? run_obj.Text() : "";
|
||||
return text ? length(text) : 1;
|
||||
End;
|
||||
|
||||
Class Function ParagraphRange(root, startNode, findNode, node, pend, arr);
|
||||
Begin
|
||||
paragraph_obj := TOfficeObj("TParagraph");
|
||||
paragraph_obj.Init(node);
|
||||
if paragraph_obj.Empty() then
|
||||
begin
|
||||
class(TSWdCommon).AddRange(root, startNode, findNode, paragraph_obj, nil, arr);
|
||||
end
|
||||
else begin
|
||||
sub_node := node.FirstChildElement();
|
||||
while ifObj(sub_node) do
|
||||
begin
|
||||
case sub_node.GetName() of
|
||||
"w:r": pend += class(TSWdCommon).AddRange(root, startNode, findNode, paragraph_obj, sub_node, arr);
|
||||
|
||||
"w:ins", "w:del":
|
||||
begin
|
||||
run_node := sub_node.FirstChildElement("w:r");
|
||||
while ifObj(run_node) do
|
||||
begin
|
||||
pend += class(TSWdCommon).AddRange(root, findNode, paragraph_obj, run_node, arr);
|
||||
run_node := run_node.NextElement("w:r");
|
||||
end
|
||||
end
|
||||
end;
|
||||
sub_node := sub_node.NextElement();
|
||||
end
|
||||
end
|
||||
pend += 1;
|
||||
End;
|
||||
|
||||
Class Function CalculateRange(root, startNode, findNode, findFlag, pbegin, pend, arr);
|
||||
Begin
|
||||
if findFlag then arr := array();
|
||||
node := startNode.FirstChildElement();
|
||||
while ifObj(node) do
|
||||
begin
|
||||
if node.Eq(findNode) then
|
||||
begin
|
||||
find_flag2 := true;
|
||||
arr := array();
|
||||
end
|
||||
case node.GetName() of
|
||||
"w:p": class(TSWdCommon).ParagraphRange(root, startNode, findNode, node, pend, arr);
|
||||
"w:tbl":
|
||||
begin
|
||||
tr := node.FirstChildElement("w:tr");
|
||||
while ifObj(tr) do
|
||||
begin
|
||||
tc := tr.FirstChildElement("w:tc");
|
||||
while ifObj(tc) do
|
||||
begin
|
||||
tc_node := tc;
|
||||
new_flag := tc_node.Eq(findNode);
|
||||
if new_flag then temp := pbegin; // 把pbegin存起来,防止递归覆盖
|
||||
flag := CalculateRange(root, tc_node, findNode, new_flag, pbegin, pend, arr);
|
||||
if new_flag then pbegin := temp;
|
||||
if flag then return 1;
|
||||
tc := tc.NextElement("w:tc");
|
||||
end
|
||||
tr := tr.NextElement("w:tr");
|
||||
pend += 1;
|
||||
end
|
||||
end
|
||||
end;
|
||||
if find_flag2 then return 1;
|
||||
if not flag then pbegin := pend;
|
||||
node := node.NextElement();
|
||||
end
|
||||
if findFlag then return 1;
|
||||
End;
|
||||
|
||||
Class Function SplitRangeRun(rangeArr);overload;
|
||||
Begin
|
||||
for i:=0 to length(rangeArr)-1 do
|
||||
rangeArr[i] := class(TSWdCommon).SplitSingleRangeRun(rangeArr[i]);
|
||||
End;
|
||||
|
||||
Class Function SplitSingleRangeRun(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
|
||||
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;
|
||||
|
||||
End;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
Uses TSDocxEnumerations;
|
||||
|
||||
TestDocuments();
|
||||
|
||||
|
||||
Function TestDocuments();
|
||||
Begin
|
||||
openpath := "D:/temp/vbatable.docx";
|
||||
|
|
@ -17,7 +17,14 @@ Begin
|
|||
println("ActiveDocument.Name = {}", application.ActiveDocument.Name);
|
||||
println("ActiveDocument.Tables.Count = {}", application.ActiveDocument.Tables.Count);
|
||||
|
||||
TestTableCell(application);
|
||||
// TestTableCell(application);
|
||||
// TestTableColumns(application);
|
||||
// TestTables(application);
|
||||
// TestParagraphs(application);
|
||||
// TestRange(application);
|
||||
TestBorders(application);
|
||||
// arr := application.ActiveDocument.Range(0, 10);
|
||||
// println("arr = {}", arr);
|
||||
|
||||
Documents[2].SaveAs2(FileName : savepath);
|
||||
println("savepath = {}", savepath);
|
||||
|
|
@ -26,37 +33,114 @@ return;
|
|||
|
||||
End;
|
||||
|
||||
Function TestRange(application);
|
||||
Begin
|
||||
ActiveDocument := application.ActiveDocument;
|
||||
|
||||
range := ActiveDocument.Range(2, 4);
|
||||
prange := ActiveDocument.Paragraphs(2).Range;
|
||||
crange := ActiveDocument.Tables(1).Cell(1, 1).Range;
|
||||
|
||||
range.Font.Size := 20;
|
||||
prange.Font.Bold := true;
|
||||
crange.Font.Italic := true;
|
||||
|
||||
range.InsertAfter("After");
|
||||
range.InsertBefore("Before");
|
||||
|
||||
prange.InsertAfter(Text: "after.");
|
||||
prange.InsertBefore(Text: "before..");
|
||||
|
||||
crange.InsertAfter(Text: ".after");
|
||||
crange.InsertBefore(Text: ".before");
|
||||
|
||||
return;
|
||||
|
||||
ActiveDocument.Range(2, 17).Font.Size := 20;
|
||||
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);
|
||||
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.Bold := true;
|
||||
// ActiveDocument.Paragraphs(2).Range.Font.Italic := true;
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.Bold = {}", ActiveDocument.Paragraphs(1).Range.Font.Bold);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.NameFarEast := "微软雅黑";
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.NameFarEast = {}", ActiveDocument.Paragraphs(1).Range.Font.NameFarEast);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.Size := 20;
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.Size = {}", ActiveDocument.Paragraphs(1).Range.Font.Size);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.Italic := true;
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.Italic = {}", ActiveDocument.Paragraphs(1).Range.Font.Italic);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.Name := "宋体";
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.Name = {}", ActiveDocument.Paragraphs(1).Range.Font.Name);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.AllCaps := true;
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.AllCaps = {}", ActiveDocument.Paragraphs(1).Range.Font.AllCaps);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.Underline := TSDocxEnumerations.wdUnderlineDash();
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.Underline = {}", ActiveDocument.Paragraphs(1).Range.Font.Underline);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.UnderlineColor := TSDocxEnumerations.wdColorLime();
|
||||
// println("ActiveDocument.Paragraphs(1).Range.Font.UnderlineColor = {}", ActiveDocument.Paragraphs(1).Range.Font.UnderlineColor);
|
||||
// ActiveDocument.Paragraphs(1).Range.Font.Reset();
|
||||
|
||||
ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Bold := true;
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Bold = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Bold);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.NameFarEast := "微软雅黑";
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.NameFarEast = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.NameFarEast);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Size := 30;
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Size = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Size);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Italic := true;
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Italic = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Italic);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Name := "宋体";
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Name = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Name);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.AllCaps := true;
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.AllCaps = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.AllCaps);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Underline := TSDocxEnumerations.wdUnderlineSingle();
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Underline = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Underline);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.UnderlineColor := TSDocxEnumerations.wdColorBlue();
|
||||
// println("ActiveDocument.Tables(1).Cell(1, 1).Range.Font.UnderlineColor = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Font.UnderlineColor);
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Range.Font.Reset();
|
||||
ActiveDocument.Tables(1).Cell(1, 1).Range.InsertAfter(Text:="111");
|
||||
ActiveDocument.Tables(1).Cell(1, 1).Range.InsertBefore("before");
|
||||
|
||||
End;
|
||||
|
||||
Function TestParagraphs(application);
|
||||
Begin
|
||||
println(">>>>>>>>>>>>>>>>>>>>>> TestParagraphs");
|
||||
ActiveDocument := application.ActiveDocument;
|
||||
println("ActiveDocument.Paragraphs.Count = {}", ActiveDocument.Paragraphs.Count);
|
||||
ActiveDocument.Paragraphs(1).Range.Font.Bold := true;
|
||||
End;
|
||||
|
||||
Function TestTables(application);
|
||||
Begin
|
||||
ActiveDocument := application.ActiveDocument;
|
||||
// ActiveDocument.Tables(1).ApplyStyleDirectFormatting('样式1');
|
||||
tables := application.ActiveDocument.Tables();
|
||||
// tables[1].AutoFitBehavior(TSDocxEnumerations.wdAutoFitContent());
|
||||
tables[1].AutoFitBehavior(TSDocxEnumerations.wdAutoFitWindow());
|
||||
End;
|
||||
|
||||
Function TestTableCell(application);
|
||||
Begin
|
||||
ActiveDocument := application.ActiveDocument;
|
||||
// tables := application.ActiveDocument.Tables;
|
||||
// tables[1].AutoFitBehavior(class(TSDocxEnumerations).wdAutoFitContent());
|
||||
// tables[1].Cell(1, 1).Delete(class(TSDocxEnumerations).wdDeleteCellsEntireColumn());
|
||||
// tables[1].Cell(1, 1).Delete(class(TSDocxEnumerations).wdDeleteCellsEntireRow());
|
||||
// tables[1].Cell(3, 3).Delete(class(TSDocxEnumerations).wdDeleteCellsShiftLeft());
|
||||
// tables[1].Cell(1, 2).Delete(class(TSDocxEnumerations).wdDeleteCellsShiftUp());
|
||||
// tables[1].Cell(5, 3).Delete(class(TSDocxEnumerations).wdDeleteCellsShiftUp());
|
||||
// tables[1].Cell(1, 1).Delete(TSDocxEnumerations.wdDeleteCellsEntireColumn());
|
||||
// tables[1].Cell(1, 1).Delete(TSDocxEnumerations.wdDeleteCellsEntireRow());
|
||||
// tables[1].Cell(3, 3).Delete(TSDocxEnumerations.wdDeleteCellsShiftLeft());
|
||||
// tables[1].Cell(1, 2).Delete(TSDocxEnumerations.wdDeleteCellsShiftUp());
|
||||
// tables[1].Cell(5, 3).Delete(TSDocxEnumerations.wdDeleteCellsShiftUp());
|
||||
// tables2 := ActiveDocument.Tables(2);
|
||||
// tables2.Cell(1, 1).Delete(class(TSDocxEnumerations).wdDeleteCellsEntireColumn());
|
||||
// tables2.Cell(1, 1).Delete(class(TSDocxEnumerations).wdDeleteCellsEntireRow());
|
||||
// tables2.Cell(3, 3).Delete(class(TSDocxEnumerations).wdDeleteCellsShiftLeft());
|
||||
// tables2.Cell(1, 2).Delete(class(TSDocxEnumerations).wdDeleteCellsShiftUp());
|
||||
// tables2.Cell(5, 3).Delete(class(TSDocxEnumerations).wdDeleteCellsShiftUp());
|
||||
// tables2.Cell(1, 1).Delete(TSDocxEnumerations.wdDeleteCellsEntireColumn());
|
||||
// tables2.Cell(1, 1).Delete(TSDocxEnumerations.wdDeleteCellsEntireRow());
|
||||
// tables2.Cell(3, 3).Delete(TSDocxEnumerations.wdDeleteCellsShiftLeft());
|
||||
// tables2.Cell(1, 2).Delete(TSDocxEnumerations.wdDeleteCellsShiftUp());
|
||||
// tables2.Cell(5, 3).Delete(TSDocxEnumerations.wdDeleteCellsShiftUp());
|
||||
// ActiveDocument.Tables(1).Cell(Row: 2, Column: 2).Merge(MergeTo: tables[1].Cell(2, 4));
|
||||
// ActiveDocument.Tables(2).Cell(2, 2).Merge(ActiveDocument.Tables(2).Cell(3, 4));
|
||||
// ActiveDocument.Tables(2).Cell(2, 2).Width := 100;
|
||||
// println("ActiveDocument.Tables(2).Cell(2, 2).Width = {}", ActiveDocument.Tables(2).Cell(2, 2).Width);
|
||||
// ActiveDocument.Tables(2).Cell(2, 3).WordWrap := true;
|
||||
// println("ActiveDocument.Tables(2).Cell(2, 3).WordWrap = {}", ActiveDocument.Tables(2).Cell(2, 3).WordWrap);
|
||||
// ActiveDocument.Tables(2).Cell(1, 1).VerticalAlignment := class(TSDocxEnumerations).wdCellAlignVerticalBottom();
|
||||
// ActiveDocument.Tables(2).Cell(1, 2).VerticalAlignment := class(TSDocxEnumerations).wdCellAlignVerticalCenter();
|
||||
// ActiveDocument.Tables(2).Cell(2, 2).VerticalAlignment := class(TSDocxEnumerations).wdCellAlignVerticalTop();
|
||||
// ActiveDocument.Tables(2).Cell(1, 1).VerticalAlignment := TSDocxEnumerations.wdCellAlignVerticalBottom();
|
||||
// ActiveDocument.Tables(2).Cell(1, 2).VerticalAlignment := TSDocxEnumerations.wdCellAlignVerticalCenter();
|
||||
// ActiveDocument.Tables(2).Cell(2, 2).VerticalAlignment := TSDocxEnumerations.wdCellAlignVerticalTop();
|
||||
// println("ActiveDocument.Tables(2).Cell(1, 1).VerticalAlignment = {}", ActiveDocument.Tables(2).Cell(1, 1).VerticalAlignment);
|
||||
// println("ActiveDocument.Tables(2).Cell(1, 2).VerticalAlignment = {}", ActiveDocument.Tables(2).Cell(1, 2).VerticalAlignment);
|
||||
// println("ActiveDocument.Tables(2).Cell(1, 3).VerticalAlignment = {}", ActiveDocument.Tables(2).Cell(1, 3).VerticalAlignment);
|
||||
|
|
@ -69,15 +153,42 @@ Begin
|
|||
// println("ActiveDocument.Tables(2).Cell(1, 1).LeftPadding = {}", ActiveDocument.Tables(2).Cell(1, 1).LeftPadding);
|
||||
// println("ActiveDocument.Tables(2).Cell(1, 1).BottomPadding = {}", ActiveDocument.Tables(2).Cell(1, 1).BottomPadding);
|
||||
// println("ActiveDocument.Tables(2).Cell(1, 1).RightPadding = {}", ActiveDocument.Tables(2).Cell(1, 1).RightPadding);
|
||||
// ActiveDocument.Tables(2).Cell(3, 3).Tables(1).AutoFitBehavior(class(TSDocxEnumerations).wdAutoFitContent());
|
||||
// ActiveDocument.Tables(2).Cell(3, 3).Tables(1).Cell(1, 1).Delete(class(TSDocxEnumerations).wdDeleteCellsEntireColumn());
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Shading.Texture := class(TSDocxEnumerations).wdTextureHorizontal();
|
||||
ActiveDocument.Tables(3).Cell(2,1).PreferredWidthType := class(TSDocxEnumerations).wdPreferredWidthAuto;
|
||||
ActiveDocument.Tables(3).Cell(2,2).PreferredWidth := 1000;
|
||||
println("ActiveDocument.Tables(3).Cell(2,2).PreferredWidth = {}", ActiveDocument.Tables(3).Cell(2,2).PreferredWidth);
|
||||
// ActiveDocument.Tables(2).Cell(3, 3).Tables(1).AutoFitBehavior(TSDocxEnumerations.wdAutoFitContent());
|
||||
// ActiveDocument.Tables(2).Cell(3, 3).Tables(1).Cell(1, 1).Delete(TSDocxEnumerations.wdDeleteCellsEntireColumn());
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Shading.Texture := TSDocxEnumerations.wdTextureHorizontal();
|
||||
// ActiveDocument.Tables(3).Cell(2,1).PreferredWidthType := TSDocxEnumerations.wdPreferredWidthAuto;
|
||||
// ActiveDocument.Tables(3).Cell(2,2).PreferredWidth := 1000;
|
||||
// println("ActiveDocument.Tables(3).Cell(2,2).PreferredWidth = {}", ActiveDocument.Tables(3).Cell(2,2).PreferredWidth);
|
||||
// ActiveDocument.Tables(3).Cell(2,1).SetHeight(RowHeight:=100, HeightRule:=TSDocxEnumerations.wdRowHeightAtLeast);
|
||||
// ActiveDocument.Tables(3).Cell(2,1).HeightRule := TSDocxEnumerations.wdRowHeightExactly();
|
||||
// ActiveDocument.Tables(3).Cell(2,1).Height := 30;
|
||||
// println("ActiveDocument.Tables(3).Cell(2,1).Height = {}", ActiveDocument.Tables(3).Cell(2,1).Height);
|
||||
// println("ActiveDocument.Tables(3).Cell(2,1).HeightRule = {}", ActiveDocument.Tables(3).Cell(2,1).HeightRule);
|
||||
// println("ActiveDocument.Tables(3).Cell(1,4).Next.ColumnIndex = {}", ActiveDocument.Tables(3).Cell(1,4).Next.ColumnIndex);
|
||||
// println("ActiveDocument.Tables(3).Cell(1,4).Next.RowIndex = {}", ActiveDocument.Tables(3).Cell(1,4).Next.RowIndex);
|
||||
// println("ActiveDocument.Tables(3).Cell(2,4).Next.ColumnIndex = {}", ActiveDocument.Tables(3).Cell(2,4).Next);
|
||||
// println("ActiveDocument.Tables(3).Cell(1,1).Previous.ColumnIndex = {}", ActiveDocument.Tables(3).Cell(1,1).Previous);
|
||||
// println("ActiveDocument.Tables(3).Cell(2,1).Previous.ColumnIndex = {}", ActiveDocument.Tables(3).Cell(2,1).Previous.ColumnIndex);
|
||||
// println("ActiveDocument.Tables(3).Cell(2,1).Previous.RowIndex = {}", ActiveDocument.Tables(3).Cell(2,1).Previous.RowIndex);
|
||||
|
||||
End;
|
||||
|
||||
Function TestTableColumns(application);
|
||||
Begin
|
||||
ActiveDocument := application.ActiveDocument;
|
||||
ActiveDocument.Tables(1).Columns(1).SetWidth(100, TSDocxEnumerations.wdAdjustSameWidth());
|
||||
ActiveDocument.Tables(3).Columns(2).PreferredWidthType := TSDocxEnumerations.wdPreferredWidthPercent();
|
||||
ActiveDocument.Tables(3).Columns(2).PreferredWidth := 50;
|
||||
println("ActiveDocument.Tables(3).Columns(2).PreferredWidth = {}", ActiveDocument.Tables(3).Columns(2).PreferredWidth);
|
||||
println("ActiveDocument.Tables(3).Columns.Count = {}", ActiveDocument.Tables(3).Columns.Count);
|
||||
println("ActiveDocument.Tables(3).Rows.Count = {}", ActiveDocument.Tables(3).Rows.Count);
|
||||
println("ActiveDocument.Tables(3).Cell(1,2).Width = {}", ActiveDocument.Tables(3).Cell(1,2).Width);
|
||||
println("ActiveDocument.Tables(2).Cell(1,2).Width = {}", ActiveDocument.Tables(2).Cell(1,2).Width);
|
||||
ActiveDocument.Tables(1).Cell(1, 2).PreferredWidthType := TSDocxEnumerations.wdPreferredWidthPercent();
|
||||
ActiveDocument.Tables(1).Cell(1, 2).Width := 100;
|
||||
println("ActiveDocument.Tables(1).Cell(1,2).Width = {}", ActiveDocument.Tables(1).Cell(1,2).Width);
|
||||
End;
|
||||
|
||||
Function TestTableRows();
|
||||
Begin
|
||||
// ActiveDocument.Tables(1).Rows.WrapAroundText := true;
|
||||
|
|
@ -88,14 +199,52 @@ Begin
|
|||
// println("Tables(1).Rows.WrapAroundText = {}", ActiveDocument.Tables(1).Rows.WrapAroundText);
|
||||
End;
|
||||
|
||||
Function TestTableBorders();
|
||||
Function TestBorders(application);
|
||||
Begin
|
||||
// ActiveDocument.Tables(1).Borders(class(TSDocxEnumerations).wdBorderDiagonalUp).LineStyle := class(TSDocxEnumerations).wdLineStyleSingle;
|
||||
// ActiveDocument.Tables(1).Cell(1, 1).Borders(class(TSDocxEnumerations).wdBorderDiagonalDown).LineStyle := class(TSDocxEnumerations).wdLineStyleSingle;
|
||||
// ActiveDocument.Tables(1).Columns(1).SetWidth(100, class(TSDocxEnumerations).wdAdjustSameWidth());
|
||||
// ActiveDocument.Tables(3).Columns(2).PreferredWidthType := class(TSDocxEnumerations).wdPreferredWidthPercent;
|
||||
// ActiveDocument.Tables(3).Columns(2).PreferredWidth := 50;
|
||||
// println("ActiveDocument.Tables(3).Columns(2).PreferredWidth = {}", ActiveDocument.Tables(3).Columns(2).PreferredWidth);
|
||||
ActiveDocument := application.ActiveDocument;
|
||||
println("\n============== Start TestBorders ==============");
|
||||
println("Tables(1) will set LineStyle = {}, color = {}", TSDocxEnumerations.wdLineStyleSingle(), TSDocxEnumerations.wdColorLime());
|
||||
ActiveDocument.Tables(1).Borders(TSDocxEnumerations.wdBorderDiagonalUp()).LineStyle := TSDocxEnumerations.wdLineStyleSingle();
|
||||
ActiveDocument.Tables(1).Borders(TSDocxEnumerations.wdBorderDiagonalUp()).Color := TSDocxEnumerations.wdColorLime();
|
||||
println("ActiveDocument.Tables(1).Borders(TSDocxEnumerations.wdBorderDiagonalUp()).LineStyle = {}", ActiveDocument.Tables(1).Borders(TSDocxEnumerations.wdBorderDiagonalUp()).LineStyle);
|
||||
println("ActiveDocument.Tables(1).Borders(TSDocxEnumerations.wdBorderDiagonalUp()).Color := {}", ActiveDocument.Tables(1).Borders(TSDocxEnumerations.wdBorderDiagonalUp()).Color);
|
||||
println("\n");
|
||||
|
||||
println("Tables(1).Cell(1, 1) will set LineStyle = {}, LineWidth = {}", TSDocxEnumerations.wdLineStyleDot(), TSDocxEnumerations.wdLineWidth025pt());
|
||||
ActiveDocument.Tables(1).Cell(1, 1).Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineStyle := TSDocxEnumerations.wdLineStyleDot();
|
||||
ActiveDocument.Tables(1).Cell(1, 1).Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineWidth := TSDocxEnumerations.wdLineWidth025pt();
|
||||
println("ActiveDocument.Tables(1).Cell(1, 1).Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineStyle = {}", ActiveDocument.Tables(1).Cell(1, 1).Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineStyle);
|
||||
println("ActiveDocument.Tables(1).Cell(1, 1).Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineWidth = {}", ActiveDocument.Tables(1).Cell(1, 1).Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineWidth);
|
||||
println("\n");
|
||||
|
||||
println("Range(2, 4) will set LineStyle = {}, ColorIndex = {}", TSDocxEnumerations.wdLineStyleTriple(), TSDocxEnumerations.wdBlue());
|
||||
ActiveDocument.Range(2, 4).Borders(TSDocxEnumerations.wdBorderBottom()).LineStyle := TSDocxEnumerations.wdLineStyleTriple();
|
||||
ActiveDocument.Range(2, 4).Borders(TSDocxEnumerations.wdBorderBottom()).ColorIndex := TSDocxEnumerations.wdBlue();
|
||||
println("ActiveDocument.Range(2, 4).Borders(TSDocxEnumerations.wdBorderBottom()).LineStyle = {}", ActiveDocument.Range(2, 4).Borders(TSDocxEnumerations.wdBorderBottom()).LineStyle);
|
||||
println("ActiveDocument.Range(2, 4).Borders(TSDocxEnumerations.wdBorderBottom()).ColorIndex = {}", ActiveDocument.Range(2, 4).Borders(TSDocxEnumerations.wdBorderBottom()).ColorIndex);
|
||||
println("\n");
|
||||
|
||||
println("Paragraphs(2).Range will set LineStyle = {}", TSDocxEnumerations.wdLineStyleDouble());
|
||||
ActiveDocument.Paragraphs(2).Range.Borders(TSDocxEnumerations.wdBorderLeft()).LineStyle := TSDocxEnumerations.wdLineStyleDouble();
|
||||
println("ActiveDocument.Paragraphs(2).Range.Borders(TSDocxEnumerations.wdBorderLeft()).LineStyle = {}", ActiveDocument.Paragraphs(2).Range.Borders(TSDocxEnumerations.wdBorderLeft()).LineStyle);
|
||||
println("\n");
|
||||
|
||||
println("Tables(1).Range wdBorderDiagonalUp will set LineStyle = {}", TSDocxEnumerations.wdLineStyleOutset());
|
||||
println("Tables(1).Range wdBorderBottom will set LineStyle = {}", TSDocxEnumerations.wdLineStyleDashSmallGap());
|
||||
ActiveDocument.Tables(1).Range.Borders(TSDocxEnumerations.wdBorderDiagonalUp()).LineStyle := TSDocxEnumerations.wdLineStyleOutset();
|
||||
ActiveDocument.Tables(1).Range.Borders(TSDocxEnumerations.wdBorderBottom()).LineStyle := TSDocxEnumerations.wdLineStyleDashSmallGap();
|
||||
println("ActiveDocument.Tables(1).Range.Borders(TSDocxEnumerations.wdBorderDiagonalUp()).LineStyle = {}", ActiveDocument.Tables(1).Range.Borders(TSDocxEnumerations.wdBorderDiagonalUp()).LineStyle);
|
||||
println("ActiveDocument.Tables(1).Range.Borders(TSDocxEnumerations.wdBorderBottom()).LineStyle = {}", ActiveDocument.Tables(1).Range.Borders(TSDocxEnumerations.wdBorderBottom()).LineStyle);
|
||||
println("\n");
|
||||
|
||||
println("Tables(1).Cell(1, 1).Range wdBorderVertical will set LineStyle = {}", TSDocxEnumerations.wdLineStyleEmboss3D());
|
||||
println("Tables(1).Cell(1, 1).Range wdBorderDiagonalDown will set LineStyle = {}", TSDocxEnumerations.wdLineStyleEngrave3D());
|
||||
ActiveDocument.Tables(1).Cell(1, 1).Range.Borders(TSDocxEnumerations.wdBorderVertical()).LineStyle := TSDocxEnumerations.wdLineStyleEmboss3D();
|
||||
ActiveDocument.Tables(1).Cell(1, 1).Range.Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineStyle := TSDocxEnumerations.wdLineStyleEngrave3D();
|
||||
println("ActiveDocument.Tables(1).Cell(1, 1).Range.Borders(TSDocxEnumerations.wdBorderVertical()).LineStyle = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Borders(TSDocxEnumerations.wdBorderVertical()).LineStyle);
|
||||
println("ActiveDocument.Tables(1).Cell(1, 1).Range.Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineStyle = {}", ActiveDocument.Tables(1).Cell(1, 1).Range.Borders(TSDocxEnumerations.wdBorderDiagonalDown()).LineStyle);
|
||||
println("============== End TestBorders ==============\n");
|
||||
|
||||
End;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,74 +0,0 @@
|
|||
Type Collection = class
|
||||
|
||||
public
|
||||
|
||||
Function Create();
|
||||
Function AddCollection(obj, name);
|
||||
Function RemoveCollection(index);
|
||||
Function SetIgnoreCase(value);
|
||||
Function GetCount();
|
||||
Function CalNewName(prefix);
|
||||
Function Operator[](index);
|
||||
|
||||
private
|
||||
name_collection_;
|
||||
index_collection_;
|
||||
name_index_;
|
||||
ignorecase_; // 是否启用大小写无关
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function Collection.Create();
|
||||
Begin
|
||||
name_collection_ := array();
|
||||
index_collection_ := array();
|
||||
name_index_ := array();
|
||||
ignorecase_ := false;
|
||||
End;
|
||||
|
||||
Function Collection.AddCollection(obj, name);
|
||||
Begin
|
||||
name_collection_[ignorecase_ ? lowercase(name) : name] := obj;
|
||||
index := length(index_collection_) + 1;
|
||||
index_collection_[index] := obj;
|
||||
name_index_[index] := name;
|
||||
name_index_[name] := index;
|
||||
End;
|
||||
|
||||
Function Collection.RemoveCollection(index);
|
||||
Begin
|
||||
arr1 := array(index : nil);
|
||||
arr2 := array(name_index_[index] : nil);
|
||||
reindex(index_collection_, arr1);
|
||||
reindex(name_collection_, arr2);
|
||||
reindex(name_index_, arr1);
|
||||
reindex(name_index_, arr2);
|
||||
if ifnumber(index) then
|
||||
for k, v in index_collection_ do
|
||||
if k > index then reindex(index_collection_, array(k : k - 1));
|
||||
End;
|
||||
|
||||
Function Collection.SetIgnoreCase(value);
|
||||
Begin
|
||||
ignorecase_ := value;
|
||||
End;
|
||||
|
||||
Function Collection.GetCount();
|
||||
Begin
|
||||
return length(name_collection_);
|
||||
End;
|
||||
|
||||
Function Collection.CalNewName(prefix);
|
||||
Begin
|
||||
len := length(name_collection_) + 1;
|
||||
name := prefix $ len;
|
||||
while name in name_collection_ do
|
||||
name := prefix $ ++len;
|
||||
return name;
|
||||
End;
|
||||
|
||||
Function Operator Collection.[](index);
|
||||
Begin
|
||||
if ifnumber(index) then return index_collection_[index];
|
||||
return name_collection_[ignorecase_ ? lowercase(index) : index];
|
||||
End;
|
||||
Loading…
Reference in New Issue