📄 dm_client.pas
字号:
unit dm_Client;
interface
uses
SysUtils, Classes, ScktComp, Dialogs, Forms, MConnect, ObjBrkr, DB,
DBClient, SConnect;
type
TdmClient = class(TDataModule)
CSocket: TClientSocket;
SocketConnection1: TSocketConnection;
SimpleObjectBroker1: TSimpleObjectBroker;
CDSuserRight: TClientDataSet;
procedure CSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
procedure CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmClient: TdmClient;
implementation
uses Global, ClientMain;
{$R *.dfm}
procedure TdmClient.CSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
case errorevent of
eeconnect:
begin
MessageDlg('远程连接错误'+#13#10+'请尝试重新启动中间层和SCKTSRVR',mtError,[mbOk],0);
end;
eeSend:
MessageDlg('发送错误',mtError,[mbOk],0);
eeReceive:
MessageDlg('接收错误',mtError,[mbOk],0);
eeDisconnect:
MessageDlg('断开错误',mtError,[mbOk],0);
eeLookup:
MessageDlg('查找错误',mtError,[mbOk],0);
end;
Errorcode:=0;
end;
procedure TdmClient.DataModuleCreate(Sender: TObject);
begin
socketconnection1.LoginPrompt:=False;
socketconnection1.Connected:=False;
if not socketconnection1.Connected then
begin
try
with simpleobjectbroker1 do
begin
if Servers.Count = 0 then
begin
Servers.Add;
Servers.Items[0].ComputerName:=SServerIP;
end
else
begin
Servers.Add;
Servers.Items[Servers.Count-1].ComputerName:=SServerIP;
end;
end;
simpleobjectbroker1.LoadBalanced:=True;
socketconnection1.ObjectBroker:=simpleobjectbroker1;
socketconnection1.ServerGUID:='{C3E65EEF-9C13-436C-AA24-C2E1BAF783D7}';
socketconnection1.ServerName:='ServerMain.untPooler';
socketconnection1.Connected:=True;
except
on E:exception do
begin
messagedlg('连接中间层错误 ! ',mtError,[mbok],0);
abort;
end;
end;
end;
if socketconnection1.Connected then
isScoketconnectionopen:=True
else
isScoketconnectionopen:=False;
end;
procedure TdmClient.DataModuleDestroy(Sender: TObject);
begin
socketconnection1.Connected:=false;
socketconnection1.ObjectBroker:=nil;
socketconnection1.ServerGUID:='';
socketconnection1.ServerName:='';
simpleobjectbroker1.LoadBalanced:=False;
simpleobjectbroker1.Servers.Clear;
end;
procedure TdmClient.CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
var
str:string;
begin
str:=CSocket.Socket.ReceiveText ;
if str=c_Disconnect then
begin
MessageDlg('服务器已经断开该机连接,请立即退出 ! ', mtInformation,[mbOk], 0);
frmclientMain.Close ;
Application.Terminate ;
end
else if copy(str,1,3)=c_Msg then
begin
MessageDlg('服务器消息 : ['+SrNow()+']:'+#13#10+copy(str,4,length(str)-3), mtInformation,[mbOk], 0);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -