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

📄 main.pas

📁 电话成绩查询系统是通过电话公布成绩的自动服务系统.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
          begin
            if AnswerTime>3 then
            begin
              CurrentState :=state_s_bye;
              ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\bye.wav');
              Exit;
            end
            else
            begin
              inc(AnswerTime);
              currentState := state_s_over;
              Timer1.Enabled:=True;              
              ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\over.wav');
              Exit;
            end;  
          end;
        state_s_bye :
          begin
            CurrentState := State_Idle;
            CallerID.Text :='';
            CallerIDName.Text :='';
            ApdTapiDevice1.CancelCall;
            shape1.Brush.Color:=clWhite;
            lbStatus.Caption := '等候来电';
            Timer2.Enabled :=True;            
            Exit;
          end;
      end;
  end;
end;

//来电显示,需要申请来电显示的功能,且Modem具有来电显示功能
procedure TfrmMain.ApdTapiDevice1TapiCallerID(CP: TObject; ID,
  IDName: String);
begin
  CallerId.Text := ID;
  CallerIdName.Text := IDName;
end;

//设置录音的长度
procedure TfrmMain.MaxLengthEditExit(Sender: TObject);
begin

end;


//弹出菜单中删除选项,用于列表中的录音项
procedure TfrmMain.Delete1Click(Sender: TObject);
begin
  CallsListBox.Items.Delete(CallsListBox.ItemIndex);
end;

//根据当前选项初始化弹出菜单
procedure TfrmMain.PopupMenu1Popup(Sender: TObject);
begin

end;

 //使用声卡扩音
procedure TfrmMain.MonitorClick(Sender: TObject);
begin
  ApdTapiDevice1.MonitorRecording := Monitor.Checked;
end;

//检测DTMF键
procedure TfrmMain.ApdTapiDevice1TapiDTMF(CP: TObject; Digit: Char;
  ErrorCode: Integer);
var
  tmpStr:String;
  tmpInt:Integer;
begin
  if (CurrentState= state_s_Input) then
  begin
      case Digit of
      '0'..'9':
        begin
          Timer1.Enabled :=False;  //disable bye.wav
          Timer1.Enabled :=True;   //enable bye.wav again      
          if(IDCount<6) then
          begin
            inc(IDCount);            
            arID[IDCount]:=StrToInt(Digit);
          end
        end;
      '#':
        begin
         tmpStr:='';
         for tmpInt:=1 to IDCount do
           tmpStr:=tmpStr+IntToStr(arID[tmpInt]);
          with Query2 do begin
            Close;
            SQL .Clear;
            SQL .Add('select * from scoretable');
            SQL .Add('where ID='''+ tmpStr+'''');
            Open;
          end;
          if   VarIsNULL(query2.FieldValues['SCORE']) or VarIsEmpty(query2.FieldValues['SCORE']) then
          begin
            CurrentState:=state_s_inputwrong;
            ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\inputwrong.wav');
            Exit;
          end
          else
          begin
            IDCountAll:=IDCount;
            IDCount:=0;
            tmpInt:=query2.FieldValues['SCORE'];
            arSCore[1]:=tmpInt div 10;
            arSCore[2]:=tmpInt-10*arSCore[1];
            if  arSCore[1]=0 then
              SCCount:=2
            else
              SCCount:=0;
            CurrentState:=state_s_reply1;
            ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\reply1.wav');                   
          end;  
        end;
      end;
  end
  else if (CurrentState= state_s_over) then
      case Digit of
      '1':
        begin
            CurrentState :=state_s_input;
            IDCount:=0;
            Timer1.Enabled :=False;  //disable bye.wav
            Timer1.Enabled:=True;    //enable bye.wav again  
            ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\input.wav');
            Exit;
        end;
       else
        begin
              CurrentState :=state_s_bye;
              ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\bye.wav');
        end;
      end
end;

procedure TfrmMain.AnswerOnRingEditExit(Sender: TObject);
begin
  try
    ApdTapiDevice1.AnswerOnRing :=
      StrToInt(AnswerOnRingEdit.Text);
  except
    //如果转换为Integer失败,需要重新设置
    on E : EConvertError do begin
      Application.ShowException(E);
      AnswerOnRingEdit.SetFocus;
    end;
  end;
end;

procedure TfrmMain.btnMasterLoginClick(Sender: TObject);
begin
  if MasterLogin then
    Table1.Active :=False
  else
    Table1.Active:=True;
end;

procedure TfrmMain.Table1BeforeOpen(DataSet: TDataSet);
begin
    showmessage('只有数据库管理员才能登陆!');
end;

procedure TfrmMain.btnMasterSearchClick(Sender: TObject);
begin
  with Table1 do
  begin
    if rdgrpSearch.ItemIndex=0 then
    begin
        IndexName:='RDB$PRIMARY1';
        if  not FindKey([edtIDSearch.Text])then
          showmessage('Cannot Find the Record');
    end
    else begin
       IndexName:='INDEX_NAME';
       if  not FindKey([edtedtNameSearch.Text])then
          showmessage('Cannot Find the Record');
    end;
  end;
end;

procedure TfrmMain.btnSearchClick(Sender: TObject);
begin
  with Query1 do begin
  Close;
  SQL .Clear;
  SQL .Add('select * from scoretable');
  SQL .Add('where ID='''+ edtSearch.Text+'''');
  Open;
  end;
  if   VarIsNULL(query1.FieldValues['SCORE']) or VarIsEmpty(query1.FieldValues['SCORE']) then
  begin
    showmessage('没有该号码,请核实!');
  end
end;

procedure TfrmMain.Button5Click(Sender: TObject);
begin
    ApdTapiDevice1.UseSoundCard := True;
    ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\greet.wav');
    CurrentState := state_s_greet;
end;

procedure TfrmMain.edtSearchExit(Sender: TObject);
var
  tmpInt:integer;
begin
  try
    tmpInt:=StrToInt(edtSearch.Text);
    arID[1]:=tmpInt div 1000;
    arID[2]:=(tmpInt div 100)-10*arID[1];
    arID[3]:=(tmpInt div 10)-10*arID[2]-100*arID[1];
    arID[4]:=tmpInt-10*arID[3]-100*arID[2]-1000*arID[1];
  except
    //如果转换为Integer失败,需要重新设置
    on E : EConvertError do begin
      Application.ShowException(E);
      edtSearch.SetFocus;
    end;
  end;
end;

procedure TfrmMain.edtWaitTimeEnter(Sender: TObject);
var
  tmpInt:Integer;
begin
  try
    tmpInt:=StrToInt(edtWaitTime.Text);
    Timer1.Interval:=1000*tmpInt;
  except
    //如果转换为Integer失败,需要重新设置
    on E : EConvertError do begin
      Application.ShowException(E);
      edtWaitTime.SetFocus;
    end;
  end;
end;

procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled :=False;
  currentstate:=state_s_bye;
  ApdTapiDevice1.PlayWaveFile(WaveFileDir+'\sound\bye.wav');
end;

procedure TfrmMain.Timer2Timer(Sender: TObject);
begin
  Timer2.Enabled :=False; 
  AnswerButtonClick(Sender);
end;

procedure TfrmMain.Table1AfterClose(DataSet: TDataSet);
begin
    MasterLogin:=False;
    Database2.Connected:=False;
    DBNavigator1.Enabled :=False;
    DBGrid1.Enabled :=False;
    rdgrpSearch.Enabled :=False;
    btnMasterLogin.Caption:='登陆';
    btnMasterSearch.Enabled :=False;
end;

procedure TfrmMain.Table1AfterOpen(DataSet: TDataSet);
begin
    MasterLogin:=True;
    DBNavigator1.Enabled :=True;
    DBGrid1.Enabled :=True;
    rdgrpSearch.Enabled :=True;
    btnMasterLogin.Caption:='退出';
    btnMasterSearch.Enabled :=True;
end;

procedure TfrmMain.ClearLogButtonClick(Sender: TObject);
begin
  CallsListBox.Clear;
end;

procedure TfrmMain.SaveLogButtonClick(Sender: TObject);
var
  filename:String;
begin
  if saveDialog1.Execute then
    CallsListBox.Items.SaveToFile(saveDialog1.filename);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -