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

📄 s2.model.ts2clientdatamodel.pas

📁 轉載的程序應用框架
💻 PAS
字号:
unit S2.Model.TS2ClientDataModel;

interface

uses
  DB, DBClient, Types, S2.Tools.TS2Field, S2.Tools.TS2Record, S2.Model.IS2DataObject, S2.Model.TS2Model,
  S2.Model.IS2DataNavigation, S2.Model.TS2ServerDataModel, S2.Model.IS2BusinessObject,
  S2.Model.IS2DataAdapter, S2.Model.IS2DataService, S2.Tools.TS2RecordList,
  Classes, S2.Model.TS2DataModel;

type
  TS2ClientDataModel = class(TS2DataModel, IS2DataNavigation)
    _ClientDataSet: TClientDataSet;
    _DataSource: TDataSource;
  private
    _ServerDataModel: TS2ServerDataModel;
  protected
    function GetServerDataModel: TS2ServerDataModel;
  public
    function GetBusinessObject: IS2BusinessObject; virtual;
    function GetDataAdapter: IS2DataAdapter; virtual;
    function GetDataObject: IS2DataObject; virtual;
    function GetDataService: IS2DataService; virtual;
    function GetDataSource: TDataSource; virtual;
    procedure OpenByCondition(const Condition: string);
  public  //  S2.Model.IS2DataNavigation
    function Locate(Fields: TS2Record; const IsPartialKey: Boolean): Boolean; virtual;
    procedure First(); virtual;
    procedure Last(); virtual;
    procedure Next(); virtual;
    procedure Prior(); virtual;
  public
    constructor Create(Model: TS2ServerDataModel); overload;
    destructor Destroy; override;
  public
    function GetCaption: string; override;
    function GetDataSet: TDataSet; override;      
  end;

implementation

uses
  S2.Model.TS2ServerDataModelFactory;

{$R *.dfm}

{ TS2ClientDataModel }

constructor TS2ClientDataModel.Create(Model: TS2ServerDataModel);
begin
  inherited Create(Model);
  _ServerDataModel := Model;
  _ServerDataModel.OpenModel(nil);
  _ClientDataSet.CloneCursor(Model._ClientDataSet, True);
  _ClientDataSet.Open;
end;

destructor TS2ClientDataModel.Destroy;
var
  ServerDataModelFactory: TS2ServerDataModelFactory;
begin
  ServerDataModelFactory := GetSystemObject.GetServerDataModelFactory as TS2ServerDataModelFactory;
  ServerDataModelFactory.FreeModel(TS2ModelClass(GetServerDataModel));
  inherited;
end;

procedure TS2ClientDataModel.First;
begin
  if IsValid then GetDataSet.First;
end;

function TS2ClientDataModel.GetBusinessObject: IS2BusinessObject;
begin
  Result := GetServerDataModel;
end;

function TS2ClientDataModel.GetCaption: string;
begin
  Result := GetServerDataModel.GetCaption;
end;

function TS2ClientDataModel.GetDataAdapter: IS2DataAdapter;
begin
  Result := nil;
end;

function TS2ClientDataModel.GetDataObject: IS2DataObject;
begin
  Result := Self;
end;

function TS2ClientDataModel.GetDataService: IS2DataService;
begin
  Result := GetServerDataModel;
end;

function TS2ClientDataModel.GetDataSet: TDataSet;
begin
  Result := _ClientDataSet;
end;

function TS2ClientDataModel.GetDataSource: TDataSource;
begin
  Result := _DataSource;
end;

function TS2ClientDataModel.GetServerDataModel: TS2ServerDataModel;
begin
  Result := _ServerDataModel;
end;

procedure TS2ClientDataModel.Last;
begin
  if IsValid then GetDataSet.Last;
end;

function TS2ClientDataModel.Locate(Fields: TS2Record; const IsPartialKey: Boolean): Boolean;
begin
  Result := LocateByKey(Fields, IsPartialKey);
end;

procedure TS2ClientDataModel.Next;
begin
  if IsValid then GetDataSet.Next;
end;

procedure TS2ClientDataModel.OpenByCondition(const Condition: string);
begin
  GetServerDataModel.OpenByCondition(Condition);
end;

procedure TS2ClientDataModel.Prior;
begin
  if IsValid then GetDataSet.Prior;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -