?? djcccx.pas.bak
字號:
unit DjCCCx;
interface
uses
SysUtils, Classes,idTcpClient,DjBase,DjCBase,Controls,uSeatThread,windows
,Messages,Forms,unitHsMessagePub;
{
咱聞那西天佛祖,也不過要黃金鋪地;陰司十殿,也要些楮鏹營求。咱只消盡這家私廣為善事,就使強奸了嫦娥,和奸了織女,拐了許飛瓊,盜了西王母的女兒,也不減我潑天富貴!
上邪,我欲與君相知,長命無絕衰。山無陵,江水為竭,冬雷震震,夏雨雪,天地合,乃敢與君絕!
青青河畔草,郁郁園中柳。盈盈樓上女,皎皎當窗牖。娥娥紅粉妝,纖纖出素手。昔為倡家女,今為蕩子婦。蕩子行不歸,空床難獨守。
《乘興走筆》總第732期曉薇的博客專輯
衣香鬢影,宛若當年
告別清水無塵的文字,已經太久。不在夜晚的風口佇足回眸,也已經太久。浸在活色生香的日子里,每每不敢回首,害怕一些煙火氣,將往昔籠罩,改變了原來的顏色。
今夜微風輕輕吹,沒有朗月清照,凈手潔面,輕輕回望那年五月,知遇的季節。燈火通明,照亮一襲青衣和紅紅的裙裾,那一刻,有著夢幻般表情的女子怎會想到,一場盛夏的熱烈注定要深入她的內心乃至骨髓,驅散她生命的荒涼。
不舍得常?;貞?。只在洗盡鉛華的某一刻,打開雕花漆盒,夢幻般的表情重現,一點一滴的細節,只如夜風,吹開山間溪邊的那一簇薔薇。星星點點的馨香,恍若人間最美好的牽掛,君心未改,紅顏不老。
人世所有的熱鬧,不過是一場虛無的盛宴。我們好好地上演著我們的世俗,盡力盡責,華麗或樸素地活著,那是上帝分派給我們的任務。而在內心,總有另一番莊嚴,是對知己的尊重與感激。
夜風泠泠,環佩空歸。無語的人生并非一個蒼涼的手勢。臨鏡照花,衣香鬢影,宛若當年。
}
type
TDjExceptionEvent = procedure(Sender:TObject;ErrorCode:integer;AException:Exception) of object;
TLoginEvent = procedure(Sender:TObject;LoginResult:Integer) of object;
TOnDialInEvent = procedure(Sender:TObject;CallType,ChnlID:word;CallerPhone,ReceiverPhone:string) of object;
//用戶自定義事件
TUserDefEvent = procedure(Sender:TObject;EventNum:word;EventStr:array of char) of object;
//TLoginResult =();
TOnOtherHangEvent = procedure(Sender:TObject;OtherPhone:String) of object;
TOnKeepEvent = procedure(Sender:TObject;KeepResult:integer) of object;
TOnGetKeepEvent = procedure(Sender:TObject;ChnlID:integer;KeepResult:integer) of object;
TOnRecordEvent = procedure(Sender:TObject;FileName:string) of object;
TDjCCCx = class(TDjCBase)
private
{ Private declarations }
FWindowHandle: HWND;
idTcpClient : TIdTCPClient ;
FConnect :Boolean ;
FHost : string;
FPort : integer;
ClientThread :TClentThread ;
FOnConnect :TNotifyEvent ; //連接成功
FOnDisConnect :TNotifyEvent; //斷開連接
FOnException :TDjExceptionEvent ; //組件內部異常
FAfterLogin :TLoginEvent; //注冊后處理
FOnLoginOff:TLoginEvent; //注銷后處理
FOnDialIn :TOnDialInEvent ; //來電
FOnLink :TNotifyEvent ; //接通來電
FOnHook :TNotifyEvent; //摘機
FOffHook :TNotifyEvent; //掛機
FOnCallSucess:TNotifyEvent; //呼叫成功
FOnCallFail :TNotifyEvent; //呼叫失敗
FOnOtherHang :TOnOtherHangEvent; //對方掛機
FOnUserDef :TUserDefEvent ; //未定義消息
FOnKeep:TOnKeepEvent; //保持
FOnGetKeep:TOnGetKeepEvent; //取保持
FOnClearThree:TNotifyEvent ;
FOnLinkThree:TNotifyEvent ;
FOnRecord : TOnRecordEvent;
FOnPlayBegin : TNotifyEvent;
FOnPlayEnd : TNotifyEvent ;
FChannelID:word;
procedure SetHost(aHost :string);
procedure SetPort(aport :integer);
procedure SetConnect(aConnect :Boolean);
procedure WndProc(var Msg: TMessage);
procedure TestProc;
procedure MsgManager;
procedure LoginSucess(HsMsg:PHsMessage);
procedure ErrorMsgManager(HsMsg:PHsMessage);
procedure UserDefMsgManager(HsMsg:PHsMessage);
procedure CallIn(HsMsg:PHsMessage);
procedure idTcpClientOnConnect(Sender:TObject);
procedure idTcpClientOnDisConnect(Sender:TObject);
procedure SendMsgToSvr(aHsMsg:THsMessage);
protected
{ Protected declarations }
public
{ Public declarations }
constructor create(AOwner:TComponent);override;
destructor Destroy;override;
procedure SetAppConfig(Host:string;Port:integer);
procedure Login(ChannelID:word;StaffID:string;SeatType :word =0;ExpType1 :word =0;
ExpType2 :word =0;ExpType3 :word =0;ExpType4 :word =0;ExpType5 :word =0);
procedure LoginOut;
procedure HangUp; ///掛機
procedure ActiveHookUp; //主動摘機坐席
procedure PassiveHookUp; //被動摘機坐席(振鈴摘機)
procedure CallOut(ChnlID:word);overload;
procedure CallOut(Caller,Dailer:string);overload;
procedure CallOut(Dailer:string);overload;
procedure Keep; //保持來電
procedure GetKeep(CallerPhone:string); //取保持來電
procedure LinkThree(CallerPhone:String);overload;
procedure ClearThree(CallerPhone:String);overload;
procedure LinkThree(ChnlID:integer);overload;
procedure ClearThree(ChnlID:integer);overload;
procedure Enjoy(PlayFile:string);
procedure StopEnjoy;
//procedure CallOut(CHnlID:word;Dailer:string);overlaod;
published
{ Published declarations }
property Host :string read FHost write SetHost;
property Port :integer read FPort write SetPort ;
property Connect :Boolean read FConnect write SetConnect ;
property OnConnected :TNotifyEvent read FOnConnect write FOnConnect;
property OnDisConnected :TNotifyEvent read FOnDisConnect write FOnDisConnect;
property OnException :TDjExceptionEvent read FOnException write FOnException ;
property AfterLogin :TLoginEvent read FAfterLogin write FAfterLogin ;
property OnDialIn :TOnDialInEvent read FOnDialIn write FOnDialIn ;
property OnLink :TNotifyEvent read FOnLink write FOnLink ;
property OnHook:TNotifyEvent read FOnHook write FOnHook ;
property OffHook :TNotifyEvent read FOffHook write FOffHook ;
property OnCallSucess :TNotifyEvent read FOnCallSucess write FOnCallSucess;
property OnCallFail:TNotifyEvent read FOnCallFail write FOnCallFail ;
property OnLoginOff:TLoginEvent read FOnLoginOff write FOnLoginOff;
property OnOtherHang:TOnOtherHangEvent read FOnOtherHang write FOnOtherHang ;
property OnUserDef:TUserDefEvent read FOnUserDef write FOnUserDef;
property OnKeep:TOnKeepEvent read FOnKeep write FOnKeep ;
property OnGetKeep:TOnGetKeepEvent read FOnGetKeep write FOnGetKeep ;
property OnLinkThree:TNotifyEvent read FOnLinkThree write FOnLinkThree;
property OnClearThree:TNotifyEvent read FOnClearThree write FOnClearThree;
property OnRecord:TOnRecordEvent read FOnRecord write FOnRecord ;
property OnPlayBegin:TNotifyEvent read FOnPlayBegin write FOnPlayBegin ;
property OnPlayEnd:TNotifyEvent read FOnPlayEnd write FOnPlayEnd;
end;
procedure Register;
implementation
uses unitWriteLogThread, uSysStr;
procedure Register;
begin
RegisterComponents('DjBK', [TDjCCCx]);
end;
{ TDjCCCx }
procedure TDjCCCx.CallIn(HsMsg: PHsMessage);
var
CallInStruct:pCallInStruct ;
begin
CallInStruct := @(HsMsg.m_pMessage);
if Assigned(FOnDialin) then
begin
FOnDialIn(Self,CallInStruct.CallType,CallInStruct.ChnlID
,CallInStruct.CallerPhone,CallInStruct.ReceiverPhone);
end;
end;
constructor TDjCCCx.create(AOwner: TComponent);
begin
inherited create(AOwner);
FConnect := false ;
FHost := '';
FPort := 0 ;
InitCS;
FWindowHandle := Classes.AllocateHWnd(WndProc);
if not (csDesigning in ComponentState) then
begin
idTcpClient := TIdTCPClient.Create(self);
ClientThread := TClentThread.create(FWindowHandle,idTcpClient);
AddLogToListB('開始運行','客戶端',LogError);
idTcpClient.OnConnected := idTcpClientOnConnect ;
idTcpClient.OnDisconnected := idTcpClientOnDisConnect ;
end;
MsgList := TMsgList.Create;
end;
destructor TDjCCCx.Destroy;
begin
Classes.DeallocateHWnd(FWindowHandle);
idTcpClient.Free;
AddLogToListB('結束運行','客戶端',LogError);
DeleteCS;
inherited;
end;
procedure TDjCCCx.ErrorMsgManager(HsMsg:PHsMessage);
var
ErrorStruct:pErrorStruct;
begin
ErrorStruct := @(HsMsg.m_pMessage);
case TMsgType(ErrorStruct.SeatId) of
U_MSG_LOGON:
begin
if Assigned(FAfterLogin) then
begin
FAfterLogin(self,ErrorStruct.ErrorID);
end;
end;
D_MSG_ERROR:
begin
if Assigned(FOnException) then
begin
FOnException(self,E_THREADTOSERVER,Exception.Create(ErrorStruct.ErrorStr));
end;
idTcpClient.Disconnect;
end;
else
begin
AddLogToList('收到錯誤消息','');
end;
end;
end;
{-------------------------------------------------------------------------------
過程名: TDjCCCx.HangUp
作者: 姜亦文
日期: 2006.09.08
參數: 無
返回值: 無
-------------------------------------------------------------------------------}
procedure TDjCCCx.HangUp;
begin
SendMsgToSvr(AssembleMessage_Up_HangOn(FChannelID));
end;
procedure TDjCCCx.idTcpClientOnConnect(Sender: TObject);
begin
FConnect := idTcpClient.Connected ;
if Assigned(FOnConnect) then FOnConnect(self);
end;
procedure TDjCCCx.idTcpClientOnDisConnect(Sender: TObject);
var
i:Integer ;
begin
FConnect := idTcpClient.Connected ;
i:=0 ;
while not ClientThread.Suspended do
begin
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -