新增父类TSVbaBase调整前
This commit is contained in:
+13
-13
@@ -1,26 +1,26 @@
|
||||
Type Collection = class
|
||||
Type Collection = Class
|
||||
|
||||
public
|
||||
Function Create();
|
||||
Function SetIgnoreCase(value);
|
||||
Function SetActivate(value);
|
||||
Function GetActivate();
|
||||
Function CalNewName(prefix);
|
||||
Function CompareFunction(index, data);
|
||||
|
||||
Function SetIgnoreCase(value);
|
||||
Function SetActivation(value);
|
||||
Function GetActivation();
|
||||
Function CalNewName(prefix);
|
||||
Function AddCollection(obj, name);
|
||||
Function RemoveCollection(index);
|
||||
Function Operator[](index);
|
||||
Function GetCount();
|
||||
|
||||
public
|
||||
class Function GetInstance(value);
|
||||
|
||||
private
|
||||
ignorecase_; // 忽略大小写
|
||||
container_; // 容器对象
|
||||
fp_; // 函数指针 -- 用来比较
|
||||
activate_; // 激活的对象
|
||||
activation_; // 激活的对象
|
||||
|
||||
public
|
||||
class Function GetInstance(value);
|
||||
|
||||
private
|
||||
static collection_;
|
||||
@@ -40,14 +40,14 @@ Begin
|
||||
ignorecase_ := value;
|
||||
End;
|
||||
|
||||
Function Collection.SetActivate(value);
|
||||
Function Collection.SetActivation(value);
|
||||
Begin
|
||||
activate_ := self[value];
|
||||
activation_ := self[value];
|
||||
End;
|
||||
|
||||
Function Collection.GetActivate();
|
||||
Function Collection.GetActivation();
|
||||
Begin
|
||||
return activate_;
|
||||
return activation_;
|
||||
End;
|
||||
|
||||
Function Collection.CompareFunction(index, data);
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
Type TSVbaBase = class
|
||||
|
||||
public
|
||||
Function Create(app, par, cre);
|
||||
|
||||
private
|
||||
application_;
|
||||
parent_;
|
||||
creator_;
|
||||
|
||||
property Application read ReadApplication;
|
||||
property Parent read ReadParent;
|
||||
property Creator read ReadCreator;
|
||||
Function ReadApplication();
|
||||
Function ReadParent();
|
||||
Function ReadCreator();
|
||||
|
||||
End;
|
||||
|
||||
// ============== 实现 ================= //
|
||||
Function TSVbaBase.Create(app, par, cre);
|
||||
Begin
|
||||
application_ := app;
|
||||
parent_ := par;
|
||||
creator_ := cre;
|
||||
End;
|
||||
|
||||
// property
|
||||
Function TSVbaBase.ReadApplication();
|
||||
Begin
|
||||
return application_;
|
||||
End;
|
||||
|
||||
Function TSVbaBase.ReadParent();
|
||||
Begin
|
||||
return parent_;
|
||||
End;
|
||||
|
||||
Function TSVbaBase.ReadCreator();
|
||||
Begin
|
||||
return creator_;
|
||||
End;
|
||||
@@ -0,0 +1,74 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user