www.pudn.com > PBMS.rar > BookInfoDlg.cpp
// BookInfoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "pbms.h"
#include "BookInfoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBookInfoDlg dialog
CBookInfoDlg::CBookInfoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBookInfoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBookInfoDlg)
m_ckIsLiter = FALSE;
m_borrowTime = 0;
m_szBookNumber = _T("");
m_bookId = 0;
m_szBookName = _T("");
m_reborrowTime = 0;
//}}AFX_DATA_INIT
m_curBookInfo.Id = 0;
IsAddNew = true;
}
void CBookInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBookInfoDlg)
DDX_Control(pDX, IDC_COMBO_LIB, m_comLib);
DDX_Check(pDX, IDC_CHECK_LITER, m_ckIsLiter);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_BORROW, m_borrowTime);
DDX_Text(pDX, IDC_EDIT_BOOKNUMBER, m_szBookNumber);
DDX_Text(pDX, IDC_EDIT_ID, m_bookId);
DDX_Text(pDX, IDC_EDIT_NAME, m_szBookName);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_REB, m_reborrowTime);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBookInfoDlg, CDialog)
//{{AFX_MSG_MAP(CBookInfoDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBookInfoDlg message handlers
BOOL CBookInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//*==============初始化对话框中的控件===============*//
//图书馆列表
for (int i = 0; i < m_libsInfo.GetSize(); i ++)
{
m_comLib.AddString(m_libsInfo.GetAt(i).name);
//绑定数据--ID
m_comLib.SetItemData(i,m_libsInfo.GetAt(i).id);
}
m_comLib.SetCurSel(0);
//***如果没有传入数据,则本对话框功能是 ***//
//***添加书籍,故Id由构造函数初始化为0了***//
//***借书时间为当前时间,ID从Doc变量生成 ***//
if (m_curBookInfo.Id == 0)
{
IsAddNew = true; //打开此对话框是新添书籍
//借书时间
m_borrowTime = m_borrowTime.GetCurrentTime();
//书籍ID
m_bookId = ++ CPBMSDoc::BookID;
//将续借时间控件设置为不可写
CWnd *pWnd = GetDlgItem(IDC_DATETIMEPICKER_REB);
pWnd->EnableWindow(false);
}
else //编辑用户信息
{
DataExchange(&m_curBookInfo,false);
IsAddNew = false; //打开此对话框不是新添书籍,而是编辑书籍
}
//***==============================***//
//*=================================================*//
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBookInfoDlg::OnCancel()
{
//将系统共享ID恢复
if (IsAddNew)
{
CPBMSDoc::BookID --;
}
//
CDialog::OnCancel();
}
/*=========================DataExchange===============================================
说明:
与调用方进行数据交换
参数:
curBook : 书籍信息
save : 读(false),存入数据库(true)
====================================================================================*/
void CBookInfoDlg::DataExchange(PBOOKINFO curbook, bool save)
{
if (!save) //显示数据
{
//书籍ID
m_bookId = curbook->Id ;
//书名
m_szBookName = curbook->name ;
//书号
m_szBookNumber = curbook->bookNumber;
//图书馆
int index;
for(index = 0; index < m_libsInfo.GetSize(); index ++)
{
//获取图书馆在comBox控件中的位置
if (curbook->LibID == m_libsInfo.GetAt(index).id)
{
break;
}
}
m_comLib.SetCurSel(index);
//借书时间
m_borrowTime = CTime(curbook->borrowTime.GetYear(),curbook->borrowTime.GetMonth(),curbook->borrowTime.GetDay(),0,0,0);
//续借时间
if (curbook->reborrowCount == 0)//没有续借过
{
//将续借时间控件设置为不可写
CWnd *pWnd = GetDlgItem(IDC_DATETIMEPICKER_REB);
pWnd->EnableWindow(false);
}
else
{
m_reborrowTime = CTime(curbook->reborrowTime.GetYear(),curbook->reborrowTime.GetMonth(),curbook->reborrowTime.GetDay(),0,0,0);
}
//文学书
m_ckIsLiter = curbook->IsLiterature;
UpdateData(false);
}//end-if(!save)
else //写入数据库---不在这里保存数据,而是在IDOK时处理
{
}//end-else
}
void CBookInfoDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData();
//将书籍信息保存
//ID
m_curBookInfo.Id = m_bookId;
//借书时间
m_curBookInfo.borrowTime.SetDate(m_borrowTime.GetYear(),m_borrowTime.GetMonth(),m_borrowTime.GetDay());
//续借时间
if (!IsAddNew)
{
if (m_reborrowTime.GetYear() != 1970)
{
m_curBookInfo.reborrowTime.SetDate(m_reborrowTime.GetYear(),m_reborrowTime.GetMonth(),m_reborrowTime.GetDay());
}
else
{
m_curBookInfo.reborrowTime.SetStatus(COleDateTime::null);
}
}
//文学书
m_curBookInfo.IsLiterature = m_ckIsLiter;
//图书馆ID
m_curBookInfo.LibID = (int)m_comLib.GetItemData(m_comLib.GetCurSel());
//图书馆名
m_comLib.GetLBText(m_comLib.GetCurSel(),m_curBookInfo.LibName);
//书名
m_curBookInfo.name = m_szBookName;
//书号
m_curBookInfo.bookNumber = m_szBookNumber;
//续借次数
if (IsAddNew)
{
m_curBookInfo.reborrowCount = 0;
}
CDialog::OnOK();
}