📄 s2.tools.ts2modelhandle.pas
字号:
unit S2.Tools.TS2ModelHandle;
interface
uses
Classes, S2.Model.TS2Model;
type
TS2ModelHandle = class
private
Model: TS2Model;
ModelClass: TS2ModelClass;
SystemObject: TComponent;
RefCount: Integer;
public
function GetModel: TS2Model;
function GetRefCount: Integer;
function GetModelName: ShortString;
procedure FreeModel;
private
procedure DecRefCount;
procedure IncRefCount;
procedure CreateModel;
procedure DestroyModel;
public
constructor Create(ModelClass: TS2ModelClass; SystemObject: TComponent);
destructor Destroy; override;
end;
implementation
uses
SysUtils;
{ TS2ModelHandle }
constructor TS2ModelHandle.Create(ModelClass: TS2ModelClass; SystemObject: TComponent);
begin
inherited Create;
Self.ModelClass := ModelClass;
Self.SystemObject := SystemObject;
RefCount := 0;
end;
procedure TS2ModelHandle.DecRefCount;
begin
Dec(RefCount);
end;
destructor TS2ModelHandle.Destroy;
begin
DestroyModel;
inherited;
end;
procedure TS2ModelHandle.FreeModel;
begin
if RefCount > 0 then
DecRefCount
else if RefCount < 1 then
FreeAndNil(Model);
end;
function TS2ModelHandle.GetModel: TS2Model;
begin
if not Assigned(Model) or (RefCount < 1) then
CreateModel;
RefCount := 1;
Result := Model;
end;
function TS2ModelHandle.GetModelName: ShortString;
begin
Result := ModelClass.ClassName;
end;
function TS2ModelHandle.GetRefCount: Integer;
begin
Result := RefCount;
end;
procedure TS2ModelHandle.IncRefCount;
begin
Inc(RefCount);
end;
procedure TS2ModelHandle.CreateModel;
begin
Model := ModelClass.Create(SystemObject);
Model.InitModel;
end;
procedure TS2ModelHandle.DestroyModel;
begin
FreeAndNil(Model);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -