新增父类TSVbaBase调整前

This commit is contained in:
csh
2023-10-20 11:06:08 +08:00
parent fec9adacd3
commit cdf4b39350
26 changed files with 3493 additions and 31 deletions
+13 -13
View File
@@ -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);
+42
View File
@@ -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;
+74
View File
@@ -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;