📄 socialisegroupdlg.cpp
字号:
// SocialiseGroupDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "SMS.h"
#include "SocialiseGroupDlg.h"
// CSocialiseGroupDlg 对话框
IMPLEMENT_DYNAMIC(CSocialiseGroupDlg, CDialog)
CSocialiseGroupDlg::CSocialiseGroupDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSocialiseGroupDlg::IDD, pParent)
, m_iGroupAmount(0)
, m_pSet(&theApp.m_db )
{
//显示窗口颜色
m_backcolor=m_RGB_BkColor;
m_brush.CreateSolidBrush(m_backcolor);
m_bItemClick=false;
}
CSocialiseGroupDlg::~CSocialiseGroupDlg()
{
}
void CSocialiseGroupDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_GROUP_AMOUNT_STATIC, m_iGroupAmount);
DDX_Control(pDX, IDC_SOCIALISE_GROUP_LIST, m_cTeamListCtrl);
DDX_Control(pDX, IDC_SOCIALISE_GROUP_DELETE_BT, m_cDeleteBt);
DDX_Control(pDX, IDC_SOCIALISE_GROUP_UPDATE_BT, m_cUpdateBt);
DDX_Control(pDX, IDC_SOCIALISE_GROUP_PRINT_BT, m_cPrintBt);
DDX_Control(pDX, IDC_SOCIALISE_GROUP_MAIN_BT, m_cMainBt);
}
BEGIN_MESSAGE_MAP(CSocialiseGroupDlg, CDialog)
ON_BN_CLICKED(IDC_SOCIALISE_GROUP_ALL_BT, &CSocialiseGroupDlg::OnBnClickedSocialiseGroupAllBt)
ON_BN_CLICKED(IDC_GROUP_KIND_BT, &CSocialiseGroupDlg::OnBnClickedGroupKindBt)
ON_BN_CLICKED(IDC_SOCIALISE_GROUP_MAIN_BT, &CSocialiseGroupDlg::OnBnClickedSocialiseGroupMainBt)
ON_BN_CLICKED(IDC_SOCIALISE_GROUP_ADD_BT, &CSocialiseGroupDlg::OnBnClickedSocialiseGroupAddBt)
ON_BN_CLICKED(IDC_SOCIALISE_GROUP_UPDATE_BT, &CSocialiseGroupDlg::OnBnClickedSocialiseGroupUpdateBt)
ON_BN_CLICKED(IDC_SOCIALISE_GROUP_DELETE_BT, &CSocialiseGroupDlg::OnBnClickedSocialiseGroupDeleteBt)
ON_BN_CLICKED(IDC_SOCIALISE_GROUP_SEARCH_BT, &CSocialiseGroupDlg::OnBnClickedSocialiseGroupSearchBt)
ON_WM_QUERYDRAGICON()//打印
ON_BN_CLICKED(IDC_SOCIALISE_GROUP_PRINT_BT, &CSocialiseGroupDlg::OnBnClickedSocialiseGroupPrintBt)
ON_WM_CTLCOLOR()
ON_NOTIFY(HDN_ITEMCLICK, 0, &CSocialiseGroupDlg::OnHdnItemclickSocialiseGroupList)
ON_WM_CLOSE()
ON_WM_CONTEXTMENU()
ON_WM_TIMER()
ON_COMMAND(ID_GROUP_ALL, &CSocialiseGroupDlg::OnGroupAll)
ON_COMMAND(ID_GROUP_DETAIL, &CSocialiseGroupDlg::OnGroupMain)
ON_COMMAND(ID_GROUP_KIND, &CSocialiseGroupDlg::OnGroupKind)
ON_COMMAND(ID_GROUP_ADD, &CSocialiseGroupDlg::OnGroupAdd)
ON_COMMAND(ID_GROUP_UPDATE, &CSocialiseGroupDlg::OnGroupUpdate)
ON_COMMAND(ID_GROUP_DELETE, &CSocialiseGroupDlg::OnGroupDelete)
ON_COMMAND(ID_GROUP_SEARCH, &CSocialiseGroupDlg::OnGroupSearch)
ON_COMMAND(ID_GROUP_PRINT, &CSocialiseGroupDlg::OnGroupPrint)
ON_UPDATE_COMMAND_UI(ID_GROUP_UPDATE, &CSocialiseGroupDlg::OnUpdateGroupUpdate )
ON_UPDATE_COMMAND_UI(ID_GROUP_DETAIL, &CSocialiseGroupDlg::OnUpdateGroupMain )
ON_UPDATE_COMMAND_UI(ID_GROUP_DELETE, &CSocialiseGroupDlg::OnUpdateGroupDelete )
ON_UPDATE_COMMAND_UI(ID_GROUP_PRINT, &CSocialiseGroupDlg::OnUpdateGroupPrint )
ON_WM_INITMENUPOPUP()
END_MESSAGE_MAP()
// CSocialiseGroupDlg 消息处理程序
void CSocialiseGroupDlg::ViewAll()
{
BeginWaitCursor();
CString s;
m_cTeamListCtrl.DeleteAllItems ();
if(m_pSet.IsOpen ())
m_pSet.Close ();
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Team order by gName");
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_cTeamListCtrl.InsertItem(i,(CString)m_pSet.m_gName ,0);
m_cTeamListCtrl.SetItemText (i,1,(CString)m_pSet.m_gLinkMan );
m_cTeamListCtrl.SetItemText (i,2,(CString)m_pSet.m_gPhone );
m_cTeamListCtrl.SetItemText (i,3,(CString)m_pSet.m_gQQ );
m_cTeamListCtrl.SetItemText (i,4,(CString)m_pSet.m_gEmail );
s.Format (L"%d",m_pSet.m_gId );
m_cTeamListCtrl.SetItemText (i,5,s);
i++;
m_pSet.MoveNext ();
}
m_pSet.Close ();
//现在在右边显示个数
m_iGroupAmount=i;
s.Format (L"%d",m_iGroupAmount);
SetDlgItemText(IDC_GROUP_AMOUNT_STATIC,s);//显示
EndWaitCursor();
}
void CSocialiseGroupDlg::OnBnClickedSocialiseGroupAllBt()
{
// TODO: 在此添加控件通知处理程序代码
ViewAll();
}
void CSocialiseGroupDlg::Kind()
{
CString s;
int i=0;
CSocialiseGroupKindDlg dlg;
if(dlg.DoModal ()==IDOK)
{
BeginWaitCursor();
m_cTeamListCtrl.DeleteAllItems ();
if(m_pSet.IsOpen ())
m_pSet.Close ();
CString str;
str="Select * from Team where gType='";
str+=dlg.m_sKind ;
str+="' order by gName";
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
m_pSet.m_strFilter .Empty ();
m_pSet.Requery ();
if(m_pSet.IsEOF ())
{
m_iGroupAmount=i;
s.Format (L"%d",m_iGroupAmount);
SetDlgItemText(IDC_GROUP_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
else
{
if(m_pSet.GetRecordCount ()==0)
{
m_iGroupAmount=i;
s.Format (L"%d",m_iGroupAmount);
SetDlgItemText(IDC_GROUP_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
m_pSet.MoveFirst ();
while (!m_pSet.IsEOF ())
{
m_cTeamListCtrl.InsertItem(i,(CString)m_pSet.m_gName ,0);
m_cTeamListCtrl.SetItemText (i,1,(CString)m_pSet.m_gLinkMan );
m_cTeamListCtrl.SetItemText (i,2,(CString)m_pSet.m_gPhone );
m_cTeamListCtrl.SetItemText (i,3,(CString)m_pSet.m_gQQ );
m_cTeamListCtrl.SetItemText (i,4,(CString)m_pSet.m_gEmail );
s.Format (L"%d",m_pSet.m_gId );
m_cTeamListCtrl.SetItemText (i,5,s);
m_pSet.MoveNext ();
i++;
}
m_pSet.Close ();
//现在在右边显示个数
if(i==0)
{
m_iGroupAmount=i;
s.Format (L"%d",m_iGroupAmount);
SetDlgItemText(IDC_GROUP_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
m_iGroupAmount=i;
s.Format (L"%d",m_iGroupAmount);
SetDlgItemText(IDC_GROUP_AMOUNT_STATIC,s);//显示
}
EndWaitCursor();
}
}
void CSocialiseGroupDlg::OnBnClickedGroupKindBt()
{
// TODO: 在此添加控件通知处理程序代码
Kind();
}
void CSocialiseGroupDlg::Main()
{
CString s;
POSITION pos = m_cTeamListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MessageBox(L"你没有选择要查看的群体\n请在列表中选择要查看的群体!",L"提示",MB_ICONEXCLAMATION);
return ;//没有选择表项则不用做下面的事情
}
else
{
int nItem = m_cTeamListCtrl.GetNextSelectedItem(pos);//列表中的项目序号也即数据库中的编号
//下面获取该表项的数据,用于在修改对话框中显示
int Id=_ttol(m_cTeamListCtrl.GetItemText (nItem,5));
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_gId ==Id)//说明找到了相应的那个字段
{
m_iSocialiseGroup_Id=m_pSet.m_gId ;
m_sSocialiseGroup_Name=m_pSet.m_gName ;
m_sSocialiseGroup_LinkMan=m_pSet.m_gLinkMan ;
m_sSocialiseGroup_Kind=m_pSet.m_gType ;
m_sSocialiseGroup_Email=m_pSet.m_gEmail ;
m_sSocialiseGroup_Address=m_pSet.m_gAddress ;
m_sSocialiseGroup_Code=m_pSet.m_gCode ;
m_sSocialiseGroup_Phone=m_pSet.m_gPhone ;
m_sSocialiseGroup_Fax=m_pSet.m_gFax ;
m_sSocialiseGroup_QQ=m_pSet.m_gQQ ;
m_sSocialiseGroup_MSN=m_pSet.m_gMSN ;
m_sSocialiseGroup_Web=m_pSet.m_fWeb ;
m_sSocialiseGroup_Remark=m_pSet.m_gRemark ;
break;
}
m_pSet.MoveNext ();
}
m_pSet.Close ();//记得要关闭!
//下面弹出对话框,初始化数据由上面部分提供
CSocialiseGroupDetailDlg dlg;
dlg.DoModal ();
}
}
void CSocialiseGroupDlg::OnBnClickedSocialiseGroupMainBt()
{
// TODO: 在此添加控件通知处理程序代码
Main();
}
void CSocialiseGroupDlg::Add()
{
CString s;
CSocialiseGroupAddDlg 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 Team order by gName");
m_pSet.m_strFilter.Empty ();
m_pSet.AddNew ();
m_pSet.m_gName =dlg.m_sName ;
m_pSet.m_gLinkMan =dlg.m_sLinkMan ;
m_pSet.m_gType =dlg.m_sKind ;
m_pSet.m_gEmail =dlg.m_sEmail ;
m_pSet.m_gAddress =dlg.m_sAddress ;
m_pSet.m_gCode =dlg.m_sCode ;
m_pSet.m_gPhone =dlg.m_sPhone ;
m_pSet.m_gFax =dlg.m_sFax ;
m_pSet.m_gQQ =dlg.m_sQQ ;
m_pSet.m_gMSN =dlg.m_sMSN ;
m_pSet.m_fWeb =dlg.m_sWeb ;
m_pSet.m_gRemark =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_cTeamListCtrl.InsertItem(0,dlg.m_sName ,0);
m_cTeamListCtrl.SetItemText (0,1,dlg.m_sLinkMan );
m_cTeamListCtrl.SetItemText (0,2,dlg.m_sPhone );
m_cTeamListCtrl.SetItemText (0,3,dlg.m_sQQ );
m_cTeamListCtrl.SetItemText (0,4,dlg.m_sEmail );
s.Format (L"%d",m_pSet.m_gId );
m_cTeamListCtrl.SetItemText (0,5,s);
//然后再在个数中加一,显示给用户
m_iGroupAmount++;
s.Format (L"%d",m_iGroupAmount);
SetDlgItemText(IDC_GROUP_AMOUNT_STATIC,s);//显示
}
}
void CSocialiseGroupDlg::OnBnClickedSocialiseGroupAddBt()
{
// TODO: 在此添加控件通知处理程序代码
Add();
}
void CSocialiseGroupDlg::Update()
{
CString s;
POSITION pos = m_cTeamListCtrl.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_cTeamListCtrl.GetNextSelectedItem(pos);//列表中的项目序号也即数据库中的编号
//下面获取该表项的数据,用于在修改对话框中显示
int Id=_ttol(m_cTeamListCtrl.GetItemText (nItem,5));
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_gId ==Id)//说明找到了相应的那个字段
{
m_iSocialiseGroup_Id=m_pSet.m_gId ;
m_sSocialiseGroup_Name=m_pSet.m_gName ;
m_sSocialiseGroup_LinkMan=m_pSet.m_gLinkMan ;
m_sSocialiseGroup_Kind=m_pSet.m_gType ;
m_sSocialiseGroup_Email=m_pSet.m_gEmail ;
m_sSocialiseGroup_Address=m_pSet.m_gAddress ;
m_sSocialiseGroup_Code=m_pSet.m_gCode ;
m_sSocialiseGroup_Phone=m_pSet.m_gPhone ;
m_sSocialiseGroup_Fax=m_pSet.m_gFax ;
m_sSocialiseGroup_QQ=m_pSet.m_gQQ ;
m_sSocialiseGroup_MSN=m_pSet.m_gMSN ;
m_sSocialiseGroup_Web=m_pSet.m_fWeb ;
m_sSocialiseGroup_Remark=m_pSet.m_gRemark ;
break;
}
m_pSet.MoveNext ();
}
m_pSet.Close ();//记得要关闭!
//下面弹出修改对话框,初始化数据由上面部分提供
CSocialiseGroupUpdateDlg dlg;
if(dlg.DoModal ()!=IDOK)
{
return ;//万一用户没有输入正确信息,则退出,不给修改
}
theApp.m_db.BeginTrans ();//开始事务处理
TRY
{
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Team order by gName");
m_pSet.m_strFilter.Empty ();
m_pSet.MoveFirst ();//刚开始移动到第一个位置
while(!m_pSet.IsEOF ())
{
if(m_pSet.m_gId ==m_iSocialiseGroup_Id)
{
m_pSet.Edit ();
m_pSet.m_gName =dlg.m_sName ;
m_pSet.m_gLinkMan =dlg.m_sLinkMan ;
m_pSet.m_gType =dlg.m_sKind ;
m_pSet.m_gEmail =dlg.m_sEmail ;
m_pSet.m_gAddress =dlg.m_sAddress ;
m_pSet.m_gCode =dlg.m_sCode ;
m_pSet.m_gPhone =dlg.m_sPhone ;
m_pSet.m_gFax =dlg.m_sFax ;
m_pSet.m_gQQ =dlg.m_sQQ ;
m_pSet.m_gMSN =dlg.m_sMSN ;
m_pSet.m_fWeb =dlg.m_sWeb ;
m_pSet.m_gRemark =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_cTeamListCtrl.DeleteItem (nItem);
//再添加新的
m_cTeamListCtrl.InsertItem(nItem,dlg.m_sName,0);
m_cTeamListCtrl.SetItemText (nItem,1,dlg.m_sLinkMan );
m_cTeamListCtrl.SetItemText (nItem,2,dlg.m_sPhone );
m_cTeamListCtrl.SetItemText (nItem,3,dlg.m_sQQ );
m_cTeamListCtrl.SetItemText (nItem,4,dlg.m_sEmail );
s.Format (L"%d",m_iSocialiseGroup_Id);
m_cTeamListCtrl.SetItemText (nItem,5,s);
}
}
void CSocialiseGroupDlg::OnBnClickedSocialiseGroupUpdateBt()
{
// TODO: 在此添加控件通知处理程序代码
Update();
}
void CSocialiseGroupDlg::Delete ()
{
POSITION pos = m_cTeamListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MessageBox(L"\n你没有选中任何一个群体,不可以删除!\n",L"提示",MB_ICONEXCLAMATION);
}
else
{
if(MessageBox(L"\n此操作将永久删除该项,确定吗?\n",L"删除提醒",MB_OKCANCEL|MB_ICONQUESTION|MB_DEFBUTTON2)==IDCANCEL)
return ;
while (pos)
{
int nItem = m_cTeamListCtrl.GetNextSelectedItem(pos);
CString str;
str="Select * from Team order by gName";
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
//获取该单词
int m_iId;
m_iId=_ttol(m_cTeamListCtrl.GetItemText (nItem,5));
m_pSet.m_strFilter.Empty ();
m_pSet.MoveFirst ();//刚开始移动到第一个位置
while(!m_pSet.IsEOF ())
{
if(m_iId ==m_pSet.m_gId )
{
m_pSet.Delete ();
break;
}
m_pSet.MoveNext ();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -