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

📄 unit3.pas

📁 这是一个火车站公寓的自动叫班程序源码
💻 PAS
字号:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Buttons, DBCtrls, Mask, MyClass, Common, DB,
  DBTables, ADODB;

type
  TfmAdd = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    PageAdd: TPageControl;
    tabPlan: TTabSheet;
    tabLeave: TTabSheet;
    tabStuff: TTabSheet;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    DateTimePicker4: TDateTimePicker;
    DateTimePicker6: TDateTimePicker;
    tabRoom: TTabSheet;
    tabCaller: TTabSheet;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    DateTimePicker7: TDateTimePicker;
    DateTimePicker8: TDateTimePicker;
    Label12: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    DateTimePicker9: TDateTimePicker;
    DateTimePicker10: TDateTimePicker;
    Label16: TLabel;
    DateTimePicker11: TDateTimePicker;
    DateTimePicker12: TDateTimePicker;
    Label17: TLabel;
    DateTimePicker13: TDateTimePicker;
    DateTimePicker14: TDateTimePicker;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Edit1: TEdit;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    ComboBox6: TComboBox;
    ComboBox7: TComboBox;
    ComboBox8: TComboBox;
    ComboBox9: TComboBox;
    ComboBox10: TComboBox;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    ComboBox11: TComboBox;
    Edit8: TEdit;
    ComboBox12: TComboBox;
    tbTemp: TADOTable;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    procedure GetCompanyName(var cbxCompanyName:TComboBox);
    procedure GetCompanyNumber(var cbxCompanyNumber:TComboBox);
    procedure GetStewardName(var cbxStewardName:TComboBox);
    procedure GetRoomNumber(var cbxRoomNumber:TComboBox);
    procedure GetTrain(var cbxTrain:TComboBox);
    procedure ActiveTabPlan;
    procedure ActiveTabLeave;
    procedure ActiveTabStuff;
    procedure ActiveTabRoom;
    procedure ActiveTabCaller;
  public
    { Public declarations }
    function ValidCheck:boolean;
  end;

var
  fmAdd: TfmAdd;

implementation

{$R *.dfm}
Uses Unit1;

function TfmAdd.ValidCheck:boolean;
var valid:boolean;
begin

  valid:=true;
  Result:=valid;
end;

procedure TfmAdd.BitBtn1Click(Sender: TObject);
var TimeIn,TimeOut,FirstCall,LaterCall:TDateTime;
    find:boolean;
    i:integer;
begin
  //值有效性检查
  if(not ValidCheck) then
    Exit;
  //添加或修改
  if(PageAdd.ActivePage=tabPlan) then begin       //添加或修改叫班计划
    TimeOut:=DateTimePicker4.DateTime-trunc(DateTimePicker4.DateTime);
    FirstCall:=DateTimePicker6.DateTime;
    EnterCriticalSection(Critical1);  //进入临界段
    fmMain.tbPlan2.RecNo:=fmMain.tbPlan.RecNo;    //设置当前项
    if(IsAddRecord) then
      fmMain.tbPlan2.Append;
    fmMain.tbPlan2.Edit;
    fmMain.tbPlan2.FieldByName('车次').AsString:=ComboBox4.Text;
    fmMain.tbPlan2.FieldByName('开车时间').AsString:=FormatDateTime('hh:mm',TimeOut);
    fmMain.tbPlan2.FieldByName('计划叫班时间').AsString:=FormatDateTime('hh:mm',FirstCall);
    fmMain.tbPlan2.FieldByName('房间号码').AsString:=ComboBox3.Text;
    fmMain.tbPlan2.FieldByName('开启').AsBoolean:=true;
    fmMain.tbPlan2.FieldByName('晚点时间').AsInteger:=0;
    //当添加新记录时初始化添加状态
    if(IsAddRecord) then
      fmMain.tbPlan2.FieldByName('状态').AsInteger:=3;    //csWaitFirst;
    try
      fmMain.tbPlan2.Post;
    except
      fmMain.tbPlan2.Delete;
      //MessageDlg('叫班时间不允许重复,请更改叫班时间',mtInformation,[mbYes],0);
    end;
    if(fmMain.tbPlan.Active)then begin
      i:=fmMain.tbPlan2.FieldByName('序号').AsInteger;
      fmMain.tbPlan.Close;  //刷新显示
      fmMain.tbPlan.Open;
      fmMain.tbPlan.Sort:='计划叫班时间 ASC';
      fmMain.tbPlan.Locate('序号',i,[loPartialKey]);
    end;
    LeaveCriticalSection(Critical1);//退出临界段
    //fmMain.DBGrid1.Enabled:=false;
    //fmMain.DBGrid1.Enabled:=true;
    //Caller.InitQueue;
  end
  else if(PageAdd.ActivePage=tabLeave) then begin //添加或修改住离寓登记
    TimeIn:=trunc(DateTimePicker7.DateTime)+(DateTimePicker8.DateTime-trunc(DateTimePicker8.DateTime));
    TimeOut:=trunc(DateTimePicker9.DateTime)+(DateTimePicker10.DateTime-trunc(DateTimePicker10.DateTime));
    FirstCall:=trunc(DateTimePicker11.DateTime)+(DateTimePicker12.DateTime-trunc(DateTimePicker12.DateTime));
    LaterCall:=trunc(DateTimePicker13.DateTime)+(DateTimePicker14.DateTime-trunc(DateTimePicker14.DateTime));
    fmMain.tbLeave.Edit;
    fmMain.tbLeave.FieldByName('单位名称').AsString:=ComboBox5.Text;
    fmMain.tbLeave.FieldByName('姓名').AsString:=ComboBox6.Text;
    fmMain.tbLeave.FieldByName('房间号').AsString:=ComboBox7.Text;
    fmMain.tbLeave.FieldByName('出乘车次').AsString:=ComboBox8.Text;
    fmMain.tbLeave.FieldByName('入寓时间').AsDateTime:=TimeIn;
    fmMain.tbLeave.FieldByName('开车时间').AsDateTime:=TimeOut;
    fmMain.tbLeave.FieldByName('一叫时间').AsDateTime:=FirstCall;
    fmMain.tbLeave.FieldByName('三催时间').AsDateTime:=LaterCall;
    fmMain.tbLeave.Post;
  end
  else if(PageAdd.ActivePage=tabStuff) then begin //添加或修改住寓人员
    if(Caller.EditType=etAdd) then begin //Add
      fmMain.tbStuff.AppendRecord([ComboBox9.Text,ComboBox10.Text,
                        Edit4.Text,Edit5.Text]);
    end
    else begin                           //Modify
      fmMain.tbStuff.Edit;
      fmMain.tbStuff.FieldByName('单位编号').AsString:=ComboBox9.Text;
      fmMain.tbStuff.FieldByName('单位名称').AsString:=ComboBox10.Text;
      fmMain.tbStuff.FieldByName('乘务员编号').AsString:=Edit4.Text;
      fmMain.tbStuff.FieldByName('乘务员姓名').AsString:=Edit5.Text;
      fmMain.tbStuff.Post;
    end;
  end
  else if(PageAdd.ActivePage=tabRoom) then begin  //添加或修改房间
    if(Caller.EditType=etAdd) then begin //Add
      find:=false;
      for i:=0 to ComboBox11.Items.Count-1 do
        if(ComboBox11.Text=ComboBox11.Items[i]) then begin
          find:=true;
          Break;
        end;
      if(not find) then begin
        MessageBox(fmAdd.Handle,'端口号不存在','错误',MB_OK);
        Exit;
      end;
      fmMain.tbRoom.AppendRecord([strtoint(ComboBox11.Text),Edit6.Text]);
    end
    else begin                           //Modify
      fmMain.tbRoom.Edit;
      fmMain.tbRoom.FieldByName('房间号码').AsString:=Edit6.Text;
      fmMain.tbRoom.Post;
    end;
  end
  else if(PageAdd.ActivePage=tabCaller) then begin//添加或修改叫班员
    if(Caller.EditType=etAdd) then begin //Add
      fmMain.tbCaller.AppendRecord([Edit8.Text,ComboBox12.Text,Edit1.Text]);
    end
    else begin                           //Modify
      fmMain.tbCaller.Edit;
      fmMain.tbCaller.FieldByName('姓名').AsString:=Edit8.Text;
      fmMain.tbCaller.FieldByName('类型').AsString:=ComboBox12.Text;
      fmMain.tbCaller.FieldByName('密码').AsString:=Edit1.Text;
      fmMain.tbCaller.Post;
    end;
  end;
end;

procedure TfmAdd.BitBtn2Click(Sender: TObject);
begin
  fmAdd.Hide;
end;

procedure TfmAdd.GetCompanyName(var cbxCompanyName:TComboBox);
begin
  if(tbTemp.Active) then
    tbTemp.Close;
  tbTemp.TableName:='Stuff';
  tbTemp.Open;
  cbxCompanyName.Clear;
  cbxCompanyName.Items.Add(tbTemp.FieldByName('单位名称').AsString);
  tbTemp.Next;
  while(not tbTemp.Eof) do begin
    cbxCompanyName.Items.Add(tbTemp.FieldByName('单位名称').AsString);
    tbTemp.Next;
  end;
  cbxCompanyName.ItemIndex:=0;
  tbTemp.Close;
end;

procedure TfmAdd.GetCompanyNumber(var cbxCompanyNumber:TComboBox);
begin
  if(tbTemp.Active) then
    tbTemp.Close;
  tbTemp.TableName:='Stuff';
  tbTemp.Open;
  cbxCompanyNumber.Clear;
  cbxCompanyNumber.Items.Add(tbTemp.FieldByName('单位编号').AsString);
  tbTemp.Next;
  while(not tbTemp.Eof) do begin
    cbxCompanyNumber.Items.Add(tbTemp.FieldByName('单位编号').AsString);
    tbTemp.Next;
  end;
  cbxCompanyNumber.ItemIndex:=0;
  tbTemp.Close;
end;

procedure TfmAdd.GetStewardName(var cbxStewardName:TComboBox);
begin
  if(tbTemp.Active) then
    tbTemp.Close;
  tbTemp.TableName:='Stuff';
  tbTemp.Open;
  cbxStewardName.Clear;
  cbxStewardName.Items.Add(tbTemp.FieldByName('乘务员姓名').AsString);
  tbTemp.Next;
  while(not tbTemp.Eof) do begin
    cbxStewardName.Items.Add(tbTemp.FieldByName('乘务员姓名').AsString);
    tbTemp.Next;
  end;
  cbxStewardName.ItemIndex:=0;
  tbTemp.Close;
end;

procedure TfmAdd.GetRoomNumber(var cbxRoomNumber:TComboBox);
begin
  if(tbTemp.Active) then
    tbTemp.Close;
  tbTemp.TableName:='Room';
  tbTemp.Open;
  cbxRoomNumber.Clear;
  cbxRoomNumber.Items.Add(tbTemp.FieldByName('房间号码').AsString);
  tbTemp.Next;
  while(not tbTemp.Eof) do begin
    cbxRoomNumber.Items.Add(tbTemp.FieldByName('房间号码').AsString);
    tbTemp.Next;
  end;
  cbxRoomNumber.ItemIndex:=0;
  tbTemp.Close;
end;

procedure TfmAdd.GetTrain(var cbxTrain:TComboBox);
begin
  if(tbTemp.Active) then
    tbTemp.Close;
  tbTemp.TableName:='CallPlan';
  tbTemp.Open;
  cbxTrain.Clear;
  cbxTrain.Items.Add(tbTemp.FieldByName('车次').AsString);
  tbTemp.Next;
  while(not tbTemp.Eof) do begin
    cbxTrain.Items.Add(tbTemp.FieldByName('车次').AsString);
    tbTemp.Next;
  end;
  cbxTrain.ItemIndex:=0;
  tbTemp.Close;
end;

procedure TfmAdd.ActiveTabPlan;
begin
    if(Caller.EditType=etAdd) then begin  //添加计划
    //单位名称
    //GetCompanyName(ComboBox1);
    //姓名
    //GetStewardName(ComboBox2);
    //房间号码
    GetRoomNumber(ComboBox3);
    //出乘车次
    GetTrain(ComboBox4);
    //
    DateTimePicker4.Time:=Time;
    DateTimePicker6.Time:=Time;
  end
  else begin                            //修改计划
    ComboBox3.Text:=fmMain.tbPlan.FieldByName('房间号码').AsString;
    ComboBox4.Text:=fmMain.tbPlan.FieldByName('车次').AsString;
    DateTimePicker4.DateTime:=fmMain.tbPlan.FieldByName('开车时间').AsDateTime;
    DateTimePicker6.DateTime:=fmMain.tbPlan.FieldByName('计划叫班时间').AsDateTime;

  end;
end;

procedure TfmAdd.ActiveTabLeave;
begin
  if(Caller.EditType=etAdd) then begin  //添加
    //单位名称
    GetCompanyName(ComboBox5);
    //姓名
    GetStewardName(ComboBox6);
    //房间号码
    GetRoomNumber(ComboBox7);
    //出乘车次
    GetTrain(ComboBox8);
    //
    DateTimePicker7.Date:=Date;
    DateTimePicker8.Time:=Time;
    DateTimePicker9.Date:=Date;
    DateTimePicker10.Time:=Time;
    DateTimePicker11.Time:=Time;
    DateTimePicker12.Time:=Time;
    DateTimePicker13.Date:=Date;
    DateTimePicker14.Time:=Time;

  end
  else begin                            //修改
    ComboBox5.Text:=fmMain.tbLeave.FieldByName('单位名称').AsString;
    ComboBox6.Text:=fmMain.tbLeave.FieldByName('姓名').AsString;
    ComboBox7.Text:=fmMain.tbLeave.FieldByName('房间号').AsString;
    ComboBox8.Text:=fmMain.tbLeave.FieldByName('出乘车次').AsString;
    DateTimePicker7.DateTime:=fmMain.tbLeave.FieldByName('入寓时间').AsDateTime;
    DateTimePicker8.DateTime:=fmMain.tbLeave.FieldByName('入寓时间').AsDateTime;
    DateTimePicker9.DateTime:=fmMain.tbLeave.FieldByName('开车时间').AsDateTime;
    DateTimePicker10.DateTime:=fmMain.tbLeave.FieldByName('开车时间').AsDateTime;
    DateTimePicker11.DateTime:=fmMain.tbLeave.FieldByName('一叫时间').AsDateTime;
    DateTimePicker12.DateTime:=fmMain.tbLeave.FieldByName('一叫时间').AsDateTime;
    DateTimePicker13.DateTime:=fmMain.tbLeave.FieldByName('三催时间').AsDateTime;
    DateTimePicker14.DateTime:=fmMain.tbLeave.FieldByName('三催时间').AsDateTime;

  end;
end;

procedure TfmAdd.ActiveTabStuff;
begin
  if(Caller.EditType=etAdd) then begin  //添加
    //单位编号
    GetCompanyNumber(ComboBox9);
    //单位名称
    GetCompanyName(ComboBox10);
    //
    Edit4.Text:='';
    Edit5.Text:='';
  end
  else begin                            //修改
    ComboBox9.Text:=fmMain.tbStuff.FieldByName('单位编号').AsString;
    ComboBox10.Text:=fmMain.tbStuff.FieldByName('单位名称').AsString;
    Edit4.Text:=fmMain.tbStuff.FieldByName('乘务员编号').AsString;
    Edit5.Text:=fmMain.tbStuff.FieldByName('乘务员姓名').AsString;

  end;
end;

procedure TfmAdd.ActiveTabRoom;
begin
  if(Caller.EditType=etAdd) then begin  //添加
    Edit6.Text:='';
  end
  else begin                            //修改
    Edit6.Text:=fmMain.tbRoom.FieldByName('房间号码').AsString;
  end;
end;

procedure TfmAdd.ActiveTabCaller;
begin
  if(Caller.EditType=etAdd) then begin  //添加
    Edit8.Text:='';
    Edit1.Text:='';
  end
  else begin                            //修改
    Edit8.Text:=fmMain.tbCaller.FieldByName('姓名').AsString;
    ComboBox12.Text:=fmMain.tbCaller.FieldByName('类型').AsString;
    Edit1.Text:=fmMain.tbCaller.FieldByName('密码').AsString;
  end;
end;

procedure TfmAdd.FormShow(Sender: TObject);
begin
  if(PageAdd.ActivePage=tabPlan) then
    ActiveTabPlan
  else if(PageAdd.ActivePage=tabLeave) then
    ActiveTabLeave
  else if(PageAdd.ActivePage=tabStuff) then
    ActiveTabStuff
  else if(PageAdd.ActivePage=tabRoom) then
    ActiveTabRoom
  else if(PageAdd.ActivePage=tabCaller) then
    ActiveTabCaller;
end;

end.

⌨️ 快捷键说明

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