📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, Menus, ImgList, ToolWin, StdCtrls, DB,
DBTables, Grids, DBGrids, Common, MyClass, MPlayer, Buttons, WinSkinData,
fcLabel, TFlatPanelUnit, DBCtrls, Mask, ADODB,SyncObjs;
type
TfmMain = class(TForm)
PageControl1: TPageControl;
tabPlan: TTabSheet;
tabAutoCall: TTabSheet;
ImageList1: TImageList;
MainMenu1: TMainMenu;
File1: TMenuItem;
StatusBar1: TStatusBar;
tabVoice: TTabSheet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Panel2: TPanel;
Label1: TLabel;
Edit1: TEdit;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
tabPhone: TTabSheet;
tabLogInOff: TTabSheet;
tabLeave: TTabSheet;
DataSource3: TDataSource;
DBGrid3: TDBGrid;
Label3: TLabel;
Button7: TButton;
Edit3: TEdit;
ComboBox3: TComboBox;
DBGrid4: TDBGrid;
DBGrid5: TDBGrid;
DBGrid6: TDBGrid;
Label6: TLabel;
Button10: TButton;
Edit6: TEdit;
ComboBox6: TComboBox;
DBGrid7: TDBGrid;
Label7: TLabel;
Button11: TButton;
Edit7: TEdit;
ComboBox7: TComboBox;
DataSource4: TDataSource;
DataSource5: TDataSource;
DataSource6: TDataSource;
DataSource7: TDataSource;
tabStuff: TTabSheet;
tabRoom: TTabSheet;
tabCaller: TTabSheet;
DataSource8: TDataSource;
DataSource9: TDataSource;
DataSource10: TDataSource;
DBGrid8: TDBGrid;
Label8: TLabel;
Button12: TButton;
Edit8: TEdit;
ComboBox8: TComboBox;
DBGrid9: TDBGrid;
DBGrid10: TDBGrid;
ToolBar1: TToolBar;
MediaPlayer1: TMediaPlayer;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
N22: TMenuItem;
N23: TMenuItem;
ToolButton5: TToolButton;
N24: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
N27: TMenuItem;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Image2: TImage;
Timer1: TTimer;
ToolButton6: TToolButton;
N28: TMenuItem;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
MediaPlayer2: TMediaPlayer;
Timer2: TTimer;
fcLabel1: TfcLabel;
btnPhone1: TBitBtn;
btnPhone2: TBitBtn;
Panel1: TPanel;
Label5: TLabel;
BitBtn7: TBitBtn;
Label4: TLabel;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
BitBtn8: TBitBtn;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
DBCheckBox1: TDBCheckBox;
Label10: TLabel;
GroupBox2: TGroupBox;
Label13: TLabel;
DBEdit1: TDBEdit;
Button8: TButton;
OpenDialog1: TOpenDialog;
ADOConnection1: TADOConnection;
tbPlan: TADOTable;
BitBtn1: TBitBtn;
Button6: TButton;
tbAutoCall: TADOTable;
tbRoom: TADOTable;
tbTemp: TADOTable;
tbVoice: TADOTable;
tbPhone: TADOTable;
tbLogInOff: TADOTable;
tbLeave: TADOTable;
tbStuff: TADOTable;
tbCaller: TADOTable;
MediaPlayer3: TMediaPlayer;
GroupBox1: TGroupBox;
CheckBox3: TCheckBox;
CheckBox1: TCheckBox;
SkinData1: TSkinData;
btnSticky: TBitBtn;
tbPlan2: TADOTable;
tbPlan3: TADOTable;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tabPlanShow(Sender: TObject);
procedure tabAutoCallShow(Sender: TObject);
procedure tabVoiceShow(Sender: TObject);
procedure tabPhoneShow(Sender: TObject);
procedure tabLogInOffShow(Sender: TObject);
procedure tabLeaveShow(Sender: TObject);
procedure tabStuffShow(Sender: TObject);
procedure tabRoomShow(Sender: TObject);
procedure tabCallerShow(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure N25Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure N28Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit8Change(Sender: TObject);
procedure Edit6Change(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure DBEdit1Exit(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure DBGrid9TitleClick(Column: TColumn);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure BitBtn1Click(Sender: TObject);
procedure DBGrid5TitleClick(Column: TColumn);
procedure DBGrid4TitleClick(Column: TColumn);
procedure N17Click(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure btnStickyClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
FReplayCallWaveStarted:boolean;
procedure SetReplayCallWaveStart(value:boolean);
published
property ReplayCallWaveStarted:boolean read FReplayCallWaveStarted write SetReplayCallWaveStart;
public
{ Public declarations }
//用于获取下一个待发车次的计数器,在Timer1的每秒定时中断中计数,每记60次(1分钟)
//调用以此GetNextTrain函数,同时清计数器
GetTrainCounter:integer;
//播放记录的声音
//声音所在的目录按照系统设置的数据保存目录WaveDir
procedure PlayWave(fname:TFileName);
//停止播放记录的声音
procedure StopWave;
//保存或加载房间设置
procedure LoadStoreRoomState(IsLoad:boolean);
//加载系统设置
procedure LoadSystemConfig;
//刷新房间显示
procedure RefreshRoom;
end;
var
fmMain: TfmMain;
RecNoCollect:set of 1..250=[];
CalledRecNoCollect:set of 1..250=[];
//KeyManipulate:TShortCutEvent;
procedure KeyManipulate(Key: Integer; Shift: TShiftState; var Handled: Boolean);
implementation
uses Unit3, Unit4, Unit2, Unit5, Unit6, Unit7, Unit8, Unit9;
{$R *.dfm}
procedure KeyManipulate(Key: Integer; Shift: TShiftState; var Handled: Boolean);
begin
//showmessage('key pressed');
Caller.KeyAcknowledged:=true;
end;
procedure TfmMain.FormCreate(Sender: TObject);
var E:TShortCutEvent;
begin
//生成Caller对象
Caller:=TAutoCaller.Create(false);
//设置软件安装的根目录
RootDir:=ExtractFileDir(ParamStr(0));
//设置数据库目录并激活
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+RootDir+'\database\AutoCall.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False';
tbPlan.TableName:='CallPlan';
tbPlan2.TableName:='CallPlan';
tbAutoCall.TableName:='AutoCallResult';//.DatabaseName:=RootDir+'\database';
tbCaller.TableName:='Caller';
tbLeave.TableName:='Leave';
tbLogInOff.TableName:='LogInOff';
tbPhone.TableName:='Phone';
tbRoom.TableName:='Room';
tbStuff.TableName:='Stuff';
tbVoice.TableName:='Voice';
tbPlan.Open;
tbPlan2.Open;
tbPlan.Sort:='计划叫班时间 ASC';
tbPlan2.Sort:='计划叫班时间 ASC';
tbAutoCall.Open;
tbAutoCall.Sort:='实际一叫时间 DESC';
tbCaller.Open;
tbLeave.Open;
tbLogInOff.Open;
tbLogInOff.Sort:='登陆时间 DESC';
tbPhone.Open;
tbPhone.Sort:='开始时间 DESC';
tbRoom.Open;
tbRoom.Sort:='线路 ASC';
tbStuff.Open;
tbVoice.Open;
tbVoice.Sort:='叫班时间 DESC';
//加载系统设置
LoadSystemConfig;
//设置皮肤
SkinData1.SkinFile:=RootDir+'\mxskin66.skn';
SkinData1.Active:=true;
//初始化Caller对象
Caller.Player:=MediaPlayer1;
Caller.Recorder:=MediaPlayer3;
Caller.tbPlan:=tbPlan;
Caller.tbCall:=tbAutoCall;
Caller.tbPhone:=tbPhone;
Caller.tbVoice:=tbVoice;
Caller.tbRoom:=tbRoom;
Caller.tbTemp:=tbTemp;
Caller.tbPlan2:=tbPlan2;
Caller.imPhone1:=btnPhone1;
Caller.imPhone2:=btnPhone2;
Caller.Status:=StatusBar1.Panels[1];
//初始化叫班队列
Caller.InitQueue;
//置初态为待用状态
Caller.OpenLink(0,lsReady);
//
//捕获键盘事件
TMethod(E).Code:=@KeyManipulate;
Application.OnShortCut:=E;
//调整界面位置
fmMain.Left:=(Screen.Width-fmMain.Width)div 2+5;
fmMain.Top:=(Screen.Height-fmMain.Height)div 2+5;
//初始化临界段
InitializeCriticalSection(Critical1);
end;
//设置开始查询电话录音
procedure TfmMain.SetReplayCallWaveStart(value:boolean);
begin
FReplayCallWaveStarted:=value;
if(value) then begin
Caller.LineBusy:=true;
Caller.OpenLink(101,lsReplay); //录音查询
BitBtn2.Enabled:=false;
BitBtn3.Enabled:=true;
end
else begin
Caller.LineBusy:=false;
Caller.OpenLink(101,lsReady); //待用状态
BitBtn2.Enabled:=true;
BitBtn3.Enabled:=false;
end;
end;
procedure TfmMain.Button2Click(Sender: TObject);
begin
IsAddRecord:=false;
fmAdd.PageAdd.ActivePage:=fmAdd.tabRoom;
if(PageControl1.ActivePage=tabPlan) then begin //叫班计划
fmAdd.PageAdd.ActivePage:=fmAdd.tabPlan;
//tbPlan2.Append;
IsAddRecord:=true;
end
else if(PageControl1.ActivePage=tabStuff) then begin //住寓人员
fmAdd.PageAdd.ActivePage:=fmAdd.tabStuff;
tbStuff.Append;
end
else if(PageControl1.ActivePage=tabRoom) then begin//房间
fmAdd.PageAdd.ActivePage:=fmAdd.tabCaller;
fmAdd.PageAdd.ActivePage:=fmAdd.tabRoom;
tbRoom.Append;
fmAdd.ComboBox11.Enabled:=true; //房间线路
end
else if(PageControl1.ActivePage=tabCaller) then begin //叫班员
fmAdd.PageAdd.ActivePage:=fmAdd.tabCaller;
tbCaller.Append;
end;
Caller.EditType:=etAdd;
fmAdd.ShowModal;
end;
procedure TfmMain.N2Click(Sender: TObject);
begin
Caller.EditType:=etAdd;
tbLeave.Append;
fmAdd.PageAdd.ActivePage:=fmAdd.tabLeave;
fmAdd.Show;
end;
procedure TfmMain.N3Click(Sender: TObject);
begin
Caller.EditType:=etModify;
fmAdd.PageAdd.ActivePage:=fmAdd.tabLeave;
fmAdd.Show;
end;
procedure TfmMain.N5Click(Sender: TObject);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -