📄 setreminddlg2.cpp
字号:
// SetRemindDlg2.cpp : 实现文件
//
#include "stdafx.h"
#include "SMS.h"
#include "SetRemindDlg2.h"
// CSetRemindDlg2 对话框
IMPLEMENT_DYNAMIC(CSetRemindDlg2, CDialog)
CSetRemindDlg2::CSetRemindDlg2(CWnd* pParent /*=NULL*/)
: CDialog(CSetRemindDlg2::IDD, pParent)
, m_iRemindAmount(0)
, m_pSet(&theApp.m_db )
, m_sTodayRemind(_T(""))
{
//显示窗口颜色
m_backcolor=m_RGB_BkColor;
m_brush.CreateSolidBrush(m_backcolor);
m_bItemClick=false;
}
CSetRemindDlg2::~CSetRemindDlg2()
{
}
void CSetRemindDlg2::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_SET_REMIND_LIST, m_cRemindListCtrl);
DDX_Text(pDX, IDC_REMIND_AMOUNT_STATIC, m_iRemindAmount);
DDX_Control(pDX, IDC_REMIND_DELETE_BT, m_cDeleteBt);
DDX_Control(pDX, IDC_REMIND_UPDATE_BT, m_cUpdateBt);
DDX_Control(pDX, IDC_REMIND_PRINT_BT, m_cPrintBt);
DDX_Text(pDX, IDC_TODAY_REIMIND_STATIC, m_sTodayRemind);
}
BEGIN_MESSAGE_MAP(CSetRemindDlg2, CDialog)
ON_BN_CLICKED(IDC_REMIND_ALL_BT, &CSetRemindDlg2::OnBnClickedRemindAllBt)
ON_BN_CLICKED(IDC_REMIND_KIND_BT, &CSetRemindDlg2::OnBnClickedRemindKindBt)
ON_BN_CLICKED(IDC_REMIND_ADD_BT, &CSetRemindDlg2::OnBnClickedRemindAddBt)
ON_BN_CLICKED(IDC_REMIND_UPDATE_BT, &CSetRemindDlg2::OnBnClickedRemindUpdateBt)
ON_BN_CLICKED(IDC_REMIND_DELETE_BT, &CSetRemindDlg2::OnBnClickedRemindDeleteBt)
ON_BN_CLICKED(IDC_REMIND_SEARCH_BT, &CSetRemindDlg2::OnBnClickedRemindSearchBt)
ON_WM_QUERYDRAGICON()//打印
ON_BN_CLICKED(IDC_REMIND_PRINT_BT, &CSetRemindDlg2::OnBnClickedRemindPrintBt)
ON_WM_CTLCOLOR()
ON_NOTIFY(HDN_ITEMCLICK, 0, &CSetRemindDlg2::OnHdnItemclickSetRemindList)
ON_WM_CLOSE()
ON_WM_CONTEXTMENU()
ON_WM_TIMER()
ON_COMMAND(ID_REMIND_ALL, &CSetRemindDlg2::OnRemindAll)
ON_COMMAND(ID_REMIND_KIND, &CSetRemindDlg2::OnRemindKind)
ON_COMMAND(ID_REMIND_ADD, &CSetRemindDlg2::OnRemindAdd)
ON_COMMAND(ID_REMIND_UPDATE, &CSetRemindDlg2::OnRemindUpdate)
ON_COMMAND(ID_REMIND_DELETE, &CSetRemindDlg2::OnRemindDelete)
ON_COMMAND(ID_REMIND_SEARCH, &CSetRemindDlg2::OnRemindSearch)
ON_COMMAND(ID_REMIND_PRINT, &CSetRemindDlg2::OnRemindPrint)
ON_UPDATE_COMMAND_UI(ID_REMIND_UPDATE, &CSetRemindDlg2::OnUpdateRemindUpdate )
ON_UPDATE_COMMAND_UI(ID_REMIND_DELETE, &CSetRemindDlg2::OnUpdateRemindDelete )
ON_UPDATE_COMMAND_UI(ID_REMIND_PRINT, &CSetRemindDlg2::OnUpdateRemindPrint )
ON_WM_INITMENUPOPUP()
ON_COMMAND(ID_REMIND_CLOSE, &CSetRemindDlg2::OnRemindClose)
END_MESSAGE_MAP()
// CSetRemindDlg2 消息处理程序
void CSetRemindDlg2::ViewAll()
{
BeginWaitCursor();
CString s;
m_cRemindListCtrl.DeleteAllItems ();
if(m_pSet.IsOpen ())
m_pSet.Close ();
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Remind order by rStartDate");
m_pSet.m_strFilter .Empty ();
int count;
count=m_pSet.GetRecordCount ();
if(count==0)//如果该数据表为空,则不用显示
{
EndWaitCursor();
m_pSet.Close ();
return ;
}
m_pSet.MoveFirst ();
int i=0;
while (!m_pSet.IsEOF ())
{
m_cRemindListCtrl.InsertItem(i,m_pSet.m_rContent ,0);
m_cRemindListCtrl.SetItemText (i,1,FormatDate(m_pSet.m_rStartDate ));
m_cRemindListCtrl.SetItemText (i,2,FormatDate(m_pSet.m_rEndDate ));
s.Format (L"%d",m_pSet.m_rFrequency );
m_cRemindListCtrl.SetItemText (i,3,s);
if(m_pSet.m_rFinished ==true)
m_cRemindListCtrl.SetItemText (i,4,L"是");
else
m_cRemindListCtrl.SetItemText (i,4,L"否");
m_cRemindListCtrl.SetItemText (i,5,m_pSet.m_rKind );
m_cRemindListCtrl.SetItemText (i,6,m_pSet.m_rRemark );
s.Format (L"%d",m_pSet.m_rId );
m_cRemindListCtrl.SetItemText (i,7,s);
i++;
m_pSet.MoveNext ();
}
m_pSet.Close ();
//现在在右边显示个数
m_iRemindAmount=i;
s.Format (L"%d",m_iRemindAmount);
SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
EndWaitCursor();
}
void CSetRemindDlg2::OnBnClickedRemindAllBt()
{
// TODO: 在此添加控件通知处理程序代码
ViewAll();
}
void CSetRemindDlg2::Kind ()
{
CString s;
int i=0;
CSetRemindKindDlg dlg;
if(dlg.DoModal ()==IDOK)
{
BeginWaitCursor();
if(m_pSet.IsOpen ())
m_pSet.Close ();
CString str;
str="Select * from Remind where rKind='";
str+=dlg.m_sKind ;
str+="' order by rStartDate";
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
m_pSet.m_strFilter .Empty ();
m_pSet.Requery ();
if(m_pSet.IsEOF ())
{
m_iRemindAmount=i;
s.Format (L"%d",m_iRemindAmount);
SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
else
{
m_cRemindListCtrl.DeleteAllItems ();
if(m_pSet.GetRecordCount ()==0)
{
m_pSet.Close ();
EndWaitCursor();
return ;
}
m_pSet.MoveFirst ();
while (!m_pSet.IsEOF ())
{
m_cRemindListCtrl.InsertItem(i,m_pSet.m_rContent ,0);
m_cRemindListCtrl.SetItemText (i,1,FormatDate(m_pSet.m_rStartDate ));
m_cRemindListCtrl.SetItemText (i,2,FormatDate(m_pSet.m_rEndDate ));
s.Format (L"%d",m_pSet.m_rFrequency );
m_cRemindListCtrl.SetItemText (i,3,s);
if(m_pSet.m_rFinished ==true)
m_cRemindListCtrl.SetItemText (i,4,L"是");
else
m_cRemindListCtrl.SetItemText (i,4,L"否");
m_cRemindListCtrl.SetItemText (i,5,m_pSet.m_rKind );
m_cRemindListCtrl.SetItemText (i,6,m_pSet.m_rRemark );
s.Format (L"%d",m_pSet.m_rId );
m_cRemindListCtrl.SetItemText (i,7,s);
i++;
m_pSet.MoveNext ();
}
m_pSet.Close ();
//现在在右边显示个数
m_iRemindAmount=i;
s.Format (L"%d",m_iRemindAmount);
SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
}
EndWaitCursor();
}
}
void CSetRemindDlg2::OnBnClickedRemindKindBt()
{
// TODO: 在此添加控件通知处理程序代码
Kind();
}
void CSetRemindDlg2::Add()
{
CString s;
CSetRemindAddDlg dlg;
if(dlg.DoModal ()==IDOK)
{
if(!theApp.m_db.CanTransact ())
{
//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
MessageBox(L"\n系统不支持事务处理,添加不成功!\n",L"错误", MB_ICONSTOP);
return ;
}
theApp.m_db.BeginTrans ();//开始事务处理
TRY
{
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Remind order by rStartDate");
m_pSet.m_strFilter.Empty ();
m_pSet.AddNew ();
m_pSet.m_rContent =dlg.m_sContent ;
m_pSet.m_rStartDate =dlg.m_tStartDate ;
m_pSet.m_rEndDate =dlg.m_tEndDate ;
m_pSet.m_rFrequency =dlg.m_iFrequency ;
m_pSet.m_rFinished =false;
m_pSet.m_rKind =dlg.m_sKind ;
m_pSet.m_rRemark =dlg.m_sRemark ;
m_pSet.Update ();
m_pSet.MoveLast ();
m_pSet.Close ();
theApp.m_db.CommitTrans ();//添加成功了
}
CATCH_ALL(e)
{
theApp.m_db.Rollback ();
MessageBox(L"\n事务处理出错,添加失败!\n",L"错误", MB_ICONSTOP);
return;
}
END_CATCH_ALL
//添加成功了,就要在列表中显示出来
m_cRemindListCtrl.InsertItem(0,dlg.m_sContent ,0);
m_cRemindListCtrl.SetItemText (0,1,FormatDate(dlg.m_tStartDate ));
m_cRemindListCtrl.SetItemText (0,2,FormatDate(dlg.m_tEndDate ));
s.Format (L"%d",dlg.m_iFrequency );
m_cRemindListCtrl.SetItemText (0,3,s);
m_cRemindListCtrl.SetItemText (0,4,L"否");
m_cRemindListCtrl.SetItemText (0,5,dlg.m_sKind );
m_cRemindListCtrl.SetItemText (0,6,dlg.m_sRemark );
s.Format (L"%d",m_pSet.m_rId );
m_cRemindListCtrl.SetItemText (0,7,s);
//然后再在个数中加一,显示给用户
m_iRemindAmount++;
s.Format (L"%d",m_iRemindAmount);
SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
}
}
void CSetRemindDlg2::OnBnClickedRemindAddBt()
{
// TODO: 在此添加控件通知处理程序代码
Add();
}
void CSetRemindDlg2::Update ()
{
CString s;
POSITION pos = m_cRemindListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MessageBox(L"你没有选择要修改的名言\n请在列表中选择要修改的名言!",L"提示",MB_ICONEXCLAMATION);
return ;//没有选择表项则不用做下面的事情
}
else
{
if(!theApp.m_db.CanTransact ())
{
//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
MessageBox(L"\n系统不支持事务处理,修改不成功!\n",L"错误", MB_ICONSTOP);
return ;
}
int nItem = m_cRemindListCtrl.GetNextSelectedItem(pos);//列表中的项目序号也即数据库中的编号
//下面获取该表项的数据,用于在修改对话框中显示
int Id=_ttol(m_cRemindListCtrl.GetItemText (nItem,7));
if(m_pSet.IsOpen ())
m_pSet.Close ();
m_pSet.Open ();
m_pSet.m_strFilter .Empty ();
m_pSet.MoveFirst ();
while(!m_pSet.IsEOF ())
{
if(m_pSet.m_rId ==Id)//说明找到了相应的那个字段
{
m_sSetRemind_Content=m_pSet.m_rContent;
m_tSetRemind_StartDate=m_pSet.m_rStartDate ;
m_tSetRemind_EndDate=m_pSet.m_rEndDate ;
m_iSetRemind_Frequency=m_pSet.m_rFrequency ;
m_bSetRemind_Finished=m_pSet.m_rFinished ;
m_sSetRemind_Kind=m_pSet.m_rKind ;
m_sSetRemind_Remark=m_pSet.m_rRemark ;
m_iSetRemind_Id=m_pSet.m_rId ;
}
m_pSet.MoveNext ();
}
if(m_pSet.IsOpen ())
m_pSet.Close ();
//下面弹出修改对话框,初始化数据由上面部分提供
CSetRemindUpdateDlg dlg;
if(dlg.DoModal ()!=IDOK)
{
return ;//万一用户没有输入正确信息,则退出,不给修改
}
theApp.m_db.BeginTrans ();//开始事务处理
TRY
{
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Remind order by rStartDate");
m_pSet.m_strFilter.Empty ();
m_pSet.MoveFirst ();//刚开始移动到第一个位置
while(!m_pSet.IsEOF ())
{
if(m_pSet.m_rId ==m_iSetRemind_Id)
{
m_pSet.Edit ();
m_pSet.m_rContent =dlg.m_sContent ;
m_pSet.m_rStartDate =dlg.m_tStartDate ;
m_pSet.m_rEndDate =dlg.m_tEndDate ;
m_pSet.m_rFrequency =dlg.m_iFrequency ;
m_pSet.m_rFinished =!dlg.m_bFinished ;
m_pSet.m_rKind =dlg.m_sKind ;
m_pSet.m_rRemark =dlg.m_sRemark ;
m_pSet.Update ();
m_pSet.Requery ();
m_pSet.MoveNext ();
break;
}
m_pSet.MoveNext ();
}
m_pSet.Close ();
theApp.m_db.CommitTrans ();//修改成功了
}
CATCH_ALL(e)
{
theApp.m_db.Rollback ();
MessageBox(L"\n事务处理出错,修改失败!\n",L"错误", MB_ICONSTOP);
return;
}
END_CATCH_ALL
//修改成功了,就要把新的在列表中显示出来,同时去掉旧的
//先去掉旧的
m_cRemindListCtrl.DeleteItem (nItem);
//再添加新的
m_cRemindListCtrl.InsertItem(nItem,dlg.m_sContent ,0);
m_cRemindListCtrl.SetItemText (nItem,1,FormatDate(dlg.m_tStartDate ));
m_cRemindListCtrl.SetItemText (nItem,2,FormatDate(dlg.m_tEndDate ));
s.Format (L"%d",dlg.m_iFrequency );
m_cRemindListCtrl.SetItemText (nItem,3,s);
if(dlg.m_bFinished ==false)
m_cRemindListCtrl.SetItemText (nItem,4,L"是");
else
m_cRemindListCtrl.SetItemText (nItem,4,L"否");
m_cRemindListCtrl.SetItemText (nItem,5,dlg.m_sKind );
m_cRemindListCtrl.SetItemText (nItem,6,dlg.m_sRemark );
s.Format (L"%d",m_iSetRemind_Id );
m_cRemindListCtrl.SetItemText (nItem,7,s);
}
}
void CSetRemindDlg2::OnBnClickedRemindUpdateBt()
{
// TODO: 在此添加控件通知处理程序代码
Update();
}
void CSetRemindDlg2::Delete ()
{
POSITION pos = m_cRemindListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MessageBox(L"\n你没有选中任何一个提醒,不可以删除!\n",L"提醒");
}
else
{
if(MessageBox(L"\n此操作将永久删除该项,确定吗?\n",L"删除提醒",MB_OKCANCEL|MB_ICONQUESTION|MB_DEFBUTTON2)==IDCANCEL)
return ;
while (pos)
{
int nItem = m_cRemindListCtrl.GetNextSelectedItem(pos);
CString str;
str="Select * from Remind order by rStartDate";
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
//获取该单词
int m_iId;
m_iId=_ttol(m_cRemindListCtrl.GetItemText (nItem,7));
m_pSet.m_strFilter.Empty ();
m_pSet.MoveFirst ();//刚开始移动到第一个位置
while(!m_pSet.IsEOF ())
{
if(m_iId ==m_pSet.m_rId )
{
m_pSet.Delete ();
break;
}
m_pSet.MoveNext ();
}
if(!m_pSet.IsDeleted ())
{
MessageBox(L"\n删除失败!\n",L"错误", MB_ICONSTOP);
return ;
}
m_pSet.MoveNext ();
//数据库删除成功后就删除列表了
m_cRemindListCtrl.DeleteItem (nItem);
m_pSet.Close ();
//现在在右边显示个数
m_iRemindAmount--;
CString s;
s.Format (L"%d",m_iRemindAmount);
SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
}
}
}
void CSetRemindDlg2::OnBnClickedRemindDeleteBt()
{
// TODO: 在此添加控件通知处理程序代码
Delete();
}
void CSetRemindDlg2::Search ()
{
int i=0;
CString s;
CString SearchTime;
CString StartDate;
CString EndDate;
CString str;
CSetRemindSearchDlg dlg;
if(dlg.DoModal ()==IDOK)
{
BeginWaitCursor();
m_cRemindListCtrl.DeleteAllItems ();
switch(dlg.m_iItem )
{
case 0:
case 1:
if(m_pSet.IsOpen ())
m_pSet.Close ();
str="Select * from Remind where ";
if(dlg.m_iItem==0)
str+="rContent";
else
str+="rKind";
str+=" like '%";
str+=dlg.m_sKeyWord ;
str+="%' order by rStartDate";
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
m_pSet.m_strFilter .Empty ();
m_pSet.Requery ();
if(m_pSet.IsEOF ())
{
m_iRemindAmount=i;
s.Format (L"%d",m_iRemindAmount);
SetDlgItemText(IDC_REMIND_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
else
{
if(m_pSet.GetRecordCount ()==0)
{
m_pSet.Close ();
EndWaitCursor();
return ;
}
m_pSet.MoveFirst ();
while (!m_pSet.IsEOF ())
{
m_cRemindListCtrl.InsertItem(i,m_pSet.m_rContent ,0);
m_cRemindListCtrl.SetItemText (i,1,FormatDate(m_pSet.m_rStartDate ));
m_cRemindListCtrl.SetItemText (i,2,FormatDate(m_pSet.m_rEndDate ));
s.Format (L"%d",m_pSet.m_rFrequency );
m_cRemindListCtrl.SetItemText (i,3,s);
if(m_pSet.m_rFinished ==true)
m_cRemindListCtrl.SetItemText (i,4,L"是");
else
m_cRemindListCtrl.SetItemText (i,4,L"否");
m_cRemindListCtrl.SetItemText (i,5,m_pSet.m_rKind );
m_cRemindListCtrl.SetItemText (i,6,m_pSet.m_rRemark );
s.Format (L"%d",m_pSet.m_rId );
m_cRemindListCtrl.SetItemText (i,7,s);
i++;
m_pSet.MoveNext ();
}
}
m_pSet.Close ();
break;
case 2:
SearchTime=DateToString(dlg.m_tSearchDate );
if(m_pSet.IsOpen ())
m_pSet.Close ();
m_pSet.Open ();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -