yddjunit.pas
来自「东华休闲山庄洗浴、餐饮、客房管理系统」· PAS 代码 · 共 409 行
PAS
409 行
unit YDDJUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Mask, SUIEdit, ComCtrls, StdCtrls, SUIComboBox, Grids, DBGrids,
SUIImagePanel, SUIGroupBox, DB, DBClient, SUIListBox, SUIButton, ExtCtrls;
type
TYDDJForm = class(TForm)
suiPanel1: TsuiPanel;
Label15: TLabel;
Label1: TLabel;
Label16: TLabel;
Label7: TLabel;
Label8: TLabel;
Label3: TLabel;
Label17: TLabel;
suiButton1: TsuiButton;
suiButton2: TsuiButton;
suiListBox2: TsuiListBox;
btn3: TsuiButton;
btn4: TsuiButton;
ds2: TDataSource;
ClientDataSet1: TClientDataSet;
ClientDataSet2: TClientDataSet;
DataSource1: TDataSource;
suiGroupBox1: TsuiGroupBox;
dbgrd1: TDBGrid;
suiGroupBox2: TsuiGroupBox;
DBGrid1: TDBGrid;
suiEdit1: TsuiEdit;
suiEdit2: TsuiEdit;
cbb1: TsuiComboBox;
dtp1: TDateTimePicker;
suiMaskEdit1: TsuiMaskEdit;
DateTimePicker1: TDateTimePicker;
suiMaskEdit2: TsuiMaskEdit;
DateTimePicker2: TDateTimePicker;
suiMaskEdit3: TsuiMaskEdit;
cbb2: TsuiComboBox;
ClientDataSet3: TClientDataSet;
procedure suiButton2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure suiEdit1KeyPress(Sender: TObject; var Key: Char);
procedure suiEdit2KeyPress(Sender: TObject; var Key: Char);
procedure cbb1KeyPress(Sender: TObject; var Key: Char);
procedure cbb1DropDown(Sender: TObject);
procedure dtp1KeyPress(Sender: TObject; var Key: Char);
procedure suiMaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure DateTimePicker1KeyPress(Sender: TObject; var Key: Char);
procedure suiMaskEdit2KeyPress(Sender: TObject; var Key: Char);
procedure DateTimePicker2KeyPress(Sender: TObject; var Key: Char);
procedure suiMaskEdit3KeyPress(Sender: TObject; var Key: Char);
procedure dtp1Change(Sender: TObject);
procedure cbb2DropDown(Sender: TObject);
procedure cbb2Select(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure btn3Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure suiListBox2Click(Sender: TObject);
procedure suiButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
id:string;
ifguest:boolean;
ifguestselect:boolean;
end;
var
YDDJForm: TYDDJForm;
implementation
uses MainUnit, YDGLUnit, LoginUnit, GuestSelectUnit;
{$R *.dfm}
procedure TYDDJForm.suiButton2Click(Sender: TObject);
begin
close;
end;
procedure TYDDJForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
loginform.ExecuteSQL('delete from roomselect');
self.ClientDataSet3.Close;
self.ClientDataSet1.Close;
self.ClientDataSet2.Close;
if MainForm.ydflag then
begin
mainform.RefrushRoomState(0);
MainForm.Enabled:=true;
end
else
begin
YDGLForm.ClientDataSet1.Close;
YDGLForm.ClientDataSet1.CommandText:='select * from Reserve order by id,roomnum';
YDGLForm.ClientDataSet1.Open;
YDGLForm.Enabled:=true;
end;
end;
procedure TYDDJForm.FormCreate(Sender: TObject);
begin
self.suiEdit1.Clear;
self.suiEdit2.Clear;
self.cbb1.Clear;
self.dtp1.DateTime:=now;
self.suiMaskEdit1.Text:='12:00';
self.DateTimePicker1.DateTime:=self.dtp1.DateTime+5;
self.suiMaskEdit2.Text:='12:00';
self.DateTimePicker2.DateTime:=self.dtp1.DateTime+3;
self.suiMaskEdit3.Text:='23:59';
self.cbb2.Clear;
self.suiListBox2.Items.Clear;
id:='YD'+FormatDateTime('yyyymmddhhnnss',now);
suiPanel1.Caption:='预订单号:'+id;
loginform.ExecuteSQL('delete from roomselect');
self.suiGroupBox1.Caption:='已预订宾客信息';
if mainform.roomnum<>'' then
begin
self.ClientDataSet2.Close;
self.ClientDataSet2.Open;
self.ClientDataSet2.Filter:='roomnum='''+mainform.roomnum+''' and state<>''已入住''';
self.ClientDataSet2.Filtered:=true;
self.suiGroupBox1.Caption:='已预订'+mainform.roomnum+'的宾客';
loginform.ExecuteSQL('insert into roomselect(id,roomtype,roomnum) '+
'values(''1'','''+mainform.roomtype+''','''+mainform.roomnum+''')');
end;
self.ClientDataSet1.Close;
self.ClientDataSet1.Open;
end;
procedure TYDDJForm.FormActivate(Sender: TObject);
begin
self.suiEdit1.SetFocus;
end;
procedure TYDDJForm.suiEdit1KeyPress(Sender: TObject; var Key: Char);
var
count:integer;
begin
if key=#13 then
begin
self.ClientDataSet2.Close;
self.ClientDataSet2.Open;
self.ClientDataSet2.Filter:='name='''+suiEdit1.Text+'''';
self.ClientDataSet2.Filtered:=True;
count:=ClientDataSet2.RecordCount;
self.ClientDataSet2.Close;
if count=0 then
begin
self.suiEdit2.SetFocus;
end
else
begin
ifguest:=true;
ifguestselect:=True;
application.CreateForm(TGuestSelectForm,GuestSelectForm);
GuestSelectForm.Show;
SELF.Enabled:=False;
end;
end;
end;
procedure TYDDJForm.suiEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [#48..#57,#45,#13,#8]) then
key:=#0
else
if key=#13 then
cbb1.SetFocus;
end;
procedure TYDDJForm.cbb1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
self.dtp1.SetFocus;
end;
procedure TYDDJForm.cbb1DropDown(Sender: TObject);
begin
loginform.AddCombobox(cbb1,'select name from guestsource');
end;
procedure TYDDJForm.dtp1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
self.suiMaskEdit1.SetFocus;
end;
procedure TYDDJForm.suiMaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
self.DateTimePicker1.SetFocus;
end;
procedure TYDDJForm.DateTimePicker1KeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then
self.suiMaskEdit2.SetFocus;
end;
procedure TYDDJForm.suiMaskEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
self.DateTimePicker2.SetFocus;
end;
procedure TYDDJForm.DateTimePicker2KeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then
self.suiMaskEdit3.SetFocus;
end;
procedure TYDDJForm.suiMaskEdit3KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
self.cbb2.SetFocus;
end;
procedure TYDDJForm.dtp1Change(Sender: TObject);
begin
self.DateTimePicker1.DateTime:=self.dtp1.DateTime+5;
self.DateTimePicker2.DateTime:=self.dtp1.DateTime+3;
end;
procedure TYDDJForm.cbb2DropDown(Sender: TObject);
begin
loginform.AddCombobox(cbb2,'select type_mc from roomtype');
end;
procedure TYDDJForm.cbb2Select(Sender: TObject);
begin
suiListBox2.Items.Clear;
suiListBox2.Items.BeginUpdate;
loginform.ExecuteSQL('select roomtype.type_mc,room.room_num from room,roomtype '+
'where (room.room_type=roomtype.type_xh) and '+
'((room.room_state=''可供'') or (room.room_state=''预订'')) and '+
'(room.room_num<>'''+mainform.roomnum+''') and '+
'(roomtype.type_mc='''+cbb2.Text+''')'+
'order by room.room_num');
LoginForm.dsQuery.First;
while not LoginForm.dsQuery.Eof do
begin
suiListBox2.Items.Add(LoginForm.dsQuery.Fields[0].AsString+':'+LoginForm.dsQuery.Fields[1].AsString);
LoginForm.dsQuery.Next;
end;
suiListBox2.Items.EndUpdate;
end;
procedure TYDDJForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2 = 0 theN
DBGrid1.Canvas.Brush.Color:=clSilver
else
DBGrid1.Canvas.Brush.Color:=clYellow;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure TYDDJForm.dbgrd1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if dbgrd1.DataSource.DataSet.RecNo mod 2 = 0 theN
dbgrd1.Canvas.Brush.Color:=clSilver
else
dbgrd1.Canvas.Brush.Color:=clYellow;
dbgrd1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure TYDDJForm.btn3Click(Sender: TObject);
var
index:Integer;
roomnum:string;
roomtype:string;
temp:string;
begin
for index:=suiListBox2.Items.Count-1 downto 0 do
if suiListBox2.Selected[index] then
begin
temp:=suiListBox2.Items.Strings[index]+'@'+temp;
suiListBox2.Items.Delete(index);
end;
if temp<>'' then
begin
loginform.ExecuteSQL('select count(*)+1 from roomselect');
index:=loginform.dsQuery.Fields[0].AsInteger;
LoginForm.dsQuery.Close;
while Pos('@',temp)>0 do
begin
roomnum:=Copy(temp,1,Pos('@',temp)-1);
roomtype:=Copy(roomnum,1,Pos(':',roomnum)-1);
Delete(roomnum,1,Pos(':',roomnum));
loginform.ExecuteSQL('insert into roomselect(id,roomtype,roomnum) '+
'values('''+inttostr(index)+''','''+roomtype+''','''+roomnum+''')');
Delete(temp,1,Pos('@',temp));
inc(index);
end;
end;
ClientDataSet1.Close;
ClientDataSet1.Open;
end;
procedure TYDDJForm.btn4Click(Sender: TObject);
var
id,roomtype,roomnum:string;
temp:string;
index:Integer;
begin
if (ClientDataSet1.RecordCount>0) then
begin
id:=ClientDataSet1.fieldbyname('id').AsString;
roomtype:=ClientDataSet1.fieldbyname('roomtype').AsString;
roomnum:=ClientDataSet1.fieldbyname('roomnum').AsString;
LoginForm.ExecuteSQL('delete from roomselect where id='''+id+'''');
LoginForm.ExecuteSQL('select id from roomselect order by id');
LoginForm.dsQuery.First;
while not LoginForm.dsQuery.Eof do
begin
temp:=temp+loginform.dsQuery.Fields[0].AsString+'@';
LoginForm.dsQuery.Next;
end;
LoginForm.dsQuery.Close;
index:=1;
while Pos('@',temp)>0 do
begin
id:=Copy(temp,1,Pos('@',temp)-1);
LoginForm.ExecuteSQL('update roomselect set id='''+inttostr(index)+''' where id='''+id+'''');
Delete(temp,1,Pos('@',temp));
Inc(index);
end;
suiListBox2.Items.Add(roomtype+':'+roomnum);
suiListBox2.Sorted:=true;
end;
ClientDataSet1.Close;
ClientDataSet1.Open;
end;
procedure TYDDJForm.suiListBox2Click(Sender: TObject);
var
roomnum:string;
begin
roomnum:=suiListBox2.Items.Strings[self.suiListBox2.itemindex];
Delete(roomnum,1,Pos(':',roomnum));
self.ClientDataSet2.Close;
self.ClientDataSet2.Open;
self.ClientDataSet2.Filter:='roomnum='''+roomnum+''' and state<>''已入住''';
self.ClientDataSet2.Filtered:=true;
self.suiGroupBox1.Caption:='已预订'+roomnum+'的宾客';
end;
procedure TYDDJForm.suiButton1Click(Sender: TObject);
var
temp:string;
roomtype,roomnum:string;
time1,time2,time3,time4:string;
begin
LoginForm.ExecuteSQL('select roomtype,roomnum from roomselect order by id');
LoginForm.dsQuery.First;
while not LoginForm.dsQuery.Eof do
begin
temp:=temp+loginform.dsQuery.Fields[0].AsString+':'+loginform.dsQuery.Fields[1].AsString+'@';
LoginForm.dsQuery.Next;
end;
LoginForm.dsQuery.Close;
if temp='' then
begin
MessageDlg('当前宾客【'+suiedit1.Text+'】预订单号【'+id+'】尚未选择房间信息!',mtConfirmation, [mbYes], 0);
exit;
end;
time1:=formatdatetime('yyyy-mm-dd',self.dtp1.Date)+' '+self.suiMaskEdit1.Text;
time2:=formatdatetime('yyyy-mm-dd',self.DateTimePicker1.Date)+' '+self.suiMaskEdit2.Text;
time3:=formatdatetime('yyyy-mm-dd',self.DateTimePicker2.Date)+' '+self.suiMaskEdit3.Text;
time4:=formatdatetime('yyyy-mm-dd hh:nn:ss',now);
while Pos('@',temp)>0 do
begin
roomnum:=Copy(temp,1,Pos('@',temp)-1);
roomtype:=Copy(roomnum,1,Pos(':',roomnum)-1);
Delete(roomnum,1,Pos(':',roomnum));
LoginForm.ExecuteSQL('insert into reserve '+
'values('''+id+''','''+cbb1.Text+''','''+suiedit1.Text+''','''+suiedit2.Text+
''','''+roomtype+''','''+roomnum+''',''预订中'+
''','''+time1+''','''+time2+''','''+time3+''','''+time4+''')');
loginform.ExecuteSQL('update room set room_state=''预订'' where room_num='''+roomnum+'''');
Delete(temp,1,Pos('@',temp));
end;
loginform.ExecuteSQL('insert into log '+
'values('''+time4+''','''+loginform.userid+''','''+LoginForm.username+
''',''宾客【'+suiedit1.Text+'】预订成功,预订单号【'+id+'】'')');
MessageDlg('当前宾客【'+suiedit1.Text+'】预订成功,预订单号【'+id+'】!',mtConfirmation, [mbYes], 0);
close;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?