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

📄 sys_main.pas

📁 开发呼叫中心时
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                    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 + -