完善range

This commit is contained in:
csh
2023-12-20 09:06:40 +08:00
parent f0560b2330
commit b9e419541b
29 changed files with 1553 additions and 494 deletions
+1
View File
@@ -11,6 +11,7 @@ private
color_;
public
// Properties
property BackgroundPatternColor read ReadBackgroundPatternColor write WriteBackgroundPatternColor;
property BackgroundPatternColorIndex read ReadBackgroundPatternColorIndex write WriteBackgroundPatternColorIndex;
property ForegroundPatternColor read ReadForegroundPatternColor write WriteForegroundPatternColor;
+15 -11
View File
@@ -3,6 +3,7 @@ Uses TSDocxEnumerations;
public
Function Init(rangeObj);
Function Apply();override;
private
Function GetShadingObjectByNode(node);
@@ -36,6 +37,11 @@ Begin
class(TSDocxShading).Init(nil);
End;
Function TSDocxShadingRange.Apply();override;
Begin
CallFunction(ThisFunction(class(TSDocxShading).Apply), nil);
End;
Function TSDocxShadingRange.SplitRun();
Begin
range_obj_.SplitRangeRun();
@@ -44,14 +50,14 @@ End;
Function TSDocxShadingRange.GetShading(arr, hash);
Begin
if arr["entirety"] then
if arr.Entirety then
begin
if not ifnil(hash[arr["entirety"]]) then nil;
hash[arr["entirety"]] := true;
shading := GetShadingObjectByNode(arr["entirety"]);
if not ifnil(hash[arr.Entirety]) then nil;
hash[arr.Entirety] := true;
shading := GetShadingObjectByNode(arr.Entirety);
end
else begin
trun := arr["trun"];
trun := arr.TRun;
if not ifObj(trun.Root()) then return nil;
shading := new TSDocxShading(self.Application, self.Creator, self.Parent);
shading.Init(trun.rPr.Shading);
@@ -91,10 +97,9 @@ Begin
// 这样设计是为了段落走走段落的shadingtable走table的,cell走cell的
SplitRun();
hash := array();
range_arr := rangeObj.GetInfo();
for i:=0 to length(range_arr)-1 do
for i:=0 to range_obj_.Size()-1 do
begin
shading := GetShading(range_arr[i], hash);
shading := GetShading(range_obj_[i], hash);
if ifnil(shading) then continue;
pf := FindFunction(fname, shading);
pf.Do(value);
@@ -105,10 +110,9 @@ Function TSDocxShadingRange.CallFunction(fname);overload;
Begin
hash := array();
ret := nil;
range_arr := rangeObj.GetInfo();
for i:=0 to length(range_arr)-1 do
for i:=0 to range_obj_.Size()-1 do
begin
shading := GetShading(range_arr[i], hash);
shading := GetShading(range_obj_[i], hash);
if ifnil(shading) then continue;
pf := FindFunction(fname, shading);
r := pf.Do();