📄 unit1.pas
字号:
begin
fmManualCall.GroupBox1.Caption:='录音叫班';
fmManualCall.Caption:='录音叫班';
fmManualCall.Label2.Visible:=true;
fmManualCall.CheckBox1.Visible:=true;
fmManualCall.ShowModal;
end;
procedure TfmMain.N1Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabPlan;
end;
procedure TfmMain.N7Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabPlan;
end;
procedure TfmMain.N8Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabAutoCall;
end;
procedure TfmMain.N9Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabVoice;
end;
procedure TfmMain.N10Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabPhone;
end;
procedure TfmMain.N22Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabLogInOff;
end;
procedure TfmMain.N23Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabLeave;
end;
procedure TfmMain.N12Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabRoom;
end;
procedure TfmMain.N13Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabStuff;
end;
procedure TfmMain.N16Click(Sender: TObject);
begin
PageControl1.ActivePage:=tabCaller;
end;
procedure TfmMain.N17Click(Sender: TObject);
begin
fmDetect.ShowModal;
end;
procedure TfmMain.FormShow(Sender: TObject);
begin
//启动登录界面
if(not Caller.Logined) then
fmLogin.ShowModal;
Caller.Logined:=true;
fmMain.WindowState:=wsMaximized;
//初始化房间检测界面
//Image1.Canvas.Brush.Color:=clWhite;
//Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));
end;
procedure TfmMain.tabPlanShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=true; //添加
Button3.Enabled:=true; //修改
Button4.Enabled:=true; //删除
Button5.Enabled:=true; //打印
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
procedure TfmMain.tabAutoCallShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=false; //添加
Button3.Enabled:=false; //修改
Button4.Enabled:=false; //删除
Button5.Enabled:=true; //打印
if(ReplayCallWaveStarted) then begin
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=true; //停止声音
end
else begin
BitBtn2.Enabled:=true; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
end;
procedure TfmMain.tabVoiceShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=false; //添加
Button3.Enabled:=false; //修改
Button4.Enabled:=false; //删除
Button5.Enabled:=false; //打印
if(ReplayCallWaveStarted) then begin
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=true; //停止声音
end
else begin
BitBtn2.Enabled:=true; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
end;
procedure TfmMain.tabPhoneShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=false; //添加
Button3.Enabled:=false; //修改
Button4.Enabled:=false; //删除
Button5.Enabled:=false; //打印
if(ReplayCallWaveStarted) then begin
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=true; //停止声音
end
else begin
BitBtn2.Enabled:=true; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
end;
procedure TfmMain.tabLogInOffShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=false; //添加
Button3.Enabled:=false; //修改
if(Caller.LoginType=ltManager) then
Button4.Enabled:=true //删除
else
Button4.Enabled:=false;//删除
Button5.Enabled:=true; //打印
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
procedure TfmMain.tabLeaveShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=false; //添加
Button3.Enabled:=false; //修改
Button4.Enabled:=true; //删除
Button5.Enabled:=true; //打印
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
procedure TfmMain.tabStuffShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=true; //添加
Button3.Enabled:=true; //修改
Button4.Enabled:=true; //删除
Button5.Enabled:=true; //打印
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
procedure TfmMain.tabRoomShow(Sender: TObject);
begin
//刷新房间显示
RefreshRoom;
//使能表操作控制按钮
if(Caller.LoginType=ltManager) then begin
Button2.Enabled:=true; //添加
Button3.Enabled:=true; //修改
Button4.Enabled:=true; //删除
Button5.Enabled:=false; //打印
end
else begin
Button2.Enabled:=false; //添加
Button3.Enabled:=false; //修改
Button4.Enabled:=false; //删除
Button5.Enabled:=false; //打印
end;
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
procedure TfmMain.tabCallerShow(Sender: TObject);
begin
//使能表操作控制按钮
Button2.Enabled:=true; //添加
Button3.Enabled:=true; //修改
Button4.Enabled:=true; //删除
Button5.Enabled:=true; //打印
BitBtn2.Enabled:=false; //播放声音
BitBtn3.Enabled:=false; //停止声音
end;
procedure TfmMain.Button3Click(Sender: TObject);
begin
IsAddRecord:=false;
fmAdd.PageAdd.ActivePage:=fmAdd.tabRoom;
if(PageControl1.ActivePage=tabPlan) then begin //叫班计划
fmAdd.PageAdd.ActivePage:=fmAdd.tabPlan;
end
else if(PageControl1.ActivePage=tabStuff) then begin //住寓人员
fmAdd.PageAdd.ActivePage:=fmAdd.tabStuff
end
else if(PageControl1.ActivePage=tabRoom) then begin//房间
fmAdd.PageAdd.ActivePage:=fmAdd.tabCaller;
fmAdd.PageAdd.ActivePage:=fmAdd.tabRoom;
fmAdd.ComboBox11.Text:=inttostr(tbRoom.Fields[0].AsInteger);
fmAdd.ComboBox11.Enabled:=false; //房间线路不能改变
end
else if(PageControl1.ActivePage=tabCaller) then begin //叫班员
fmAdd.PageAdd.ActivePage:=fmAdd.tabCaller;
fmAdd.Edit8.Text:=tbCaller.FieldByName('姓名').AsString;
fmAdd.Edit8.Enabled:=false; //姓名不能改变
end;
Caller.EditType:=etModify;
fmAdd.ShowModal;
end;
procedure TfmMain.Button4Click(Sender: TObject);
var i:integer;
begin
if(PageControl1.ActivePage=tabPlan) then begin //叫班计划
//删除叫班计划
//for i:=tbPlan.RecNo-1 to Caller.QNum-2 do
// Caller.Queue[i]:=Caller.Queue[i+1];
EnterCriticalSection(Critical1); //进入临界段
tbPlan2.RecNo:=tbPlan.RecNo;
tbPlan2.Delete;
LeaveCriticalSection(Critical1);//退出临界段
try
tbPlan.Refresh;
except
end;
end
else if(PageControl1.ActivePage=tabLeave) then begin //住离寓表
tbLeave.Delete;
end
else if(PageControl1.ActivePage=tabStuff) then begin //住寓人员
tbStuff.Delete;
end
else if(PageControl1.ActivePage=tabRoom) then begin//房间
tbRoom.Delete;
end
else if(PageControl1.ActivePage=tabCaller) then begin //叫班员
tbCaller.Delete;
end
else if(PageControl1.ActivePage=tabLogInOff) then begin //登录信息
tbLogInOff.Delete;
end
end;
procedure TfmMain.N25Click(Sender: TObject);
begin
tbLogInOff.First;
Sleep(100); //等待数据集更新
tbLogInOff.Edit;
tbLogInOff.FieldByName('退出时间').AsDateTime:=Now;
tbLogInOff.Post;
Caller.Logined:=false;
fmLogin.Edit1.Text:='';
fmLogin.ShowModal;
end;
function GetWeek: string;
var
mytime:SYSTEMTIME;
begin
GetLocalTime(mytime);
//(***本文出处:南山古桃(nsgtao)的百度空间:http://hi.baidu.com/nsgtao/ ****)
case mytime.wDayOfWeek of
0: Result:='星期日';
1: Result:='星期一';
2: Result:='星期二';
3: Result:='星期三';
4: Result:='星期四';
5: Result:='星期五';
6: Result:='星期六';
end;
end;
procedure TfmMain.Timer1Timer(Sender: TObject);
var i:integer;
changed:boolean;
BKMark:TBookMark;
nState:Byte;
begin
fcLabel1.Caption:=FormatDateTime('yyyy年mm月dd日 hh时nn分ss秒',Now)+' '+GetWeek;//DateTimeToStr(Now);
if(GetTrainCounter>5) then begin
GetTrainCounter:=0;
if(tbPlan3.Active)then
tbPlan3.Close;
tbPlan3.TableName:='CallPlan';
tbPlan3.Open;
tbPlan3.Sort:='计划叫班时间 ASC';
//获取一次待发车次记录
//下面处理一叫队列的初始化
EnterCriticalSection(Critical1); //进入临界段
changed:=false;
tbPlan3.First;
i:=0;
while(not tbPlan3.Eof) do begin
try
nState:=tbPlan3.FieldByName('状态').AsInteger;
if(nState=0) or (nState=1) then begin //csReady or csWaitSecond
if not((i+1) in RecNoCollect) then begin
RecNoCollect:=RecNoCollect+[i+1];
changed:=true;
end;
end
else if(nState=2) then begin //csCalled
//从准备呼叫队列清除
if(i+1) in RecNoCollect then begin
RecNoCollect:=RecNoCollect-[i+1];
changed:=true;
end;
//加入到已完成呼叫队列
if not ((i+1) in CalledRecNoCollect) then begin
CalledRecNoCollect:=CalledRecNoCollect+[i+1];
changed:=true;
end;
end
else if(i+1) in CalledRecNoCollect then begin //csWaitFirst
CalledRecNoCollect:=CalledRecNoCollect-[i+1];
end;
i:=i+1;
tbPlan3.Next;
except
end;
end;
LeaveCriticalSection(Critical1);//退出临界段
{for i:=0 to Caller.QNum-1 do
if(Caller.Queue[i].state=csReady)or(Caller.Queue[i].state=csWaitFirst)
or(Caller.Queue[i].state=csFirstDelayed) then begin
if not((i+1) in RecNoCollect) then begin
RecNoCollect:=RecNoCollect+[i+1];
changed:=true;
end;
end
else if(i+1) in RecNoCollect then begin
RecNoCollect:=RecNoCollect-[i+1];
if(Caller.Queue[i].state=csCalled)or(Caller.Queue[i].state=csWaitSecond) then
CalledRecNoCollect:=CalledRecNoCollect+[i+1];
changed:=true;
end
else if(i+1) in CalledRecNoCollect then begin
// 叫班10个小时以后从完成呼叫队列中删除
if(Now-Caller.Queue[i].ActualFirstCall)>10*3600*ONE_SECOND then
CalledRecNoCollect:=CalledRecNoCollect-[i+1];
end; }
if(changed) then begin
DBGrid1.Visible:=false;
DBGrid1.Visible:=true;
end;
end
else
GetTrainCounter:=GetTrainCounter+1;
//叫班录音查询开始,且声音播放完毕,那么置结束状态
if(ReplayCallWaveStarted)and(MediaPlayer2.Position=MediaPlayer2.Length) then
ReplayCallWaveStarted:=false;
end;
procedure TfmMain.N28Click(Sender: TObject);
begin
fmManualCall.GroupBox1.Caption:='直接叫班';
fmManualCall.Caption:='直接叫班';
fmManualCall.Label2.Visible:=false;
fmManualCall.CheckBox1.Visible:=false;
fmManualCall.ShowModal;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -