📄 s2.model.ts2clientdatamodel.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 + -