range重新设计

This commit is contained in:
csh
2023-11-29 17:27:34 +08:00
parent 3781bc96e7
commit f0560b2330
28 changed files with 2829 additions and 383 deletions
+12 -14
View File
@@ -2,7 +2,7 @@ Type TSDocxBorderRange = Class(TSDocxBorder)
Uses TSDocxEnumerations;
public
Function Init(arr, borderType);
Function Init(rangeObj, borderType);
private
Function GetBorderObjectByNode(node);
@@ -12,9 +12,8 @@ private
Function SplitRun();
private
range_arr_;
range_obj_;
border_type_;
split_flag_;
public
Function WriteVisible(value);override;
@@ -36,20 +35,17 @@ End;
// ============== 实现 ================= //
Function TSDocxBorderRange.Init(arr, borderType);
Function TSDocxBorderRange.Init(rangeObj, borderType);
Begin
range_arr_ := arr;
range_obj_ := rangeObj;
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;
range_obj_.SplitRangeRun();
self.Parent.SetRangeObj(range_obj_);
End;
Function TSDocxBorderRange.GetBorder(arr, hash);
@@ -100,9 +96,10 @@ Function TSDocxBorderRange.CallFunction(fname, value);overload;
Begin
SplitRun();
hash := array();
for i:=0 to length(range_arr_)-1 do
range_arr := rangeObj.GetInfo();
for i:=0 to length(range_arr)-1 do
begin
border := GetBorder(range_arr_[i], hash);
border := GetBorder(range_arr[i], hash);
if ifnil(border) then continue;
pf := FindFunction(fname, border);
pf.Do(value);
@@ -112,10 +109,11 @@ End;
Function TSDocxBorderRange.CallFunction(fname);overload;
Begin
hash := array();
range_arr := rangeObj.GetInfo();
ret := nil;
for i:=0 to length(range_arr_)-1 do
for i:=0 to length(range_arr)-1 do
begin
border := GetBorder(range_arr_[i], hash);
border := GetBorder(range_arr[i], hash);
if ifnil(border) then continue;
pf := FindFunction(fname, border);
r := pf.Do();
+4 -4
View File
@@ -6,20 +6,20 @@ public
Function GetBorder(index);override;
private
paragraph_; // TOfficeObj("TParagraph")
pr_; // TOfficeObj("TwpPr")
End;
// ============== 实现 ================= //
Function TSDocxBordersParagraph.Init(paragraph);
Function TSDocxBordersParagraph.Init(pr);
Begin
paragraph_ := paragraph;
pr_ := pr;
End;
Function TSDocxBordersParagraph.GetBorder(index);override;
Begin
obj := paragraph_.pPr.Bdr;
obj := pr_.Bdr;
case index of
TSDocxEnumerations.wdBorderBottom():
border := obj.Bottom;
+5 -5
View File
@@ -1,11 +1,11 @@
Type TSDocxBordersRange = Class(TSDocxBorders)
public
Function Init(arr);
Function Init(rangeObj);
Function Operator[](index);override;
private
range_arr_;
range_obj_;
public
Function Item(Index);override;
@@ -14,15 +14,15 @@ End;
// ============== 实现 ================= //
Function TSDocxBordersRange.Init(arr);
Function TSDocxBordersRange.Init(rangeObj);
Begin
range_arr_ := arr;
range_obj_ := rangeObj;
End;
Function Operator TSDocxBordersRange.[](index);override;
Begin
border_obj := new TSDocxBorderRange(self.Application, self.Creator, self.Parent);
border_obj.Init(range_arr_, index);
border_obj.Init(range_obj_, index);
return border_obj;
End;