第六节 服务器端进行客户计数
除了上面的功能外,这个程序还加上了一个在线用户以及查询用户统计
的功能。由于这个应用程序执行模式是 Multiple Instance执行模式,所以
当某个前台第一次连上线后,应用程序服务器会激活RemoteDataModule的
事件程序,而断线后又会执行OnDestroy事件程序,因此就可以用这两个事件
计算连上服务器的用户个数。至于Query个数的计算,则由TQuery的OnAfterOpen
事件函数判断。
-----------------------------------------------------------------
Form1部分,主要用于显示
-----------------------------------------------------------------
procedure TMainForm.UpdateClientCount(Incr: Integer);
begin
FClientCount := FClientCount + Incr;
ClientCount.Caption := IntToStr(FClientCount);
end;
procedure TMainForm.IncQueryCount;
begin
Inc(FQueryCount);
QueryCount.Caption := IntToStr(FQueryCount);
end;
--------------------------------------------------------
COM部分
--------------------------------------------------------
procedure TTest125Server.RemoteDataModuleCreate(Sender: TObject);
begin
// 增加一位前台上线者(调用Form1上的程序)
MainForm.UpdateClientCount(1);
end;
procedure TTest125Server.RemoteDataModuleDestroy(Sender: TObject);
begin
// 减少一位前台上线者(调用Form1上的程序)
MainForm.UpdateClientCount(-1);
end;
procedure TTest125Server.AdHocQueryAfterOpen(DataSet: TDataSet);
begin
// 新打开一个TQuery查询(调用Form1上的程序)
MainForm.IncQueryCount;
end;
上述完整的客户/服务器数据库实例,见SQL服务器和SQL客户端两个程
序,数据源部分需要自己调整。
(出处:DelphiFans.com)