range重新设计
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user