?? roomrentview.cpp
字號:
// RoomRentView.cpp : implementation of the CRoomRentView class
//
#include "stdafx.h"
#include "RoomRent.h"
#include "RoomRentDoc.h"
#include "RoomRentView.h"
#include "RoomTypeDLG.h"
#include "RoomDLG.h"
#include "CheckRoomDLG.h"
#include "CheckRemainDLG.h"
#include "BookInDLG.h"
#include "SearchBookInDLG.h"
#include "CheckOutDLG.h"
#include "SearchCheckOutDLG.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHotel_MISView
IMPLEMENT_DYNCREATE(CRoomRentView, CView)
BEGIN_MESSAGE_MAP(CRoomRentView, CView)
//{{AFX_MSG_MAP(CHotel_MISView)
ON_WM_SIZE()
ON_WM_CONTEXTMENU()
ON_COMMAND(ID_MENU_ADDROOMTYPE, OnAddRoomType)
ON_COMMAND(ID_MENU_ALTERROOMTYPE, OnAlterRoomType)
ON_COMMAND(ID_MENU_DELROOMTYPE, OnDelRoomType)
ON_COMMAND(ID_MENU_ADDROOM, OnAddRoom)
ON_COMMAND(ID_MENU_ALTERROOM, OnAlterRoom)
ON_COMMAND(ID_MENU_DELROOM, OnDelRoom)
ON_COMMAND(ID_MENU_CHECKROOM, OnCheckRoom)
ON_COMMAND(ID_MENU_CHECKREMAIN, OnCheckRemain)
ON_COMMAND(ID_MENU_ADDBOOKIN, OnAddBookIn)
ON_COMMAND(ID_MENU_ALTERBOOKIN, OnAlterBookIn)
ON_COMMAND(ID_MENU_SEARCHBOOKIN, OnSearchBookIn)
ON_COMMAND(ID_MENU_ADDCHECKOUT, OnAddCheckOut)
ON_COMMAND(ID_MENU_ALTERCHECKOUT, OnAlterCheckOut)
ON_COMMAND(ID_MENU_SEARCHCHECKOUT, OnSearchCheckOut)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHotel_MISView construction/destruction
CRoomRentView::CRoomRentView()
{
// TODO: add construction code here
m_sCurrentList = "";
}
CRoomRentView::~CRoomRentView()
{
}
BOOL CRoomRentView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CHotel_MISView drawing
void CRoomRentView::OnDraw(CDC* pDC)
{
CRoomRentDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CHotel_MISView diagnostics
#ifdef _DEBUG
void CRoomRentView::AssertValid() const
{
CView::AssertValid();
}
void CRoomRentView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CRoomRentDoc* CRoomRentView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRoomRentDoc)));
return (CRoomRentDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CHotel_MISView message handlers
void CRoomRentView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if (m_ListCtrl)
{
CRect rect;
GetClientRect(rect);
rect.top += 30;
m_ListCtrl.MoveWindow(rect);
}
}
void CRoomRentView::LoadListCtrl()
{
CRect rect;
GetClientRect(rect);
rect.top += 30;
m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT,
rect, this, 1);
m_ListCtrl.SetBkColor(RGB(177, 151, 240));
m_ListCtrl.SetTextColor(RGB(0,0,0));
m_ListCtrl.SetTextBkColor(RGB(177, 151, 240));
m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP);
m_ListCtrl.InsertColumn(0,"Node ID", LVCFMT_LEFT, 250);
m_ListCtrl.InsertColumn(1,"2 ID", LVCFMT_LEFT, 250);
CString str;
for (int i=0; i<100; i++)
{
str.Format("%d", i);
m_ListCtrl.InsertItem(i, str);
}
}
void CRoomRentView::UnLoadListCtrl()
{
m_ListCtrl.DestroyWindow();
}
void CRoomRentView::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
if ( ""==m_sCurrentList ) return;
CMenu menu;
if ( _T("房間標準列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_ROOMTYPE);
else if ( _T("房屋信息列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_ROOM);
else if ( _T("定房信息列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_BOOKIN);
else if ( _T("結算信息列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_CHECKOUT);
CMenu* pMenu=menu.GetSubMenu(0);
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,this);
return;
}
void CRoomRentView::OnAddRoomType()
{
// TODO: Add your command handler code here
CRoomTypeDLG dlg;
dlg.m_bAppend = true;
dlg.DoModal();
}
void CRoomRentView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
// Create a Static ctrl for tip
CRect rect;
rect.left = rect.top =5;
rect.bottom = 30;
rect.right = 120;
m_StaticCtrl.Create(m_sCurrentList, WS_VISIBLE, rect, this, 1);
}
void CRoomRentView::RefreshRoomType()
{
if (m_ListCtrl) m_ListCtrl.DestroyWindow();
CreateRoomType();
m_sCurrentList = _T("房間標準列表");
m_StaticCtrl.SetWindowText(m_sCurrentList);
}
void CRoomRentView::CreateRoomType()
{
//Update m_sCurrentList and Static Ctrl
m_sCurrentList = _T("房間標準列表");
m_StaticCtrl.SetWindowText(m_sCurrentList);
// Get Client Rect
CRect rect;
GetClientRect(rect);
rect.top += 30;
// Create
m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1);
// Set Color
m_ListCtrl.SetBkColor(RGB(177, 151, 240));
m_ListCtrl.SetTextColor(RGB(0,0,0));
m_ListCtrl.SetTextBkColor(RGB(177, 151, 240));
// Set EX-Style
m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP);
// Create Header
m_ListCtrl.InsertColumn(0,_T("標準編號"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(1,_T("標準名稱"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(2,_T("房間面積"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(3,_T("床位數量"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(4,_T("住房單價/每天"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(5,_T("是否有空調"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(6,_T("是否有電話"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(7,_T("是否有電視"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(8,_T("是否有衛生間"), LVCFMT_LEFT, 100);
// Get all records
_variant_t Holder, strQuery;
strQuery = "select * from roomtype order by typeid";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
if ( 0==iCount ) return;
CString str;
theApp.m_pADOSet->MoveFirst();
for(int i=0; i<iCount; i++)
{
// Get typeid
Holder = theApp.m_pADOSet->GetCollect("typeid");
str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
m_ListCtrl.InsertItem(i, str);
// Get typename
Holder = theApp.m_pADOSet->GetCollect("typename");
str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
m_ListCtrl.SetItemText(i, 1, str);
// Get area
Holder = theApp.m_pADOSet->GetCollect("area");
str.Format("%.2f", Holder.dblVal);
m_ListCtrl.SetItemText(i, 2, str);
// Get bednum
Holder = theApp.m_pADOSet->GetCollect("bednum");
str.Format("%d", Holder.vt==VT_NULL?0:Holder.intVal);
m_ListCtrl.SetItemText(i, 3, str);
// Get price
Holder = theApp.m_pADOSet->GetCollect("price");
str.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal);
m_ListCtrl.SetItemText(i, 4, str);
// Get airCondition
Holder = theApp.m_pADOSet->GetCollect("haircondition");
if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("沒有");
m_ListCtrl.SetItemText(i, 5, str);
// Get Phone
Holder = theApp.m_pADOSet->GetCollect("htelephone");
if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("沒有");
m_ListCtrl.SetItemText(i, 6, str);
// Get TV
Holder = theApp.m_pADOSet->GetCollect("htelevision");
if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("沒有");
m_ListCtrl.SetItemText(i, 7, str);
// Get TV
Holder = theApp.m_pADOSet->GetCollect("htoilet");
if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("沒有");
m_ListCtrl.SetItemText(i, 8, str);
theApp.m_pADOSet->MoveNext();
}
}
void CRoomRentView::OnAlterRoomType()
{
// TODO: Add your command handler code here
if ( m_ListCtrl && m_sCurrentList!="房間標準列表" )
{
m_ListCtrl.DestroyWindow();
CreateRoomType();
return;
}
if ( !m_ListCtrl )
{
CreateRoomType();
return;
}
//Popup Alter Dialog
POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL) AfxMessageBox(_T("沒有選中的記錄!"), MB_ICONEXCLAMATION);
else
{
CRoomTypeDLG dlg;
dlg.m_bAppend = false;
CString str;
int iItem = m_ListCtrl.GetNextSelectedItem(pos);
// Get typeid
dlg.m_sTypeID = m_ListCtrl.GetItemText(iItem, 0);
// Get typename
dlg.m_sTypeName = m_ListCtrl.GetItemText(iItem, 1);
// Get area
dlg.m_sArea = m_ListCtrl.GetItemText(iItem, 2);
// Get bednum
dlg.m_sBedNo = m_ListCtrl.GetItemText(iItem, 3);
// Get price
dlg.m_sPrice = m_ListCtrl.GetItemText(iItem, 4);
// Get airCondition
str = m_ListCtrl.GetItemText(iItem, 5);
if ( _T("有")==str ) dlg.m_bAirCon = true;
else dlg.m_bAirCon = false;
// Get Phone
str = m_ListCtrl.GetItemText(iItem, 6);
if ( _T("有")==str ) dlg.m_bTel = true;
else dlg.m_bTel = false;
// Get TV
str = m_ListCtrl.GetItemText(iItem, 7);
if ( _T("有")==str ) dlg.m_bTV = true;
else dlg.m_bTV = false;
// Get TV
str = m_ListCtrl.GetItemText(iItem, 8);
if ( _T("有")==str ) dlg.m_bToilet = true;
else dlg.m_bToilet = false;
dlg.DoModal();
}
}
void CRoomRentView::OnDelRoomType()
{
// TODO: Add your command handler code here
if ( m_ListCtrl && m_sCurrentList!="房間標準列表" )
{
m_ListCtrl.DestroyWindow();
CreateRoomType();
return;
}
if ( !m_ListCtrl )
{
CreateRoomType();
return;
}
// Del Records
POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
if ( pos == NULL )
{
AfxMessageBox(_T("沒有選中的記錄!"), MB_ICONEXCLAMATION);
return;
}
else
{
int iItem;
CString sID;
_variant_t Holder, strQuery;
while (pos)
{
iItem = m_ListCtrl.GetNextSelectedItem(pos);
sID = m_ListCtrl.GetItemText(iItem, 0);
strQuery = "delete from roomtype where typeid='"+sID+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
}
}
// Refresh List
RefreshRoomType();
}
void CRoomRentView::OnAddRoom()
{
// TODO: Add your command handler code here
// Check RooType
_variant_t strQuery, Holder;
strQuery = "select typename from roomtype";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
if ( 0==iCount )
{
AfxMessageBox(_T("請先進行房屋標準設置!"), MB_ICONEXCLAMATION);
return;
}
CRoomDLG dlg;
dlg.m_bAppend = true;
dlg.DoModal();
}
void CRoomRentView::RefreshRoom(_variant_t strQuery)
{
if (m_ListCtrl) m_ListCtrl.DestroyWindow();
CreateRoom( strQuery );
m_sCurrentList = _T("房屋信息列表");
m_StaticCtrl.SetWindowText(m_sCurrentList);
}
void CRoomRentView::CreateRoom(_variant_t strQuery)
{
//Update m_sCurrentList and Static Ctrl
m_sCurrentList = _T("房屋信息列表");
m_StaticCtrl.SetWindowText(m_sCurrentList);
// Get Client Rect
CRect rect;
GetClientRect(rect);
rect.top += 30;
// Create
m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1);
// Set Color
m_ListCtrl.SetBkColor(RGB(177, 151, 240));
m_ListCtrl.SetTextColor(RGB(0,0,0));
m_ListCtrl.SetTextBkColor(RGB(177, 151, 240));
// Set EX-Style
m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP);
// Create Header
m_ListCtrl.InsertColumn(0,_T("房屋編號"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(1,_T("房屋類型"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(2,_T("房屋位置"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(3,_T("房屋單價"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(4,_T("是否被定"), LVCFMT_LEFT, 100);
m_ListCtrl.InsertColumn(5,_T("備注"), LVCFMT_LEFT, 200);
// Get all records
_variant_t Holder;
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
if ( 0==iCount ) return;
CString str;
theApp.m_pADOSet->MoveFirst();
for(int i=0; i<iCount; i++)
{
// Get roomNo
Holder = theApp.m_pADOSet->GetCollect("roomNo");
str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
m_ListCtrl.InsertItem(i, str);
// Get room type
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -