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

📄 mainform.pas

📁 东进D160A板卡自动外呼程序代码
💻 PAS
字号:
unit mainform;

interface

uses
  tc08a32, Channels, windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls, ComCtrls, cxControls,
  cxContainer, cxEdit, cxStyles, cxCustomData, cxGraphics, cxFilter,
  cxData, cxDataStorage, DB, cxDBData, cxLookAndFeels, cxGridLevel,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
  cxGridCustomView, cxGrid, Buttons, cxProgressBar;

type
  TMainfrm = class(TForm)
    Timer1: TTimer;
    Timer2: TTimer;
    pgcControl: TPageControl;
    tsControl: TTabSheet;
    tsChannel: TTabSheet;
    stategrid: TStringGrid;
    statMain: TStatusBar;
    Image1: TImage;
    Label1: TLabel;
    Bevel2: TBevel;
    pgcDetails: TPageControl;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    telebox: TListBox;
    Bevel1: TBevel;
    trbVolume: TTrackBar;
    Label2: TLabel;
    Label3: TLabel;
    Progressbar: TcxProgressBar;
    btnStartdun: TBitBtn;
    BitBtn1: TBitBtn;
    tsDundetails: TTabSheet;
    tsCalllog: TTabSheet;
    dbtvDundetails: TcxGridDBTableView;
    lvDundetails: TcxGridLevel;
    cxgrdDundetails: TcxGrid;
    cxgrdDunlog: TcxGrid;
    dbtvDunlog: TcxGridDBTableView;
    lvDunlog: TcxGridLevel;
    dbtvDundetailsSbbh: TcxGridDBColumn;
    dbtvDundetailsYhmc: TcxGridDBColumn;
    dbtvDundetailsYhdz: TcxGridDBColumn;
    dbtvDundetailsPhoneNumber: TcxGridDBColumn;
    dbtvDundetailsCallCount: TcxGridDBColumn;
    dbtvDundetailsCallDatetime: TcxGridDBColumn;
    dbtvDundetailsCallStatus: TcxGridDBColumn;
    dbtvDundetailsWaterfee: TcxGridDBColumn;
    dbtvDundetailsSewage: TcxGridDBColumn;
    dbtvDundetailsTotalsum: TcxGridDBColumn;
    dbtvDundetailsCbrq: TcxGridDBColumn;
    dbtvDundetailsLatedays: TcxGridDBColumn;
    dbtvDunlogLogID: TcxGridDBColumn;
    dbtvDunlogChannel: TcxGridDBColumn;
    dbtvDunlogChannleType: TcxGridDBColumn;
    dbtvDunlogAction: TcxGridDBColumn;
    dbtvDunlogDescription: TcxGridDBColumn;
    dbtvDunlogResult: TcxGridDBColumn;
    dbtvDunlogLogDatetime: TcxGridDBColumn;
    LookAndFeelController: TcxLookAndFeelController;
    trbSpeed: TTrackBar;
    Label4: TLabel;
    Label5: TLabel;
    dtpStart: TDateTimePicker;
    Label6: TLabel;
    dtpEnd: TDateTimePicker;
    Bevel3: TBevel;
    chkAutoCall: TCheckBox;
    tmrAutocall: TTimer;
    Label7: TLabel;
    edtPrefix: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure pgcDetailsChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure tmrAutocallTimer(Sender: TObject);
    procedure chkAutoCallClick(Sender: TObject);
  private
    function GetVoiceSpeed: Integer;
    function GetVoiceVolume: Integer;
    function GetEnddunTime: TTime;
    function GetStartdunTime: TTime;
    function GetPrefixDialnum: string;
    { Private declarations }
  public
    property VoiceSpeed: Integer read GetVoiceSpeed default 50;
    property VoiceVolume: Integer read GetVoiceVolume default 50;
    property Startdun: TTime read GetStartdunTime;
    property Enddun: TTime read GetEnddunTime;
    property PrefixNum: string read GetPrefixDialnum;
  end;

var
  Mainfrm: TMainfrm;

implementation

uses CallerDM;

{$R *.DFM}

procedure TMainfrm.FormCreate(Sender: TObject);
begin
  InitSystem();
end;

{-------------------------------------------------------------------------------
  Procedure: TMainfrm.FormClose
  Author:    Xsp
  DateTime:  2006.05.09
  Arguments: Sender: TObject; var Action: TCloseAction
  Result:    None
  Popose:    初始化语音卡
-------------------------------------------------------------------------------}
procedure TMainfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  relesystem();
end;

{-------------------------------------------------------------------------------
  Procedure: TMainfrm.Timer2Timer
  Author:    Xsp
  DateTime:  2006.05.09
  Arguments: Sender: TObject
  Result:    None
  Popose:    维持语音卡对语音的播放及振铃的检测
-------------------------------------------------------------------------------}
procedure TMainfrm.Timer2Timer(Sender: TObject);
begin
  push_play;
  feedsigfunc;
end;

{-------------------------------------------------------------------------------
  Procedure: TMainfrm.Timer1Timer
  Author:    Xsp
  DateTime:  2006.05.09
  Arguments: Sender: TObject
  Result:    None
  Popose:    语音卡业务处理流程的轮询,循环处理每个通道的请求
-------------------------------------------------------------------------------}
procedure TMainfrm.Timer1Timer(Sender: TObject);
var
  channelno: integer;
begin
  drawgrid;
  for channelno := 0 to TTSChannel - 1 do
  begin
    if {(channelno mod 2 = 0) and} dmCaller.Startdunflag then
    begin
      DunWaterfee(channelno);

      // 只有在没有播放语音时出现忙音才将号码放入队列再次催缴
      if (sig_checkbusy(channelno) = 1) and not Channel[channelno].PlayingWaterfee then
      begin
        if channel[channelno].dtmf <> '' then
        begin
          AddItemtoTellist(channelno);
          ResetChannel(channelno);
        end
      end;
    end;
  end
end;

{-------------------------------------------------------------------------------
  Procedure: TMainfrm.pgcDetailsChange
  Author:    Xsp
  DateTime:  2006.05.09
  Arguments: Sender: TObject
  Result:    None
  Popose:    辅助事件,用于刷新催缴资料
-------------------------------------------------------------------------------}
procedure TMainfrm.pgcDetailsChange(Sender: TObject);
begin
  with dmCaller do
  case pgcDetails.ActivePageIndex of
    0 : RefreshDundetails;
    1 : RefreshDunlog;
  end;
end;

procedure TMainfrm.FormShow(Sender: TObject);
begin
  pgcDetailsChange(Sender);
end;

function TMainfrm.GetVoiceSpeed: Integer;
begin
  Result := trbSpeed.Position;
end;

function TMainfrm.GetVoiceVolume: Integer;
begin
  Result := trbVolume.Position;
end;

//------------------------------------------------------------------------------
// 根据设定的催缴时段检查当前是否应该进行催缴欠费
//------------------------------------------------------------------------------
procedure TMainfrm.tmrAutocallTimer(Sender: TObject);
var
  Anowtime: string;
begin
  Anowtime := TimeToStr(Time);
  if (Anowtime >= TimeToStr(Startdun)) and (Anowtime <= TimeToStr(Enddun)) then
    dmCaller.Startdunflag := True
  else
    dmCaller.Startdunflag := False;
end;

function TMainfrm.GetEnddunTime: TTime;
begin
  Result := dtpEnd.Time;
end;

function TMainfrm.GetStartdunTime: TTime;
begin
  Result := dtpStart.Time;
end;

procedure TMainfrm.chkAutoCallClick(Sender: TObject);
begin
  tmrAutocall.Enabled := chkAutoCall.Checked;
end;

{-------------------------------------------------------------------------------
  Procedure: TMainfrm.GetPrefixDialnum
  Author:    Xsp
  DateTime:  2006.05.09
  Arguments: None
  Result:    string
  Popose:    获取呼出号码的前缀
-------------------------------------------------------------------------------}
function TMainfrm.GetPrefixDialnum: string;
begin
  if StrToIntDef(edtPrefix.Text, -1) <> -1 then
    Result := Trim(edtPrefix.Text)
  else
    Result := '';
end;

end.

⌨️ 快捷键说明

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