📄 ticketdlg.cpp
字号:
// TICKETDLG.cpp : implementation file
//
#include "stdafx.h"
#include "常州旅游管理系统.h"
#include "TICKETDLG.h"
#include "TicketDlgSet.h"
#include "MainFrm.h"
#include "常州旅游管理系统View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// TICKETDLG dialog
TICKETDLG::TICKETDLG(CWnd* pParent /*=NULL*/)
: CDialog(TICKETDLG::IDD, pParent)
{
//{{AFX_DATA_INIT(TICKETDLG)
m_adultprice = _T("");
m_childprice = _T("");
m_jitiprice = _T("");
m_resname = _T("");
m_stuprice = _T("");
m_beizhu = _T("");
m_id = 0;
isAdd=FALSE;
isEdit=FALSE;
//}}AFX_DATA_INIT
}
void TICKETDLG::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(TICKETDLG)
DDX_Control(pDX, IDOK, m_ok);
DDX_Control(pDX, IDC_PRE, m_pre);
DDX_Control(pDX, IDC_NEXT, m_next);
DDX_Control(pDX, IDC_LAST, m_last);
DDX_Control(pDX, IDC_FIRST, m_first);
DDX_Control(pDX, IDC_EDIT, m_edit);
DDX_Control(pDX, IDC_DEL, m_del);
DDX_Control(pDX, IDC_ADD, m_add);
DDX_Text(pDX, IDC_ADULTPRICE, m_adultprice);
DDX_Text(pDX, IDC_CHILDPRICE, m_childprice);
DDX_Text(pDX, IDC_JITIPRICE, m_jitiprice);
DDX_Text(pDX, IDC_RESNAME, m_resname);
DDX_Text(pDX, IDC_STUPRICE, m_stuprice);
DDX_Text(pDX, IDC_BEIZHU, m_beizhu);
DDX_Text(pDX, IDC_ID, m_id);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(TICKETDLG, CDialog)
//{{AFX_MSG_MAP(TICKETDLG)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_PRE, OnPre)
ON_BN_CLICKED(IDC_NEXT, OnNext)
ON_BN_CLICKED(IDC_LAST, OnLast)
ON_BN_CLICKED(IDC_FIRST, OnFirst)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DEL, OnDel)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// TICKETDLG message handlers
BOOL TICKETDLG::OnInitDialog()
{
CDialog::OnInitDialog();
m_database=new CDatabase;
CString strSQL="select * from 票务管理";
m_database->Open("景点管理",FALSE,FALSE,"ODBC;UID=sa;PWD=",TRUE);
m_pSet=new TicketDlgSet(m_database);
m_pSet->Open(CRecordset::snapshot,strSQL);
getdata();
m_pSet->MoveFirst();//第一条记录开始
////////////////////////////////////////
CRect rectsize;
//GetClientRect(rectsize);
CMyApp *pcpp=(CMyApp*)AfxGetApp();
CMainFrame *pfrm=(CMainFrame*)(pcpp->m_pMainWnd);
CMyView* pview=(CMyView*)pfrm->m_splitter.GetPane(0,1);
rectsize=pview->viewrect;
SetWindowPos(NULL,rectsize.Width()/3+46,63,rectsize.Width(),rectsize.Height(),TRUE);
////////////////////////////////////////
///////////////////////////////////////////////////
bool flag;
flag=pcpp->flagapp;
if(!flag)
{
GetDlgItem(IDC_ADD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DEL)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT)->ShowWindow(SW_HIDE);
}
else
{
GetDlgItem(IDC_ADD)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_DEL)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT)->ShowWindow(SW_SHOW);
}
///////////////////////////////////////////////////
//将票务记录设置为不能更改
SetEdit(TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
HBRUSH TICKETDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
pDC->SetTextColor(RGB(0,0,225));
if (nCtlColor != CTLCOLOR_EDIT && nCtlColor != CTLCOLOR_LISTBOX)
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(RGB(128, 184, 223));
return (HBRUSH) B;
}
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Return a different brush if the default is not desired
return hbr;
}
void TICKETDLG::OnPre()
{
m_pSet->MovePrev();
getdata();
SetButtonState();
}
void TICKETDLG::OnNext()
{
m_pSet->MoveNext();
getdata();
SetButtonState();
}
void TICKETDLG::OnLast()
{
m_pSet->MoveLast();
OnNext();
}
void TICKETDLG::OnFirst()
{
m_pSet->MoveFirst();
OnPre();
}
void TICKETDLG::SetButtonState()
{
if(IsFirstRecord())
{
GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
GetDlgItem(IDC_PRE)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);
GetDlgItem(IDC_PRE)->EnableWindow(TRUE);
}
if(IsLastRecord())
{
GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
GetDlgItem(IDC_LAST)->EnableWindow(TRUE);
}
}
BOOL TICKETDLG::IsFirstRecord()
{
if(m_pSet->IsBOF()&&m_pSet->IsEOF())
{
return TRUE;
}
else if(m_pSet->IsBOF())
{
m_pSet->MoveFirst();
return TRUE;
}
else
return FALSE;
}
BOOL TICKETDLG::IsLastRecord()
{
if(m_pSet->IsBOF()&&m_pSet->IsEOF())
{
return TRUE;
}
else if(m_pSet->IsEOF())
{
m_pSet->MoveLast();
return TRUE;
}
else
return FALSE;
}
void TICKETDLG::SetEdit(bool bFlag)
{
CEdit *pedit1=(CEdit*)GetDlgItem(IDC_ID);
pedit1->SetReadOnly(bFlag);
CEdit *pedit2=(CEdit*)GetDlgItem(IDC_RESNAME);
pedit2->SetReadOnly(bFlag);
CEdit *pedit3=(CEdit*)GetDlgItem(IDC_ADULTPRICE);
pedit3->SetReadOnly(bFlag);
CEdit *pedit4=(CEdit*)GetDlgItem(IDC_CHILDPRICE);
pedit4->SetReadOnly(bFlag);
CEdit *pedit5=(CEdit*)GetDlgItem(IDC_STUPRICE);
pedit5->SetReadOnly(bFlag);
CEdit *pedit6=(CEdit*)GetDlgItem(IDC_JITIPRICE);
pedit6->SetReadOnly(bFlag);
CEdit *pedit7=(CEdit*)GetDlgItem(IDC_BEIZHU);
pedit7->SetReadOnly(bFlag);
}
void TICKETDLG::getdata()
{ m_id=m_pSet->m_column1;
m_resname=m_pSet->m_column2;
m_adultprice=m_pSet->m_column3;
m_childprice=m_pSet->m_column4;
m_stuprice=m_pSet->m_column5;
m_jitiprice=m_pSet->m_column6;
UpdateData(FALSE);
}
void TICKETDLG::SetValue()
{
UpdateData(TRUE);
m_pSet->m_column1=m_id;
m_pSet->m_column2=m_resname;
m_pSet->m_column3=m_adultprice;
m_pSet->m_column4=m_childprice;
m_pSet->m_column5=m_stuprice;
m_pSet->m_column6= m_jitiprice;
}
void TICKETDLG::Clear()
{
m_id=0;
m_resname =_T("");
m_adultprice =_T("");
m_childprice =_T("");
m_stuprice =_T("");
m_jitiprice =_T("");
UpdateData(FALSE);
}
void TICKETDLG::SetNavButtonVisible(int isVisible)
{
GetDlgItem(IDC_FIRST)->ShowWindow(isVisible);
GetDlgItem(IDC_PRE)->ShowWindow(isVisible);
GetDlgItem(IDC_NEXT)->ShowWindow(isVisible);
GetDlgItem(IDC_LAST)->ShowWindow(isVisible);
GetDlgItem(IDOK)->ShowWindow(isVisible);
}
void TICKETDLG::SetButtonText(BOOL blSet)
{
if(blSet)
{
GetDlgItem(IDC_EDIT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_ADD)->SetWindowText(_T("确 定"));
GetDlgItem(IDC_DEL)->SetWindowText(_T("取 消"));
}
else
{
GetDlgItem(IDC_EDIT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_ADD)->SetWindowText(_T("添加"));
GetDlgItem(IDC_DEL)->SetWindowText(_T("删除"));
}
}
void TICKETDLG::SetNoRecordBtnState()
{
GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
GetDlgItem(IDC_PRE)->EnableWindow(FALSE);
GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT)->EnableWindow(FALSE);
GetDlgItem(IDC_DEL)->EnableWindow(FALSE);
Clear();
}
void TICKETDLG::OnAdd()
{
if(isAdd||isEdit)
{
try
{ if(!UpdateData(TRUE)) return;
if(m_id==0)
{
MessageBox("[景点编号] 字段不能为零!","注意",MB_ICONINFORMATION|MB_OK);
return;
}
SetValue();
m_pSet->Update();
if(isAdd)
{
m_pSet->Requery();
m_pSet->MoveLast();
}
SetNavButtonVisible(SW_SHOW);
SetButtonText(FALSE);
SetEdit(TRUE);
isAdd=FALSE;
isEdit=FALSE;
getdata();
SetButtonState();
}
catch(CDBException* pEx)
{
pEx->ReportError();
}
}
else
{
if(m_pSet->CanAppend())
{
SetNavButtonVisible(SW_HIDE);
SetButtonText(TRUE);
m_pSet->AddNew();
if(isEmpty())
{
GetDlgItem(IDC_EDIT)->EnableWindow(TRUE);
GetDlgItem(IDC_DEL)->EnableWindow(TRUE);
}
SetEdit(FALSE);
Clear();
isAdd=TRUE;
}
else
{
AfxMessageBox("Can't Append New Record");
}
}
}
void TICKETDLG::OnDel()
{
if(isAdd||isEdit)
{
m_pSet->CancelUpdate();
SetNavButtonVisible(SW_SHOW);
SetButtonText(FALSE);
SetEdit(TRUE);
if(isEmpty())
SetNoRecordBtnState();
else
getdata();
isEdit=FALSE;
isAdd=FALSE;
}
else
if(MessageBox("确定要删除这条记录吗?","删除记录",MB_YESNO|MB_ICONINFORMATION) == IDYES)
{
m_pSet->Delete();
try
{
OnNext();
if(isEmpty())
{
SetNoRecordBtnState();
return;
}
SetButtonState();
getdata();
}
catch(CDBException* pEx)
{
pEx->ReportError();
}
}
}
BOOL TICKETDLG::isEmpty()
{
if(m_pSet->IsBOF() && m_pSet->IsEOF())
{
return TRUE;
}
else
return FALSE;
}
void TICKETDLG::OnEdit()
{
if(m_pSet->CanAppend())
{
SetNavButtonVisible(SW_HIDE);
SetButtonText(TRUE);
SetEdit(FALSE);
m_pSet->Edit();
isEdit=TRUE;
}
else
{
AfxMessageBox("Can't Modify the Record");
}
}
void TICKETDLG::OnOK()
{
new CFaderWnd(this,600);//实现渐隐效果
EndDialog(IDOK);//关闭对话框
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -