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

📄 unit1.pas

📁 这是一个火车站公寓的自动叫班程序源码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
//播放记录的声音
//声音所在的目录按照系统设置的数据保存目录WaveDir
procedure TfmMain.PlayWave(fname:TFileName);
begin
  MediaPlayer2.FileName:=fname;
  MediaPlayer2.Open;
  MediaPlayer2.Play;

end;

//停止播放记录的声音
procedure TfmMain.StopWave;
begin
  MediaPlayer2.Stop;
  MediaPlayer2.Close;
end;

//保存或加载房间设置
procedure TfmMain.LoadStoreRoomState(IsLoad:boolean);
var roomf:File of TRoomExistType;
    fname:TFileName;
begin
  fname:=RootDir+'\room.cfg';
  assignfile(roomf,fname);
  if(not FileExists(fname)) then begin
    rewrite(roomf);
    write(roomf,Caller.RoomGood);
    closefile(roomf);
  end
  else begin
    if(IsLoad) then begin
      reset(roomf);
      read(roomf,Caller.RoomGood);
      closefile(roomf);
    end
    else begin
      rewrite(roomf);
      write(roomf,Caller.RoomGood);
      closefile(roomf);
    end;
  end;
end;
//加载系统设置
procedure TfmMain.LoadSystemConfig;    
var fname:TFileName;
    tfile:File of TSysSet;
begin
  fname:=RootDir+'\sysset.cfg';
  assignfile(tfile,fname);
  if(not FileExists(fname)) then begin
    SysSet.PortBase:=$378;
    SysSet.RoomBits:=4;
    SysSet.PhoneLine1:=100;
    SysSet.PhoneLine2:=101;
    SysSet.CallInterval:=1;
    SysSet.MaxCallTime:=1;
    SysSet.MaxManualWaveNum:=1200;
    SysSet.MaxAutoWaveNum:=1000;
    SysSet.MaxPhoneWaveNum:=1000;   
    SysSet.AutoSavePhone1:=true;
    SysSet.AutoSavePhone2:=true;
    SysSet.WaveDir:='d:\Data';
    SysSet.TelephoneDir:='d:\Data';
    SysSet.RecordBits:=8;
    SysSet.RecordRate:=11025;
    SysSet.AutoCallEnabled:=false;
    SysSet.AutoReCallEnabled:=false;
    //自动叫班功能
    CheckBox3.Checked:=SysSet.AutoCallEnabled;
    CheckBox1.Checked:=SysSet.AutoReCallEnabled;
    rewrite(tfile);
    write(tfile,SysSet);
    closefile(tfile);
  end
  else begin
    reset(tfile);
    read(tfile,SysSet);
    //自动叫班功能
    CheckBox3.Checked:=SysSet.AutoCallEnabled;
    CheckBox1.Checked:=SysSet.AutoReCallEnabled;
    closefile(tfile);
  end;

  //加载房间设置
  LoadStoreRoomState(true);

  //公司名称
  StatusBar1.Panels[0].Text:=SysSet.StationName;
  //获取时间到字符串转换的格式化字符串
  GetLocaleFormatSettings(0,FormatSettings);
end;

procedure TfmMain.BitBtn2Click(Sender: TObject);
var fname:TFileName;
begin
  //如果线路忙,则退出
  if(Caller.LineBusy) then begin
    MessageBox(fmMain.Handle,'线路忙','提示',MB_OK);
    Exit;
  end;
  //如果文件不存在,退出
  if(PageControl1.ActivePage=tabAutoCall) then
    fname:=GetWaveName(tbAutoCall.FieldByName('实际一叫时间').AsDateTime)
  else if(PageControl1.ActivePage=tabVoice) then
    fname:=GetWaveName(tbVoice.FieldByName('叫班时间').AsDateTime)
  else if(PageControl1.ActivePage=tabPhone) then
    fname:=GetTelephoneWaveName(tbPhone.FieldByName('开始时间').AsDateTime)
  else
    Exit;
  if(not FileExists(fname)) then begin
    MessageBox(fmMain.Handle,'文件不存在','提示',MB_OK);
    Exit;
  end;
  //置开始播放状态
  ReplayCallWaveStarted:=true;
  PlayWave(fname);
end;

procedure TfmMain.BitBtn3Click(Sender: TObject);
begin
  StopWave;
  ReplayCallWaveStarted:=false;
end;

//刷新房间显示
procedure TfmMain.RefreshRoom;
begin
 
end;

procedure TfmMain.FormPaint(Sender: TObject);
begin
  //刷新房间显示
  RefreshRoom;
end;

procedure TfmMain.N15Click(Sender: TObject);
begin
  fmSet.Show;
end;

procedure TfmMain.Edit1Change(Sender: TObject);
begin
  if(IsEmptyString(Edit1.Text)) then
    tbPlan.Filtered:=false
  else begin
    //if(not tbPlan.Filtered) then begin
      tbPlan.Filtered:=true;
      tbPlan.Filter:='车次 = '+QuotedStr(Edit1.Text);
    //end;
  end;
end;

procedure TfmMain.Edit3Change(Sender: TObject);
begin
  if IsEmptyString(Edit3.Text) then
    tbAutoCall.Filtered:=false
  else begin
    if(not tbAutoCall.Filtered) then
      tbAutoCall.Filtered:=true;
    tbAutoCall.Filter:='出乘车次 = '+QuotedStr(Edit3.Text);
  end;
end;


procedure TfmMain.Edit8Change(Sender: TObject);
begin
  if IsEmptyString(Edit8.Text) then
    tbStuff.Filtered:=false
  else begin
    if(not tbAutoCall.Filtered) then
      tbStuff.Filtered:=true;
    case ComboBox8.ItemIndex of
      0:  begin
         tbStuff.Filter:='单位名称 = '+QuotedStr(Edit8.Text);
        end;
      1:  begin
         tbStuff.Filter:='乘务员姓名 = '+QuotedStr(Edit8.Text);
        end;
    end;
  end;
end;

procedure TfmMain.Edit6Change(Sender: TObject);
begin
  if IsEmptyString(Edit6.Text) then
    tbLogInOff.Filtered:=false
  else begin
    if(not tbAutoCall.Filtered) then
      tbLogInOff.Filtered:=true;
    case ComboBox6.ItemIndex of
      0:  begin
         tbLogInOff.Filter:='姓名 = '+QuotedStr(Edit6.Text);
        end;
      1:  begin
        end;
    end;
  end;
end;

procedure TfmMain.Edit7Change(Sender: TObject);
begin
  if IsEmptyString(Edit7.Text) then
    tbLeave.Filtered:=false
  else begin
    if(not tbLeave.Filtered) then begin
      tbLeave.Filtered:=true;
      tbLeave.Filter:='姓名 = '+QuotedStr(Edit7.Text);
    end;
  end;
end;

procedure TfmMain.BitBtn7Click(Sender: TObject);
begin
  tbPhone.Filter:='开始时间 > '+QuotedStr(DateTimeToStr(trunc(DateTimePicker1.DateTime)+DateTimePicker2.DateTime-trunc(DateTimePicker2.DateTime)));
  tbPhone.Filtered:=true;
end;

procedure TfmMain.BitBtn8Click(Sender: TObject);
begin
  tbVoice.Filter:='叫班时间 > '+QuotedStr(DateTimeToStr(trunc(DateTimePicker1.DateTime)+DateTimePicker3.DateTime-trunc(DateTimePicker4.DateTime)));
  tbVoice.Filtered:=true;
end;

procedure TfmMain.DBEdit1Exit(Sender: TObject);
begin
  try
    Caller.Queue[tbPlan.RecNo-1].time:=tbPlan.FieldByName('计划叫班时间').AsDateTime+strtoint(DBEdit1.Text)*60*ONE_SECOND;
  except
    MessageBox(fmMain.Handle,'晚点时间只能输入数字','输入错误',MB_OK);
    DBEdit1.Text:='0';
  end;
end;

procedure TfmMain.N27Click(Sender: TObject);
begin
  tbLogInOff.First;
  Sleep(100);  //等待数据集更新
  tbLogInOff.Edit;
  tbLogInOff.FieldByName('退出时间').AsDateTime:=Now;
  tbLogInOff.Post;
  Application.Terminate;
end;

procedure TfmMain.N18Click(Sender: TObject);
begin
  fmPass.Label1.Caption:=Caller.UserName;
  fmPass.Edit1.Text:='';
  fmPass.ShowModal;
end;

procedure TfmMain.N20Click(Sender: TObject);
begin
  fmAbout.Left:=(Screen.Width-fmAbout.Width)div 2+5;
  fmAbout.Top:=(Screen.Height-fmAbout.Height)div 2+5;
  fmAbout.ShowModal;
end;

procedure TfmMain.btnStickyClick(Sender: TObject);
begin
  fmSticky.ShowModal;
end;

procedure TfmMain.Button8Click(Sender: TObject);
begin
  //设置皮肤
  if OpenDialog1.Execute then begin
    SkinData1.Active:=false;
    SkinData1.SkinFile:=OpenDialog1.FileName;
    SkinData1.Active:=true;
  end;
end;

procedure TfmMain.DBGrid9TitleClick(Column: TColumn);
begin
  if(Column.Index=0) then begin
    {with TQuery(TDBGrid(Column.Grid).DataSource.DataSet) do begin
      Active:=false;
      SQL.Clear;
      SQL.Add('select * from Room.db');
      SQL.Add('order by '+Column.FieldName+' asc');
      Open;
    end;  }
    DBGrid9.Columns[0].Title.Caption:='端口号↑';
    DBGrid9.Columns[1].Title.Caption:='房间号码';
    tbRoom.Sort:='线路 ASC';
  end
  else if(Column.Index=1) then begin
    DBGrid9.Columns[0].Title.Caption:='端口号';
    DBGrid9.Columns[1].Title.Caption:='房间号码↑';
    tbRoom.Sort:='房间号码 ASC';
  end;

end;

procedure TfmMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if(TDBGrid(Sender).DataSource.DataSet.RecNo in RecNoCollect) then begin
    //TDBGrid(Sender).Canvas.Brush.Color := clBlue;
    TDBGrid(Sender).Canvas.Font.Color := clRed;
    TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end
  else if(TDBGrid(Sender).DataSource.DataSet.RecNo in CalledRecNoCollect) then begin
    TDBGrid(Sender).Canvas.Font.Color := clBlue;
    TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end
  else  begin
    TDBGrid(Sender).Canvas.Font.Color := clBlack;
    TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;

procedure TfmMain.BitBtn1Click(Sender: TObject);
begin
  //MediaPlayer1.FileName:=RootDir+'\AutoCall.wav';
  //MediaPlayer1.Open;
  //MediaPlayer1.Play;
  //SendMessage(DBGrid1.Handle,BM_CLICK,100,100);
  //DBGrid1.Canvas.Brush.Color:=clBlue;
  //DBGrid1.DefaultDrawColumnCell(Rect(0,0,100,100),1,DBGrid1.Columns[1],[gdSelected]);
end;

procedure TfmMain.DBGrid5TitleClick(Column: TColumn);
begin
  if(Column.Index=1) then begin
    if(tbPhone.Sort='开始时间 DESC') then begin
      Column.Title.Caption:='开始时间↑';
      tbPhone.Sort:='开始时间 ASC';
    end
    else begin
      Column.Title.Caption:='开始时间↓';
      tbPhone.Sort:='开始时间 DESC';
    end;
  end;
end;

procedure TfmMain.DBGrid4TitleClick(Column: TColumn);
begin
  if(Column.Index=1) then begin
    if(tbVoice.Sort='叫班时间 DESC') then begin
      Column.Title.Caption:='叫班时间↑';
      tbVoice.Sort:='叫班时间 ASC';
    end
    else begin
      Column.Title.Caption:='叫班时间↓';
      tbVoice.Sort:='叫班时间 DESC';
    end;
  end;
end;


procedure TfmMain.CheckBox3Click(Sender: TObject);
var
  fname:TFileName;
  tfile:File of TSysSet;
begin
  //自动叫班功能
  SysSet.AutoCallEnabled:=CheckBox3.Checked;
  //写入文件
  fname:=RootDir+'\sysset.cfg';
  assignfile(tfile,fname);
  rewrite(tfile);
  write(tfile,SysSet);
end;

procedure TfmMain.CheckBox1Click(Sender: TObject);
var
  fname:TFileName;
  tfile:File of TSysSet;
begin
  //自动叫班功能
  SysSet.AutoReCallEnabled:=CheckBox1.Checked;
  //写入文件
  fname:=RootDir+'\sysset.cfg';
  assignfile(tfile,fname);
  rewrite(tfile);
  write(tfile,SysSet);
end;


procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DeleteCriticalSection(Critical1);
end;

end.

⌨️ 快捷键说明

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