//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "RoomStatus.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmRoomStatus *fmRoomStatus;
//---------------------------------------------------------------------------
__fastcall TfmRoomStatus::TfmRoomStatus(TComponent* Owner)
: TForm(Owner)
{
// 默认不可以编辑房态
m_SelectRoom = 0;
m_RoomCode = "";
m_RoomType = "";
}
//---------------------------------------------------------------------------
// 刷新状态图
void __fastcall TfmRoomStatus::btUpdateStatusClick(TObject *Sender)
{
// 清空
for(int i=0; i<100; i++)
for(int j=0; j<100; j++)
szCellCode[i][i] = "";
TQuery* pQueryFloor = new TQuery(NULL);
TQuery* pQueryRoom = new TQuery(NULL);
pQueryFloor->DatabaseName = "db";
pQueryRoom->DatabaseName = "db";
pQueryFloor->SQL->Add("select distinct 楼层编号 from 客房信息");
pQueryFloor->Open();
int nRow = 0;
// 循环楼层,显示不同楼层的客房
while(!pQueryFloor->Eof)
{
nRow ++;
StringGrid1->RowCount = nRow + 1;
AnsiString szFloor;
szFloor = pQueryFloor->FieldByName("楼层编号")->AsString;
StringGrid1->Cells[0][nRow] = szFloor + "/F";
// 对应改楼层所有房间的状态,填入到stringgrid的cell中
// 循环客房,显示同一楼层所有客房
pQueryRoom->SQL->Clear();
AnsiString sql;
sql = "select 客房编号,状态 from 客房信息 where 楼层编号 = '";
sql += szFloor + "'";
if(m_RoomType.Length()>0)
{
sql += " and 类型编号='" + m_RoomType + "'";
}
sql += " order by 客房编号";
pQueryRoom->SQL->Add(sql);
pQueryRoom->Open();
int nCol = 0;
while(!pQueryRoom->Eof)
{
nCol++;
if(StringGrid1->ColCount < nCol + 1)
StringGrid1->ColCount = nCol + 1;
// 设置第一行(列标题)
if(StringGrid1->Cells[nCol][0].IsEmpty())
StringGrid1->Cells[nCol][0] = IntToStr(nCol);
// 记录房间编号
szCellCode[nCol][nRow] = pQueryRoom->FieldByName("客房编号")->AsString;;
// 设置客房的状态
StringGrid1->Cells[nCol][nRow] =
pQueryRoom->FieldByName("状态")->AsString;
// 下一客房
pQueryRoom->Next();
}
for(int i=nCol+1; i< StringGrid1->ColCount; i++)
{
StringGrid1->Cells[i][nRow] = "";
szCellCode[i][nRow] = "";
}
//-------------------------
// 下一楼层
pQueryFloor->Next();
}
if(Visible) StringGrid1->SetFocus();
// 释放空间
delete pQueryFloor;
delete pQueryRoom;
}
//---------------------------------------------------------------------------
void __fastcall TfmRoomStatus::FormShow(TObject *Sender)
{
// 刷新状态图
btUpdateStatusClick(NULL);
}
//---------------------------------------------------------------------------
// 绘制状态图
void __fastcall TfmRoomStatus::StringGrid1DrawCell(TObject *Sender,
int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
// 第一行,列标题,演示如何将文本对中输出
if(ARow == 0)
{
// 将原来的区域填充
StringGrid1->Canvas->FillRect(Rect);
// 重新输出文本,居中对齐
AnsiString szCon = StringGrid1->Cells[ACol][ARow];
// 先获取输出文本宽度
int nTextLen = StringGrid1->Canvas->TextWidth(szCon);
StringGrid1->Canvas->TextRect(Rect, Rect.Left+Rect.Width()/2-nTextLen/2,
Rect.Top+8, szCon );
}
// -------------------------
// 显示状态图形
TImage* pImage = NULL;
// 判断用什么图片显示
if(StringGrid1->Cells[ACol][ARow] == "空房")
pImage = imEmpty;
else if(StringGrid1->Cells[ACol][ARow] == "住房")
pImage = imNoEmpty;
else if(StringGrid1->Cells[ACol][ARow] == "自用")
pImage = imSelf;
else if(StringGrid1->Cells[ACol][ARow] == "维修")
pImage = imMaintain;
else if(StringGrid1->Cells[ACol][ARow] == "将到")
pImage = imArrive;
else if(StringGrid1->Cells[ACol][ARow] == "将离")
pImage = imLeave;
if(pImage) // 存在图片,替换文字输出
{
// 将原来的区域填充
StringGrid1->Canvas->FillRect(Rect);
// 输出图片
StringGrid1->Canvas->Draw(Rect.Left+(Rect.Width()-pImage->Width)/2,
Rect.Top+1, pImage->Picture->Graphic);
// 在图片上再输出客房号
AnsiString szCon = szCellCode[ACol][ARow]; //显示的内容
// 获取输出文本宽度
int nTextLen = StringGrid1->Canvas->TextWidth(szCon);
// 将文本输出设置为透明模式
// 保留原来的模式
TBrushStyle style = StringGrid1->Canvas->Brush->Style;
StringGrid1->Canvas->Brush->Style = bsClear;
// 设置字体字号,小字号
// 保留原来字号
int size = StringGrid1->Canvas->Font->Height;
StringGrid1->Canvas->Font->Height = -1;
// 客房编号输出
StringGrid1->Canvas->TextOut(Rect.Left+Rect.Width()/2-nTextLen/2,
Rect.Top+22, szCon );
// 恢复原来的模式
StringGrid1->Canvas->Brush->Style = style;
// 恢复原来字号
StringGrid1->Canvas->Font->Height = size;
}
}
//---------------------------------------------------------------------------
// 选择Cell时,更新选择的房态
void __fastcall TfmRoomStatus::StringGrid1SelectCell(TObject *Sender,
int ACol, int ARow, bool &CanSelect)
{
if(StringGrid1->Cells[ACol][ARow] == "空房")
rbEmpty->Checked = true;
else if(StringGrid1->Cells[ACol][ARow] == "住房")
rbNoEmpty->Checked = true;
else if(StringGrid1->Cells[ACol][ARow] == "自用")
rbSelf->Checked = true;
else if(StringGrid1->Cells[ACol][ARow] == "维修")
rbMaintain->Checked = true;
else if(StringGrid1->Cells[ACol][ARow] == "将到")
rbArrive->Checked = true;
else if(StringGrid1->Cells[ACol][ARow] == "将离")
rbLeave->Checked = true;
m_nCurCol = ACol;
m_nCurRow = ARow;
}
//---------------------------------------------------------------------------
// 更改选择客房的房态
void __fastcall TfmRoomStatus::btSetStatusClick(TObject *Sender)
{
if(szCellCode[m_nCurCol][m_nCurRow].IsEmpty())
{
Application->MessageBox("没有选择客房","提示",MB_OK);
return;
}
TQuery* pQueryRoom = new TQuery(NULL);
pQueryRoom->DatabaseName = "db";
AnsiString szStatus;
if(rbEmpty->Checked)
szStatus = "空房";
else if(rbNoEmpty->Checked)
szStatus = "住房";
else if(rbSelf->Checked)
szStatus = "自用";
else if(rbMaintain->Checked)
szStatus = "维修";
else if(rbArrive->Checked)
szStatus = "将到";
else if(rbLeave->Checked)
szStatus = "将离";
AnsiString sql = "update 客房信息 set 状态='";
sql += szStatus + "' where 客房编号='";
sql += szCellCode[m_nCurCol][m_nCurRow] + "'";
int nCol, nRow;
nCol = m_nCurCol;
nRow = m_nCurRow;
pQueryRoom->SQL->Add(sql);
// 更新
pQueryRoom->ExecSQL();
// 重新刷新房态图
btUpdateStatusClick(NULL);
// 重新定位选择的cell
StringGrid1->Col = nCol;
StringGrid1->Row = nRow;
StringGrid1->SetFocus();
delete pQueryRoom;
}
//---------------------------------------------------------------------------
void __fastcall TfmRoomStatus::StringGrid1DblClick(TObject *Sender)
{
// 双击选择一个客房,返回客房编号
if(m_SelectRoom == 0 && szCellCode[m_nCurCol][m_nCurRow].Length()>0)
{
//只能选择空房!!
if(StringGrid1->Cells[m_nCurCol][m_nCurRow] != "空房")
{
Appli
没有合适的资源?快使用搜索试试~ 我知道了~
jdgl.rar_系统VB
共124个文件
bmp:19个
cpp:11个
obj:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 37 浏览量
2022-09-19
16:31:47
上传
评论
收藏 2.21MB RAR 举报
温馨提示
vb做的小系统,让你了解vb的基本语法。
资源推荐
资源详情
资源评论
收起资源包目录
jdgl.rar_系统VB (124个子文件)
hotelbook.bak 2.08MB
房态之住房.bmp 2KB
房态之自用房.bmp 2KB
房态之将到.bmp 2KB
房态之将离.bmp 2KB
房态之空房.bmp 2KB
房态之维修房.bmp 2KB
删除.bmp 246B
修改.bmp 246B
取消.bmp 246B
保存.bmp 246B
新增.bmp 246B
下记录.bmp 246B
尾记录.bmp 246B
首记录.bmp 246B
计算.bmp 246B
查询选择.bmp 246B
上记录.bmp 246B
搜索.bmp 246B
关闭.bmp 246B
hotel.bpr 8KB
RoomStatus.cpp 8KB
CheckIn.cpp 8KB
PreOrder.cpp 7KB
Parent.cpp 7KB
Main.cpp 4KB
CheckOut.cpp 2KB
CheckSer.cpp 1KB
Room.cpp 1KB
hotel.cpp 1KB
RoomType.cpp 774B
db.cpp 545B
Thumbs.db 30KB
CheckSer.ddp 51B
RoomStatus.ddp 51B
Room.ddp 51B
CheckIn.ddp 51B
Main.ddp 51B
PreOrder.ddp 51B
CheckOut.ddp 51B
Parent.ddp 51B
db.ddp 51B
RoomType.ddp 51B
Parent.dfm 45KB
RoomStatus.dfm 34KB
CheckIn.dfm 17KB
PreOrder.dfm 13KB
CheckOut.dfm 9KB
Room.dfm 6KB
CheckSer.dfm 4KB
Main.dfm 4KB
RoomType.dfm 4KB
db.dfm 345B
hotel.exe 1.25MB
CheckIn.h 3KB
PreOrder.h 3KB
Parent.h 3KB
RoomStatus.h 2KB
Main.h 2KB
Room.h 2KB
CheckSer.h 2KB
CheckOut.h 1KB
RoomType.h 1KB
db.h 840B
hotel.ico 1KB
g78929.jpg 2KB
2008326152740.jpg 1KB
CheckIn.obj 484KB
Main.obj 484KB
PreOrder.obj 469KB
CheckSer.obj 442KB
Room.obj 406KB
CheckOut.obj 386KB
RoomType.obj 381KB
Parent.obj 375KB
RoomStatus.obj 295KB
db.obj 196KB
hotel.obj 16KB
hotel.res 1KB
酒店管理系统.sql 83KB
酒店管理系统实例程序.sql 23KB
hotel.tds 4.13MB
hotel.~bpr 8KB
RoomStatus.~cpp 8KB
CheckIn.~cpp 8KB
PreOrder.~cpp 7KB
Parent.~cpp 7KB
Main.~cpp 4KB
CheckOut.~cpp 2KB
CheckSer.~cpp 1KB
hotel.~cpp 1KB
Room.~cpp 1KB
RoomType.~cpp 774B
db.~cpp 545B
RoomStatus.~ddp 51B
CheckIn.~ddp 51B
RoomType.~ddp 51B
CheckSer.~ddp 51B
PreOrder.~ddp 51B
db.~ddp 51B
共 124 条
- 1
- 2
资源评论
小贝德罗
- 粉丝: 70
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功