📄 sys_main.pas
字号:
SysState:='签出失败';
UpdateStatusBar(0,SysState);
end;
end;
OPE_OCCP_CALLOUT_RESP:
begin
LoginState:=HEAD_INFO.command_status;
if LoginState = 0 then
begin
SysState:='呼叫中';
UpdateStatusBar(0,SysState);
UpdateStatusBar(6,Tomobile);
PhoneState:=94;
InitButton;
end;
end;
OPE_OCCP_CALLIN_RESP:
begin
LoginState:=HEAD_INFO.command_status;
if LoginState = 0 then
begin
SysState:='呼叫中';
UpdateStatusBar(0,SysState);
UpdateStatusBar(6,DestNo);
PhoneState:=94;
InitButton;
end;
end;
OPE_OCCP_EXCHOUT_RESP:
begin
LoginState:=HEAD_INFO.command_status;
if LoginState = 0 then
begin
UpdateStatusBar(6,ExchPhone);
PhoneState:=94;
InitButton;
end;
end;
OPE_OCCP_EXCHIN_RESP:
begin
LoginState:=HEAD_INFO.command_status;
if LoginState = 0 then
begin
UpdateStatusBar(6,ExchLine);
PhoneState:=94;
InitButton;
end;
end;
OPE_OCCP_ANS_RESP:
begin
LoginState:=HEAD_INFO.command_status;
if LoginState = 0 then
begin
UpdateStatusBar(0,'通话中');
PhoneState:=94;
InitButton;
end
else
begin
UpdateStatusBar(0,'登录示闲');
PhoneState:=91;
InitButton;
end;
end;
OPE_OCCP_HUNGUP_RESP:
begin
LoginState:=HEAD_INFO.command_status;
if LoginState = 0 then
begin
UpdateStatusBar(0,'登录示闲');
PhoneState:=91;
InitButton;
end
else
begin
UpdateStatusBar(0,'挂机失败');
end;
end;
OPE_OCCP_ENQUIRE_LINK_RESP,
OPE_OCCP_GENERIC_NACK_RESP:
begin
//showmessage(IntToStr(HEAD_INFO.csopcode));
end;
else
begin
end;
end;
end;
function TFSys_main.Send_OCCP_BIND: Integer;
var
BIND_INFO:OCCP_BIND;
begin
BIND_INFO.OCCP_HEAD.command_length:=htonl(19);
BIND_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_BIND);
BIND_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(BIND_INFO.Lineno,LineNo);
FormatChar(BIND_INFO.Deskno,DeskNo);
Result:=OpeSocket.Socket.SendBuf(BIND_INFO,SizeOf(BIND_INFO));
end;
function TFSys_main.Send_OCCP_LINK: Integer;
var
HEAD_INFO:OCCP_PDU_HEAD;
begin
HEAD_INFO.command_length:=htonl(12);
HEAD_INFO.csopcode:=htonl(OPE_OCCP_ENQUIRE_LINK);
HEAD_INFO.command_status:=htonl(0);
Result:=OpeSocket.Socket.SendBuf(HEAD_INFO,SizeOf(HEAD_INFO));
end;
function TFSys_main.Send_OCCP_UNBIND: Integer;
var
UNBIND_INFO:OCCP_UNBIND;
begin
UNBIND_INFO.OCCP_HEAD.command_length:=htonl(15);
UNBIND_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_UNBIND);
UNBIND_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(UNBIND_INFO.Lineno,LineNo);
Result:=OpeSocket.Socket.SendBuf(UNBIND_INFO,SizeOf(UNBIND_INFO));
end;
function TFSys_main.Send_OCCP_ANS: Integer;
var
ANS_INFO:OCCP_ANS;
begin
ANS_INFO.OCCP_HEAD.command_length:=htonl(15);
ANS_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_ANS);
ANS_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(ANS_INFO.Lineno,LineNo);
Result:=OpeSocket.Socket.SendBuf(ANS_INFO,SizeOf(ANS_INFO));
end;
function TFSys_main.Send_OCCP_HUNGUP: Integer;
var
HUNGUP_INFO:OCCP_HUNGUP;
begin
HUNGUP_INFO.OCCP_HEAD.command_length:=htonl(15);
HUNGUP_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_HUNGUP);
HUNGUP_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(HUNGUP_INFO.Lineno,LineNo);
Result:=OpeSocket.Socket.SendBuf(HUNGUP_INFO,SizeOf(HUNGUP_INFO));
end;
function TFSys_main.Send_OCCP_CALLIN(DestNo: String): Integer;
var
CALLIN_INFO:OCCP_CALLIN;
begin
CALLIN_INFO.OCCP_HEAD.command_length:=htonl(19);
CALLIN_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_CALLIN);
CALLIN_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(CALLIN_INFO.Lineno,LineNo);
FormatChar(CALLIN_INFO.Destno,DestNo);
Result:=OpeSocket.Socket.SendBuf(CALLIN_INFO,SizeOf(CALLIN_INFO));
end;
function TFSys_main.Send_OCCP_CALLOUT(phonenumber: String): Integer;
var
CALLOUT_INFO:OCCP_CALLOUT;
begin
CALLOUT_INFO.OCCP_HEAD.command_length:=htonl(30);
CALLOUT_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_CALLOUT);
CALLOUT_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(CALLOUT_INFO.Lineno,LineNo);
FormatChar(CALLOUT_INFO.phonenumber,phonenumber);
Result:=OpeSocket.Socket.SendBuf(CALLOUT_INFO,SizeOf(CALLOUT_INFO));
end;
function TFSys_main.Send_OCCP_EXCHIN(DestNo: String): Integer;
var
EXCHIN_INFO:OCCP_EXCHIN;
begin
EXCHIN_INFO.OCCP_HEAD.command_length:=htonl(19);
EXCHIN_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_EXCHIN);
EXCHIN_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(EXCHIN_INFO.Lineno,LineNo);
FormatChar(EXCHIN_INFO.Destno,DestNo);
Result:=OpeSocket.Socket.SendBuf(EXCHIN_INFO,SizeOf(EXCHIN_INFO));
end;
function TFSys_main.Send_OCCP_EXCHOUT(phonenumber: String): Integer;
var
EXCHOUT_INFO:OCCP_EXCHOUT;
begin
EXCHOUT_INFO.OCCP_HEAD.command_length:=htonl(30);
EXCHOUT_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_EXCHOUT);
EXCHOUT_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(EXCHOUT_INFO.Lineno,LineNo);
FormatChar(EXCHOUT_INFO.phonenumber,phonenumber);
Result:=OpeSocket.Socket.SendBuf(EXCHOUT_INFO,SizeOf(EXCHOUT_INFO));
end;
function TFSys_main.Send_OCCP_BUSY: Integer;
var
BUSY_INFO:OCCP_BUSY;
begin
BUSY_INFO.OCCP_HEAD.command_length:=htonl(15);
BUSY_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_BUSY);
BUSY_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(BUSY_INFO.Lineno,LineNo);
Result:=OpeSocket.Socket.SendBuf(BUSY_INFO,SizeOf(BUSY_INFO));
end;
function TFSys_main.Send_OCCP_IDLE: Integer;
var
IDLE_INFO:OCCP_IDLE;
begin
IDLE_INFO.OCCP_HEAD.command_length:=htonl(15);
IDLE_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_IDLE);
IDLE_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(IDLE_INFO.Lineno,LineNo);
Result:=OpeSocket.Socket.SendBuf(IDLE_INFO,SizeOf(IDLE_INFO));
end;
function TFSys_main.Send_OCCP_CLINE: Integer;
var
CLINE_INFO:OCCP_CLINE;
begin
CLINE_INFO.OCCP_HEAD.command_length:=htonl(15);
CLINE_INFO.OCCP_HEAD.csopcode:=htonl(OPE_OCCP_CLINE);
CLINE_INFO.OCCP_HEAD.command_status:=htonl(0);
FormatChar(CLINE_INFO.Lineno,LineNo);
Result:=OpeSocket.Socket.SendBuf(CLINE_INFO,SizeOf(CLINE_INFO));
end;
function TFSys_main.Send_OCCP_SLINE_RESP: Integer;
var
HEAD_INFO:OCCP_PDU_HEAD;
begin
HEAD_INFO.command_length:=htonl(12);
HEAD_INFO.csopcode:=htonl(OPE_OCCP_SLINE_RESP);
HEAD_INFO.command_status:=htonl(0);
Result:=OpeSocket.Socket.SendBuf(HEAD_INFO,SizeOf(HEAD_INFO));
end;
function TFSys_main.Send_OCCP_SPHONE_RESP: Integer;
var
HEAD_INFO:OCCP_PDU_HEAD;
begin
HEAD_INFO.command_length:=htonl(12);
HEAD_INFO.csopcode:=htonl(OPE_OCCP_SPHONE_RESP);
HEAD_INFO.command_status:=htonl(0);
Result:=OpeSocket.Socket.SendBuf(HEAD_INFO,SizeOf(HEAD_INFO));
end;
procedure TFSys_main.SpeedButton3Click(Sender: TObject);
begin
// if PhoneState = 92 then
begin
Send_OCCP_IDLE;
end;
end;
procedure TFSys_main.SpeedButton4Click(Sender: TObject);
begin
// if PhoneState = 91 then
begin
Send_OCCP_BUSY;
end;
end;
function TFSys_main.MyInputQuery(const ACaption, APrompt: string;
var Value: string;Len:Integer = 255): Boolean;
function MyGetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
Button: TButton;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := False;
Form := TForm.Create(Application);
with Form do
try
Font.Assign(FSys_main.Font);
Canvas.Font := Font;
DialogUnits := MyGetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
ClientHeight := MulDiv(63, DialogUnits.Y, 8);
Position := poScreenCenter;
Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
AutoSize := True;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Caption := APrompt;
end;
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := MulDiv(19, DialogUnits.Y, 8);
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := Len;
OnKeyPress:=EditKeyPress;
Text := Value;
//edit.SetFocus
SelectAll;
end;
ButtonTop := MulDiv(41, DialogUnits.Y, 8);
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
Button :=TButton.Create(Form);
with Button do
begin
Parent := Form;
Caption := '确定';
ModalResult := mrOk;
Default := False;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := '取消';
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
FormA:=Form;
if ShowModal = mrOk then
begin
Value := Edit.Text;
Result := True;
{
if MessageBox(Handle,'要关闭这个程序吗?','例子程序-4',MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
Value := Edit.Text;
Result := True;
end
else
begin
showmodal:=mrNo;
Value := '';
Result := True;
end;
}
end;
finally
Form.Free;
end;
end;
function TFSys_main.MyInputBox(const ACaption, APrompt, ADefault: string;Len:Integer = 255): string;
begin
Result := ADefault;
MyInputQuery(ACaption, APrompt, Result,Len);
end;
procedure TFSys_main.EditKeyPress(Sender: TObject; var Key: Char);
begin
if Not (key in ['0'..'9',',',#8,#13]) then
key:=#0;
if key = #13 then
begin
TButton(forma.Components[2]).SetFocus;
end;
end;
procedure TFSys_main.SpeedButton9Click(Sender: TObject);
//var
// destNo:String;
begin
destNo:=MyInputBox('话务台','请输入要呼叫的内线号码 ','',3);
if destNo<> '' then
begin
Send_OCCP_CALLIN(destNo);
end;
end;
procedure TFSys_main.SpeedButton11Click(Sender: TObject);
//var
// mobile:String;
begin
Tomobile:=MyInputBox('话务台','请输入要呼叫的电话号码 ','',21);
if Tomobile<> '' then
begin
Send_OCCP_CALLOUT(Tomobile);
end;
end;
procedure TFSys_main.SpeedButton10Click(Sender: TObject);
begin
Application.CreateForm(TFExch, FExch);
if FExch.ShowModal <> mrCancel then
begin
case ExchType of
0:
begin
Send_OCCP_EXCHIN(ExchLine);
end;
1:
begin
Send_OCCP_EXCHOUT(ExchPhone);
end;
end;
end;
end;
procedure TFSys_main.CoolTrayIcon1DblClick(Sender: TObject);
begin
CoolTrayIcon1.ShowMainForm;
end;
procedure TFSys_main.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if CHClose then
begin
CanClose:=True;
end
else
begin
CanClose:=False;
CoolTrayIcon1.HideMainForm;
CoolTrayIcon1.IconVisible := True;
end;
end;
procedure TFSys_main.SpeedButton2Click(Sender: TObject);
begin
if PhoneState <> 0 then
begin
Send_OCCP_UNBIND;
end;
end;
procedure TFSys_main.SpeedButton5Click(Sender: TObject);
begin
sndPlaySound(nil, 0);
SpeedButton5.Glyph:=nil;
SpeedButton5.Caption:='摘机';
Send_OCCP_ANS;
end;
procedure TFSys_main.SpeedButton6Click(Sender: TObject);
begin
Send_OCCP_HUNGUP;
end;
procedure TFSys_main.FortmatString(var StrTemp: String);
var
i:integer;
begin
for i:=1 to Length(StrTemp) do
begin
if StrTemp[i] = #0 then
StrTemp[i]:='#';
end;
StrTemp:=stringReplace(StrTemp,'#','',[rfReplaceAll,rfIgnoreCase]);
end;
procedure TFSys_main.StatusBar1DblClick(Sender: TObject);
begin
Panel1.Visible := not Panel1.Visible;
with FSys_Main do
begin
AutoSize := false;
height := 88;
AutoSize := True;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -