range重新设计
This commit is contained in:
@@ -3,6 +3,7 @@ Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(pr);
|
||||
Function Apply();virtual;
|
||||
|
||||
protected
|
||||
pr_;
|
||||
@@ -161,17 +162,21 @@ Begin
|
||||
color_ := TSWdColor();
|
||||
End;
|
||||
|
||||
// function
|
||||
Function TSDocxFont.Apply();virtual;
|
||||
Begin
|
||||
pr_.Update("first");
|
||||
End;
|
||||
|
||||
// Methods
|
||||
Function TSDocxFont.Reset();virtual;
|
||||
Begin
|
||||
pr_.Delete();
|
||||
End;
|
||||
|
||||
// property
|
||||
// Properties
|
||||
Function TSDocxFont.WriteAllCaps(value);virtual;
|
||||
Begin
|
||||
pr_.Caps := value = TSDocxEnumerations.wdToggle() ? _Not(self.Caps) : value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadAllCaps();virtual;
|
||||
Begin
|
||||
@@ -181,7 +186,6 @@ 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
|
||||
@@ -191,7 +195,6 @@ 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
|
||||
@@ -204,7 +207,6 @@ Begin
|
||||
if ifnil(color) then pr_.Root().DeleteChild("w:color");
|
||||
else begin
|
||||
pr_.Color := color;
|
||||
pr_.Update("first");
|
||||
end
|
||||
End;
|
||||
Function TSDocxFont.ReadColorIndex();virtual;
|
||||
@@ -224,7 +226,6 @@ End;
|
||||
Function TSDocxFont.WriteContextualAlternates(value);virtual;
|
||||
Begin
|
||||
pr_.ContextualAlternates := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadContextualAlternates();virtual;
|
||||
Begin
|
||||
@@ -234,7 +235,6 @@ End;
|
||||
Function TSDocxFont.WriteDisableCharacterSpaceGrid(value);virtual;
|
||||
Begin
|
||||
pr_.SnapToGrid := value ? false : true;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadDisableCharacterSpaceGrid();virtual;
|
||||
Begin
|
||||
@@ -244,7 +244,6 @@ End;
|
||||
Function TSDocxFont.WriteDoubleStrikeThrough(value);virtual;
|
||||
Begin
|
||||
pr_.dStrike := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadDoubleStrikeThrough();virtual;
|
||||
Begin
|
||||
@@ -260,7 +259,6 @@ End;
|
||||
Function TSDocxFont.WriteEmboss(value);override;
|
||||
Begin
|
||||
pr_.Emboss := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadEmboss();override;
|
||||
Begin
|
||||
@@ -281,7 +279,6 @@ Begin
|
||||
TSDocxEnumerations.wdEmphasisMarkUnderSolidCircle:
|
||||
pr_.Em := "underDot";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadEmphasisMark();virtual;
|
||||
Begin
|
||||
@@ -302,7 +299,6 @@ End;
|
||||
Function TSDocxFont.WriteEngrave(value);virtual;
|
||||
Begin
|
||||
pr_.ImPrint := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadEngrave();virtual;
|
||||
Begin
|
||||
@@ -312,7 +308,6 @@ End;
|
||||
Function TSDocxFont.WriteHidden(value);virtual;
|
||||
Begin
|
||||
pr_.Vanish := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadHidden();virtual;
|
||||
Begin
|
||||
@@ -322,7 +317,6 @@ End;
|
||||
Function TSDocxFont.WriteItalic(value);virtual;
|
||||
Begin
|
||||
pr_.Italic := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadItalic();virtual;
|
||||
Begin
|
||||
@@ -332,7 +326,6 @@ End;
|
||||
Function TSDocxFont.WriteItalicBi(value);virtual;
|
||||
Begin
|
||||
pr_.ICs := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadItalicBi();virtual;
|
||||
Begin
|
||||
@@ -342,7 +335,6 @@ End;
|
||||
Function TSDocxFont.WriteKerning(value);virtual;
|
||||
Begin
|
||||
pr_.Kern := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadKerning();virtual;
|
||||
Begin
|
||||
@@ -385,7 +377,6 @@ Begin
|
||||
TSDocxEnumerations.wdLigaturesStandardHistoricalDiscretional():
|
||||
pr_.Ligatures := "standardHistoricalDiscretional";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadLigatures();virtual;
|
||||
Begin
|
||||
@@ -429,7 +420,6 @@ Function TSDocxFont.WriteName(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.EastAsia := value;
|
||||
pr_.rFont.Ascii := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.ReadName();virtual;
|
||||
@@ -440,7 +430,6 @@ End;
|
||||
Function TSDocxFont.WriteNameAscii(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.Ascii := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNameAscii();virtual;
|
||||
Begin
|
||||
@@ -450,7 +439,6 @@ End;
|
||||
Function TSDocxFont.WriteNameBi(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.Cs := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNameBi();virtual;
|
||||
Begin
|
||||
@@ -460,7 +448,6 @@ End;
|
||||
Function TSDocxFont.WriteNameFarEast(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.EastAsia := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNameFarEast();virtual;
|
||||
Begin
|
||||
@@ -471,7 +458,6 @@ End;
|
||||
Function TSDocxFont.WriteNameOther(value);virtual;
|
||||
Begin
|
||||
pr_.rFont.HAnsi := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
|
||||
Function TSDocxFont.ReadNameOther();virtual;
|
||||
@@ -489,7 +475,6 @@ Begin
|
||||
TSDocxEnumerations.wdNumberFormOldstyle():
|
||||
pr_.NumForm := "oldStyle";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNumberForm();virtual;
|
||||
Begin
|
||||
@@ -513,7 +498,6 @@ Begin
|
||||
TSDocxEnumerations.wdNumberSpacingTabular():
|
||||
pr_.NumSpacing := "tabular";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadNumberSpacing();virtual;
|
||||
Begin
|
||||
@@ -530,7 +514,6 @@ 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
|
||||
@@ -540,7 +523,6 @@ End;
|
||||
Function TSDocxFont.WritePosition(value);virtual;
|
||||
Begin
|
||||
pr_.Position := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadPosition();virtual;
|
||||
Begin
|
||||
@@ -550,7 +532,6 @@ End;
|
||||
Function TSDocxFont.WriteScaling(value);virtual;
|
||||
Begin
|
||||
pr_.W := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadScaling();virtual;
|
||||
Begin
|
||||
@@ -560,7 +541,6 @@ End;
|
||||
Function TSDocxFont.WriteShadow(value);virtual;
|
||||
Begin
|
||||
pr_.Shadow := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadShadow();virtual;
|
||||
Begin
|
||||
@@ -570,7 +550,6 @@ End;
|
||||
Function TSDocxFont.WriteSize(value);virtual;
|
||||
Begin
|
||||
pr_.Sz := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSize();virtual;
|
||||
Begin
|
||||
@@ -580,7 +559,6 @@ End;
|
||||
Function TSDocxFont.WriteSizeBi(value);virtual;
|
||||
Begin
|
||||
pr_.SzCs := value * 2;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSizeBi();virtual;
|
||||
Begin
|
||||
@@ -590,7 +568,6 @@ 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
|
||||
@@ -600,7 +577,6 @@ End;
|
||||
Function TSDocxFont.WriteSpacing(value);virtual;
|
||||
Begin
|
||||
pr_.Spacing := value * 20;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSpacing();virtual;
|
||||
Begin
|
||||
@@ -610,7 +586,6 @@ End;
|
||||
Function TSDocxFont.WriteStrikeThrough(value);virtual;
|
||||
Begin
|
||||
pr_.Strike := value;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadStrikeThrough();virtual;
|
||||
Begin
|
||||
@@ -620,7 +595,6 @@ End;
|
||||
Function TSDocxFont.WriteSubscript(value);virtual;
|
||||
Begin
|
||||
pr_.VertAlign := "subscript";
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSubscript();virtual;
|
||||
Begin
|
||||
@@ -630,7 +604,6 @@ End;
|
||||
Function TSDocxFont.WriteSuperscript(value);virtual;
|
||||
Begin
|
||||
pr_.VertAlign := "supercript";
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadSuperscript();virtual;
|
||||
Begin
|
||||
@@ -677,7 +650,6 @@ Begin
|
||||
TSDocxEnumerations.wdUnderlineWords():
|
||||
pr_.U := "words";
|
||||
end;
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadUnderline();virtual;
|
||||
Begin
|
||||
@@ -724,7 +696,6 @@ End;
|
||||
Function TSDocxFont.WriteUnderlineColor(value);virtual;
|
||||
Begin
|
||||
pr_.UColor := color_[value];
|
||||
pr_.Update("first");
|
||||
End;
|
||||
Function TSDocxFont.ReadUnderlineColor();virtual;
|
||||
Begin
|
||||
|
||||
@@ -2,15 +2,15 @@ Type TSDocxFontRange = Class(TSDocxFont)
|
||||
Uses TSDocxEnumerations;
|
||||
|
||||
public
|
||||
Function Init(arr);
|
||||
Function Init(rangeObj);
|
||||
Function Apply();overload;
|
||||
|
||||
private
|
||||
Function CallFunction(pf, value);overload;
|
||||
Function CallFunction(pf);overload;
|
||||
Function SplitRun();
|
||||
|
||||
private
|
||||
range_arr_;
|
||||
range_obj_;
|
||||
split_flag_; // 写之前切割run,切割后设为true
|
||||
|
||||
public
|
||||
@@ -107,32 +107,29 @@ public
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSDocxFontRange.Init(arr);
|
||||
Function TSDocxFontRange.Init(rangeObj);
|
||||
Begin
|
||||
range_arr_ := arr;
|
||||
split_flag_ := false;
|
||||
range_obj_ := rangeObj;
|
||||
class(TSDocxFont).Init(nil);
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.SplitRun();
|
||||
Function TSDocxFontRange.Apply();overload;
|
||||
Begin
|
||||
if split_flag_ then return;
|
||||
class(TSWdCommon).SplitRangeRun(range_arr_);
|
||||
self.Parent.SetRangeArr(range_arr_);
|
||||
split_flag_ := true;
|
||||
CallFunction(ThisFunction(class(TSDocxFont).Apply));
|
||||
End;
|
||||
|
||||
Function TSDocxFontRange.CallFunction(pf, value);overload;
|
||||
Begin
|
||||
SplitRun();
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
range_obj_.SplitRun();
|
||||
range_arr := range_obj_.GetInfo();
|
||||
for i:=0 to length(range_arr)-1 do
|
||||
begin
|
||||
paragraph := range_arr_[i]["tparagraph"];
|
||||
paragraph := range_arr[i]["tparagraph"];
|
||||
pr_ := paragraph.pPr.rPr;
|
||||
##pf(value);
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
for i:=0 to length(range_arr)-1 do
|
||||
begin
|
||||
pr_ := range_arr_[i]["trun"].rPr;
|
||||
pr_ := range_arr[i]["trun"].rPr;
|
||||
##pf(value);
|
||||
end
|
||||
end;
|
||||
@@ -141,9 +138,10 @@ End;
|
||||
Function TSDocxFontRange.CallFunction(pf);overload;
|
||||
Begin
|
||||
ret := nil;
|
||||
for i:=0 to length(range_arr_)-1 do
|
||||
range_arr := range_obj_.GetInfo();
|
||||
for i:=0 to length(range_arr)-1 do
|
||||
begin
|
||||
pr_ := range_arr_[i]["trun"].rPr;
|
||||
pr_ := range_arr[i]["trun"].rPr;
|
||||
if not ifObj(pr_.Root()) then continue;
|
||||
cur := ##pf();
|
||||
if ifnil(ret) then ret := cur;
|
||||
|
||||
Reference in New Issue
Block a user