⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s2.tools.ts2modelhandle.pas

📁 轉載的程序應用框架
💻 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 + -