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

📄 reservationform.~pas

📁 其实学Delphi并不难
💻 ~PAS
字号:
unit ReservationForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ParentForm, ADODB, DB, ImgList, Grids, DBGrids, ComCtrls,
  ToolWin, StdCtrls, Buttons, ExtCtrls, Mask, DBCtrls;

type
  TReservation = class(TParent)
    Label9: TLabel;
    Label7: TLabel;
    Label6: TLabel;
    Label12: TLabel;
    Label11: TLabel;
    Label10: TLabel;
    DBEdit6: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit1: TDBEdit;
    ComboBox1: TComboBox;
    Label8: TLabel;
    Label14: TLabel;
    DBEdit7: TDBEdit;
    Label15: TLabel;
    Label16: TLabel;
    DBEdit8: TDBEdit;
    Label17: TLabel;
    DBEdit9: TDBEdit;
    Label13: TLabel;
    DBEdit10: TDBEdit;
    Label18: TLabel;
    DBEdit11: TDBEdit;
    Label19: TLabel;
    DBEdit12: TDBEdit;
    Label20: TLabel;
    DBEdit13: TDBEdit;
    Label21: TLabel;
    DBEdit14: TDBEdit;
    Label22: TLabel;
    DBEdit15: TDBEdit;
    Label23: TLabel;
    DBEdit16: TDBEdit;
    Label24: TLabel;
    DBEdit17: TDBEdit;
    Label25: TLabel;
    Label26: TLabel;
    DBCheckBox1: TDBCheckBox;
    DBComboBox1: TDBComboBox;
    DBComboBox2: TDBComboBox;
    BitBtn2: TBitBtn;
    MonthCalendar1: TMonthCalendar;
    ADOCommand1: TADOCommand;
    DBEdit18: TDBEdit;
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    
    procedure ComboBox1Select(Sender: TObject);
    procedure MonthCalendar1DblClick(Sender: TObject);
    procedure DBComboBox1DropDown(Sender: TObject);
    procedure DBComboBox2DropDown(Sender: TObject);
    procedure DBComboBox1Exit(Sender: TObject);
    procedure DBComboBox2Exit(Sender: TObject);
    procedure DBCheckBox1Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Reservation: TReservation;

implementation

{$R *.dfm}
uses RoomStatusForm,MainForm;
procedure TReservation.DataSource1DataChange(Sender: TObject;
  Field: TField);
var
 i:integer;
begin
  inherited;
  //根据客房的类型编号显示客房类型名称
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select 类型名称 from 客房类型 where 类型编号='''+dbedit2.Text+'''');
  adoquery1.Open;
  combobox1.Text:=adoquery1.fieldbyname('类型名称').AsString;
  //设置表格宽度

  dbgrid1.Columns[0].Width:=100;
  //dbgrid1.Columns[1].Width:=100;
  for i:=1 to 20 do
   dbgrid1.Columns[i].Width:=64;

end;


//----------根据选择的客房类型名称反查并修改客房类型编号---------
procedure TReservation.ComboBox1Select(Sender: TObject);
begin
  inherited;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select 类型编号 from 客房类型 where 类型名称='''+combobox1.Text+'''');
  adoquery1.Open;
  dbedit2.Text:=adoquery1.fieldbyname('类型编号').AsString;

end;

//-------------------------------------------------------------
//------------------以下代码处理抵店时间和离店时间与日历显示---
procedure TReservation.MonthCalendar1DblClick(Sender: TObject);
begin
  inherited;
  //根据单击的下拉列表框来确定把选择的时间输入到那个列表框中
  if dbcombobox1.Focused then
    dbcombobox1.SelText:=datetostr(monthcalendar1.Date);
  if dbcombobox2.Focused then
    dbcombobox2.SelText:=datetostr(monthcalendar1.Date);
  monthcalendar1.Visible:=false;

end;

procedure TReservation.DBComboBox1DropDown(Sender: TObject);
begin
  inherited;
  //将数据文本框中的时间赋给日历
  if dbcombobox1.Text<>'' then
    monthcalendar1.Date:=strtodate(dbcombobox1.Text);
  //确定日历显示的位置
    monthcalendar1.Top:=dbcombobox1.Top+panel2.Top-monthcalendar1.Height;
    monthcalendar1.Left:=dbcombobox1.Left;
    monthcalendar1.Visible:=true;


end;

procedure TReservation.DBComboBox2DropDown(Sender: TObject);
begin
  inherited;
    //将数据文本框中的时间赋给日历
    if dbcombobox2.Text<>'' then
    monthcalendar1.Date:=strtodate(dbcombobox2.Text);
    //确定日历显示的位置
    monthcalendar1.Top:=dbcombobox2.Top+panel2.Top-monthcalendar1.Height;
    monthcalendar1.Left:=dbcombobox2.Left;
    monthcalendar1.Visible:=true;
end;

procedure TReservation.DBComboBox1Exit(Sender: TObject);
begin
  inherited;
  monthcalendar1.Visible:=false;
end;

procedure TReservation.DBComboBox2Exit(Sender: TObject);
begin
  inherited;
  monthcalendar1.Visible:=false;
end;
//-----------------------------------------------------------

//--------------------编辑时,只有选择了加床才能输入加床价格-------------------------
procedure TReservation.DBCheckBox1Click(Sender: TObject);
begin
  inherited;
  if dbcheckbox1.Checked then
   dbedit10.Enabled:=true
   else
   dbedit10.Enabled:=false;
end;
//--------------新增预定单-------------------------
procedure TReservation.ToolButton6Click(Sender: TObject);
var
  maxnum,num:string;
  newnum:integer;
begin
  inherited;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select max(预定单号) 最大编号 from 预定单');
  adoquery1.Open;
  maxnum:=trim(adoquery1.fieldbyname('最大编号').AsString);
  if maxnum='' then maxnum:='YD0';
  //将预定单前面的YD两个字母删除后转为整数
  Delete(maxnum,1,2);
  newnum:=strtoint(maxnum)+1;
  //重新编号并生成新的预定单号
  if length(inttostr(newnum))=1 then num:='YD0000000'+inttostr(newnum);
  if length(inttostr(newnum))=2 then num:='YD000000'+inttostr(newnum);
  if length(inttostr(newnum))=3 then num:='YD00000'+inttostr(newnum);
  //设置新增订单的默认值
  dbedit1.Text:=num;
  dbcombobox1.SelText:=datetostr(date);
  dbcombobox2.SelText:=datetostr(date);
  dbedit12.Text:='预定';
  dbedit13.Text:=' ';



end;
//-----------选择客房编号----------
procedure TReservation.BitBtn2Click(Sender: TObject);
var
 newform:Troomstatus;
begin
  inherited;
  newform:=Troomstatus.Create(application);
  newform.Button2.Enabled:=false;
  newform.Caption:='双击房态图选择房间号';
  if combobox1.Text<>'' then//如果客户提出了客房类型要求
    newform.preOrder:=dbedit2.Text
    else
    newform.preOrder:='no preorder';
  //只有双击某个房间号后才能退出该选择窗体
  newform.BorderIcons:=newform.BorderIcons-[biSystemMenu]

end;

procedure TReservation.FormActivate(Sender: TObject);
begin
  inherited;
  if panel2.Enabled=true then
    begin
      //读入选择的房间号
      dbedit4.Text:='0'+inttostr(main.RoomNum);
      //根据房间号,确定房间类型,价格
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select a.价格,a.类型名称,a.类型编号 from 客房类型 a,客房信息 b');
      adoquery1.SQL.Add(' where (a.类型编号=b.类型编号)and(b.客房编号='''+dbedit4.Text+''')');
      adoquery1.Open;
      dbedit2.Text:=trim(adoquery1.fieldbyname('类型编号').AsString);
      combobox1.Text:=trim(adoquery1.fieldbyname('类型名称').AsString);
      dbedit5.Text:=trim(adoquery1.fieldbyname('价格').AsString);
      dbedit6.Text:=dbedit5.Text;
    end;


end;



procedure TReservation.ToolButton10Click(Sender: TObject);
begin

  if dbedit4.Text='' then
   begin
    showmessage('客房编号不允许为空');
    exit;
   end;

   inherited;
   //先把所有状态为将到的房间改为空房
   adocommand1.CommandText:='update 客房信息 set 状态=''空房'' where 状态=''将到''';
   adocommand1.Execute;
   //然后根据预定单中的信息,将有预定的房间状态改为将到
   datasource1.DataSet.First;
   while not datasource1.DataSet.Eof do
    begin
      adocommand1.CommandText:='update 客房信息 set 状态=''将到'' where 客房编号='''+dbedit4.Text+'''';
      adocommand1.Execute;
      datasource1.DataSet.Next;
    end;
end;

procedure TReservation.ToolButton8Click(Sender: TObject);
begin
  if application.MessageBox('是否删除预定单?','确认',MB_OKCANCEL)=IDOK then
    begin
    //先将该订单对应的房间状态改回空房状态,再删除订单
    adocommand1.CommandText:='update 客房信息 set 状态=''空房'' where 客房编号='''+dbedit4.Text+'''';
    adocommand1.Execute;
    datasource1.DataSet.Delete;
    end;
  //inherited;

end;
//-------------------供其他窗体调用时选择预定单号和客房编号--------------------
procedure TReservation.DBGrid1DblClick(Sender: TObject);
begin
  inherited;
  if self.Caption='双击表格选择预定单号' then
    if dbgrid1.Fields[0].Text<>'' then
    begin
      main.YDNum:=dbgrid1.Fields[0].Text;
      main.RoomNum:=strtoint(trim(dbgrid1.Fields[1].Text));
      close;
    end;
end;

procedure TReservation.FormCreate(Sender: TObject);
begin
  inherited;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select distinct 类型名称 from 客房类型');
  adoquery1.Open;
  combobox1.Items.Clear;
  while not adoquery1.Eof do
   begin
    combobox1.Items.Add(adoquery1.fieldbyname('类型名称').AsString);
    adoquery1.Next
   end;


end;

end.

⌨️ 快捷键说明

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