📄 historyfreedlg.cpp
字号:
// HistoryFreeDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Server.h"
#include "HistoryFreeDlg.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHistoryFreeDlg dialog
CHistoryFreeDlg::CHistoryFreeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHistoryFreeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CHistoryFreeDlg)
m_pParent = pParent;
m_nID = CHistoryFreeDlg::IDD;
//}}AFX_DATA_INIT
}
void CHistoryFreeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHistoryFreeDlg)
DDX_Control(pDX, IDC_MONEY_STATIC, m_CtrlMoneyStatic);
DDX_Control(pDX, IDC_COUNT_STATIC, m_CtrlCountStatic);
DDX_Control(pDX, IDC_CONTENT_STATIC, m_CtrlStatic);
DDX_Control(pDX, IDC_START_TIME, m_CtrlStartTime);
DDX_Control(pDX, IDC_START_DATE, m_CtrlStartDate);
DDX_Control(pDX, IDC_END_TIME, m_CtrlEndTime);
DDX_Control(pDX, IDC_END_DATE, m_CtrlEndDate);
DDX_Control(pDX, IDC_FIND_TYPE_COMBO, m_CtrlComboBox);
DDX_Control(pDX, IDC_HISTORY_RECORD_LIST, m_CtrlList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CHistoryFreeDlg, CDialog)
//{{AFX_MSG_MAP(CHistoryFreeDlg)
ON_BN_CLICKED(IDC_FIND_RECORD_BUTTON, OnFindRecordButton)
ON_CBN_SELCHANGE(IDC_FIND_TYPE_COMBO, OnSelchangeFindTypeCombo)
ON_WM_CTLCOLOR()
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_END_DATE, OnDatetimechangeEndDate)
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_START_DATE, OnDatetimechangeStartDate)
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_END_TIME, OnDatetimechangeEndTime)
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_START_TIME, OnDatetimechangeStartTime)
ON_BN_CLICKED(ID_DELETE_RECORD, OnDeleteRecord)
ON_BN_CLICKED(ID_EXIT, OnExit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHistoryFreeDlg message handlers
BOOL CHistoryFreeDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED );
char * ItemName[] ={ "机器名", "上机时间", "上机费用", "附加费用", "会员名称", " 备 注 "};
LV_COLUMN lv;
m_CtrlList.ModifyStyle(NULL, LVS_REPORT);
int nColumnCount = m_CtrlList.GetHeaderCtrl()->GetItemCount();
for (int i=0;i < nColumnCount;i++)
{
m_CtrlList.DeleteColumn(0);
}
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH ;
lv.fmt = LVCFMT_CENTER ;
for (i = 0; i < 6; i++)
{
lv.cx = 5 * m_CtrlList.GetStringWidth(ItemName[i]) / 3;
lv.pszText = ItemName[i];
m_CtrlList.InsertColumn(i, &lv);
}
m_CtrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_CtrlList.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
m_CtrlComboBox.SetCurSel(0);
return TRUE;
}
//查找指定日期时间的记录
void CHistoryFreeDlg::OnFindRecordButton()
{
UpdateData(true);
CDaoHistoryFree m_daoHistoryFree;
int nCount, i, ntemp;
CTime date,time;
CString str;
float fFree = 0;
m_CtrlList.DeleteAllItems();
m_CtrlStartDate.GetTime(date);
m_CtrlStartTime.GetTime(time);
CTime StartTime = CTime(date.GetYear(), date.GetMonth(), date.GetDay(), time.GetHour(), time.GetMinute(), 0);
m_CtrlEndDate.GetTime(date);
m_CtrlEndTime.GetTime(time);
CTime EndTime = CTime(date.GetYear(), date.GetMonth(), date.GetDay(), time.GetHour(), time.GetMinute(), 0);
m_daoHistoryFree.Open();
if (!(m_daoHistoryFree.IsBOF() && m_daoHistoryFree.IsEOF()))
{
m_daoHistoryFree.MoveLast();
nCount = m_daoHistoryFree.GetRecordCount();
m_daoHistoryFree.MoveFirst();
int nIndex = 0;
for(i = 0; i < nCount; i++)
{
if (m_daoHistoryFree.m_StartTime.GetYear() < 1900)
{
m_daoHistoryFree.MoveNext();
continue;
}
time = CTime(m_daoHistoryFree.m_StartTime.GetYear(), m_daoHistoryFree.m_StartTime.GetMonth(), m_daoHistoryFree.m_StartTime.GetDay(), m_daoHistoryFree.m_StartTime.GetHour(), m_daoHistoryFree.m_StartTime.GetMinute(), 0);
if (StartTime <= time && time <= EndTime)
{
switch(m_CtrlComboBox.GetCurSel())
{
case 0: //所有机器
GetDlgItem(IDC_NAME_STATIC)->SetWindowText("所有机器的记录");
m_CtrlList.InsertItem(nIndex, m_daoHistoryFree.m_strName);
str = ConvertString(m_daoHistoryFree.m_CountTime/3600);
str +=":";
ntemp = m_daoHistoryFree.m_CountTime % 3600;
str += ConvertString(ntemp/60);
str +=":";
str += ConvertString(ntemp%60);
m_CtrlList.SetItemText(nIndex, 1, str);
str.Format("%.1f", m_daoHistoryFree.m_Free);
m_CtrlList.SetItemText(nIndex, 2, str);
str.Format("%.1f", m_daoHistoryFree.m_AddtionalFree);
fFree += m_daoHistoryFree.m_Free;
fFree += m_daoHistoryFree.m_AddtionalFree;
m_CtrlList.SetItemText(nIndex, 3, str);
m_CtrlList.SetItemText(nIndex, 4, m_daoHistoryFree.m_CardNum);
m_CtrlList.SetItemText(nIndex, 5, m_daoHistoryFree.m_strBak);
nIndex++;
break;
case 1: //某台机器
if(m_daoHistoryFree.m_strName == m_strComputerName)
{
str = ConvertString(m_daoHistoryFree.m_CountTime/3600);
str +=":";
ntemp = m_daoHistoryFree.m_CountTime % 3600;
str += ConvertString(ntemp/60);
str +=":";
str += ConvertString(ntemp%60);
m_CtrlList.InsertItem(nIndex, str);
str.Format("%.1f", m_daoHistoryFree.m_Free);
m_CtrlList.SetItemText(nIndex, 1, str);
str.Format("%.1f", m_daoHistoryFree.m_AddtionalFree);
fFree += m_daoHistoryFree.m_Free;
fFree += m_daoHistoryFree.m_AddtionalFree;
m_CtrlList.SetItemText(nIndex, 2, str);
m_CtrlList.SetItemText(nIndex, 3, m_daoHistoryFree.m_CardNum);
m_CtrlList.SetItemText(nIndex, 4, m_daoHistoryFree.m_strBak);
nIndex++;
}
break;
case 2: //所有会员
if(m_daoHistoryFree.m_CardNum != "")
{
m_CtrlList.InsertItem(nIndex, m_daoHistoryFree.m_strName);
str = ConvertString(m_daoHistoryFree.m_CountTime/3600);
str +=":";
ntemp = m_daoHistoryFree.m_CountTime % 3600;
str += ConvertString(ntemp/60);
str +=":";
str += ConvertString(ntemp%60);
m_CtrlList.SetItemText(nIndex, 1, str);
str.Format("%.1f", m_daoHistoryFree.m_Free);
m_CtrlList.SetItemText(nIndex, 2, str);
str.Format("%.1f", m_daoHistoryFree.m_AddtionalFree);
fFree += m_daoHistoryFree.m_Free;
fFree += m_daoHistoryFree.m_AddtionalFree;
m_CtrlList.SetItemText(nIndex, 3, str);
m_CtrlList.SetItemText(nIndex, 4, m_daoHistoryFree.m_CardNum);
m_CtrlList.SetItemText(nIndex, 5, m_daoHistoryFree.m_strBak);
nIndex++;
}
break;
case 3: //某个会员
if(m_daoHistoryFree.m_CardNum == m_strLeaguerName)
{
str = ConvertString(m_daoHistoryFree.m_CountTime/3600);
str +=":";
ntemp = m_daoHistoryFree.m_CountTime % 3600;
str += ConvertString(ntemp/60);
str +=":";
str += ConvertString(ntemp%60);
m_CtrlList.InsertItem(nIndex, m_daoHistoryFree.m_strName);
m_CtrlList.SetItemText(nIndex, 1, str);
str.Format("%.1f", m_daoHistoryFree.m_Free);
m_CtrlList.SetItemText(nIndex, 2, str);
str.Format("%.1f", m_daoHistoryFree.m_AddtionalFree);
fFree += m_daoHistoryFree.m_Free;
fFree += m_daoHistoryFree.m_AddtionalFree;
m_CtrlList.SetItemText(nIndex, 3, str);
m_CtrlList.SetItemText(nIndex, 4, m_daoHistoryFree.m_strBak);
nIndex++;
}
break;
}
}
m_daoHistoryFree.MoveNext();
}
str.Format("%d", nIndex);
GetDlgItem(IDC_COUNT_STATIC)->SetWindowText(str);
str.Format("%.1f", fFree);
GetDlgItem(IDC_MONEY_STATIC)->SetWindowText(str);
}
}
CString CHistoryFreeDlg::ConvertString(int ntemp)
{
CString strTemp;
if(ntemp < 10)
{
strTemp.Format("%d",ntemp);
strTemp = "0" + strTemp;
return(strTemp);
}
else
{
strTemp.Format("%2d",ntemp);
return strTemp;
}
}
BOOL CHistoryFreeDlg::Create()
{
return CDialog::Create(m_nID, m_pParent);
}
void CHistoryFreeDlg::PostNcDestroy()
{
CDialog::PostNcDestroy();
}
void CHistoryFreeDlg::OnSelchangeFindTypeCombo()
{
CSelectDlg dlg;
char * ItemName[] ={ "机器名", "上机时间", "上机费用", "附加费用", "会员名称", " 备 注 "};
LV_COLUMN lv;
m_CtrlList.ModifyStyle(NULL, LVS_REPORT);
int nColumnCount = m_CtrlList.GetHeaderCtrl()->GetItemCount();
for (int i=0;i < nColumnCount;i++)
{
m_CtrlList.DeleteColumn(0);
}
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH ;
lv.fmt = LVCFMT_CENTER ;
for (i = 0; i < 6; i++)
{
lv.cx = 5 * m_CtrlList.GetStringWidth(ItemName[i]) / 3;
lv.pszText = ItemName[i];
m_CtrlList.InsertColumn(i, &lv);
}
m_CtrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_CtrlList.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
m_CtrlList.DeleteAllItems();
GetDlgItem(IDC_COUNT_STATIC)->SetWindowText("0");
GetDlgItem(IDC_MONEY_STATIC)->SetWindowText("0.0");
switch(m_CtrlComboBox.GetCurSel())
{
case 0:
GetDlgItem(IDC_NAME_STATIC)->SetWindowText("所有机器的记录");
break;
case 1:
dlg.IsLeaguer = false;
if (dlg.DoModal() == IDOK)
{
UpdateData(true);
this->m_strComputerName = dlg.m_strName;
GetDlgItem(IDC_NAME_STATIC)->SetWindowText("机器名:");
GetDlgItem(IDC_CONTENT_STATIC)->SetWindowText(m_strComputerName);
m_CtrlList.DeleteColumn(0);
}
break;
case 2:
GetDlgItem(IDC_NAME_STATIC)->SetWindowText("所有会员的记录");
break;
case 3:
dlg.IsLeaguer = true;
if (dlg.DoModal() == IDOK)
{
UpdateData(true);
this->m_strLeaguerName = dlg.m_strName;
GetDlgItem(IDC_NAME_STATIC)->SetWindowText("会员名:");
GetDlgItem(IDC_CONTENT_STATIC)->SetWindowText(m_strLeaguerName);
m_CtrlList.DeleteColumn(4);
}
break;
}
}
HBRUSH CHistoryFreeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(m_CtrlStatic.m_hWnd == pWnd->m_hWnd ||
m_CtrlMoneyStatic.m_hWnd == pWnd->m_hWnd ||
m_CtrlCountStatic.m_hWnd == pWnd->m_hWnd)
{
pDC->SetTextColor(RGB(250,0,238));
}
return hbr;
}
void CHistoryFreeDlg::OnDatetimechangeEndDate(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(true);
CTime startdate, enddate;
m_CtrlStartDate.GetTime(startdate);
m_CtrlEndDate.GetTime(enddate);
if(startdate > enddate)
{
m_CtrlEndDate.SetTime(&startdate);
UpdateData(false);
}
*pResult = 0;
}
void CHistoryFreeDlg::OnDatetimechangeStartDate(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(true);
CTime startdate, enddate;
m_CtrlStartDate.GetTime(startdate);
m_CtrlEndDate.GetTime(enddate);
if(startdate > enddate)
{
m_CtrlStartDate.SetTime(&enddate);
UpdateData(false);
}
*pResult = 0;
}
void CHistoryFreeDlg::OnDatetimechangeEndTime(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(true);
CTime startdate, enddate;
m_CtrlStartDate.GetTime(startdate);
m_CtrlEndDate.GetTime(enddate);
if(startdate == enddate)
{
CTime starttime, endtime;
m_CtrlStartTime.GetTime(starttime);
m_CtrlEndTime.GetTime(endtime);
if (starttime > endtime)
{
m_CtrlEndTime.SetTime(&starttime);
UpdateData(false);
}
}
*pResult = 0;
}
void CHistoryFreeDlg::OnDatetimechangeStartTime(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(true);
CTime startdate, enddate;
m_CtrlStartDate.GetTime(startdate);
m_CtrlEndDate.GetTime(enddate);
if(startdate == enddate)
{
CTime starttime, endtime;
m_CtrlStartTime.GetTime(starttime);
m_CtrlEndTime.GetTime(endtime);
if (starttime > endtime)
{
m_CtrlStartTime.SetTime(&endtime);
UpdateData(false);
}
}
*pResult = 0;
}
//删除历史记录
void CHistoryFreeDlg::OnDeleteRecord()
{
if (m_CtrlList.GetItemCount() == 0)
return;
if (MessageBox("真的要删除这些记录库?", "提示信息", MB_YESNO|MB_ICONQUESTION) != IDYES)
return;
UpdateData(true);
CDaoHistoryFree m_daoHistoryFree;
int nCount, i;
CTime date,time;
CString str;
float fFree = 0;
m_CtrlList.DeleteAllItems();
m_CtrlStartDate.GetTime(date);
m_CtrlStartTime.GetTime(time);
CTime StartTime = CTime(date.GetYear(), date.GetMonth(), date.GetDay(), time.GetHour(), time.GetMinute(), 0);
m_CtrlEndDate.GetTime(date);
m_CtrlEndTime.GetTime(time);
CTime EndTime = CTime(date.GetYear(), date.GetMonth(), date.GetDay(), time.GetHour(), time.GetMinute(), 0);
m_daoHistoryFree.Open();
if (!(m_daoHistoryFree.IsBOF() && m_daoHistoryFree.IsEOF()))
{
m_daoHistoryFree.MoveLast();
nCount = m_daoHistoryFree.GetRecordCount();
m_daoHistoryFree.MoveFirst();
int nIndex = 0;
for(i = 0; i < nCount; i++)
{
time = CTime(m_daoHistoryFree.m_StartTime.GetYear(), m_daoHistoryFree.m_StartTime.GetMonth(), m_daoHistoryFree.m_StartTime.GetDay(), m_daoHistoryFree.m_StartTime.GetHour(), m_daoHistoryFree.m_StartTime.GetMinute(), 0);
if (StartTime <= time && time <= EndTime)
{
switch(m_CtrlComboBox.GetCurSel())
{
case 0: //所有机器
m_daoHistoryFree.Delete();
break;
case 1: //某台机器
if(m_daoHistoryFree.m_strName == m_strComputerName)
m_daoHistoryFree.Delete();
break;
case 2: //所有会员
if(m_daoHistoryFree.m_CardNum != "")
m_daoHistoryFree.Delete();
break;
case 3: //某个会员
if(m_daoHistoryFree.m_CardNum == m_strLeaguerName)
m_daoHistoryFree.Delete();
break;
}
}
m_daoHistoryFree.MoveNext();
}
str.Format("%d", nIndex);
GetDlgItem(IDC_COUNT_STATIC)->SetWindowText("0");
str.Format("%.1f", fFree);
GetDlgItem(IDC_MONEY_STATIC)->SetWindowText("0.0");
}
m_daoHistoryFree.Close();
}
void CHistoryFreeDlg::OnExit()
{
((CMainFrame*)m_pParent)->CloseHistoryFreewindow();
DestroyWindow();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -