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

📄 servrdmu.pas

📁 《Delphi开发人员指南》配书原码
💻 PAS
字号:
unit servrdmu;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComServ, ComObj, VCLCom, StdVcl, BdeProv, DataBkr, mtserv_TLB, Provider,
  Db, DBTables, DBClient;

type
  TServRDM = class(TDataModule, IServRDM)
    EmployTable: TTable;
    EmployeeProvider: TProvider;
    procedure EmployeeProviderGetData(DataSet: TClientDataSet);
    procedure EmployeeProviderUpdateData(DataSet: TClientDataSet);
    procedure ServRDMCreate(Sender: TObject);
    procedure ServRDMDestroy(Sender: TObject);
    procedure EmployeeProviderUpdateError(DataSet: TClientDataSet;
      E: EUpdateError; UpdateKind: TUpdateKind;
      var Response: TResolverResponse);
  private
    { Private declarations }
    FClientStr: String;
    FClientID : Integer;
  public
    { Public declarations }
  protected
    function Get_EmployeeProvider: IProvider; safecall;
    procedure DoLogin(const ClientStr: WideString; var ClientID: Integer); safecall;
  end;

var
  ServRDM: TServRDM;

implementation

uses ServMain;

{$R *.DFM}

procedure TServRDM.EmployeeProviderGetData(DataSet: TClientDataSet);
begin
  ServMainForm.AddEventToList('Data Retrieved', FClientID);
end;

procedure TServRDM.EmployeeProviderUpdateData(DataSet: TClientDataSet);
begin
  ServMainForm.AddEventToList('Data Updated', FClientID);
end;

function TServRDM.Get_EmployeeProvider: IProvider;
begin
  Result := EmployeeProvider.Provider;
end;

procedure TServRDM.DoLogin(const ClientStr: WideString;
  var ClientID: Integer);
begin
  FClientStr   := ClientStr;
  ServMainForm.AddEventToList('Log in', FClientID);
  ClientID := FClientID;
  ServMainForm.AddClientToList(ClientStr, ClientID);
end;

procedure TServRDM.ServRDMCreate(Sender: TObject);
begin
  { Retrieve the next client login id }
  FClientID := ServMainForm.GetNextID;
end;

procedure TServRDM.ServRDMDestroy(Sender: TObject);
begin
  { Remove the client ID from the server's global list }
  ServMainForm.RemoveID(FClientID);
  { Indicate that server is logging out in the list view }
  ServMainForm.AddEventToList('Log out', FClientID);
  { Remove the client from the list view }
  ServMainForm.RemoveClientFromList(FClientID);
end;

procedure TServRDM.EmployeeProviderUpdateError(DataSet: TClientDataSet;
  E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
  { Add the error information to the event list. }
  ServMainForm.AddEventToList(E.Message, FClientID);
  { Do not apply updates to the server }
  Response := rrSkip;
end;

initialization
  TComponentFactory.Create(ComServer, TServRDM,
    Class_ServRDM, ciMultiInstance);
end.

⌨️ 快捷键说明

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