📄 ccdlg.cpp
字号:
// RecordsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "cc.h"
#include "ccdlg.h"
#include "LogonDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
extern CCcApp theApp;
CCcDlg::CCcDlg(CWnd* pParent /*=NULL*/): CDialog(CCcDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCcDlg)
m_radio =0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCcDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCcDlg)
DDX_Control(pDX, IDC_LIST, m_list);
DDX_Control(pDX, IDC_RADIO4, m_radio4);
DDX_Radio(pDX, IDC_RADIO4, m_radio);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCcDlg, CDialog)
//{{AFX_MSG_MAP(CCcDlg)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)
ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
ON_COMMAND(ID_MENU_SETFLAG, OnMenuSetflag)
ON_NOTIFY(NM_RCLICK, IDC_LIST, OnRclickList)
ON_COMMAND(ID_MENU_DELETE, OnMenuDelete)
ON_COMMAND(ID_MENU_ADDNEW, OnMenuAddnew)
ON_COMMAND(ID_MENU_MODIFY, OnMenuModify)
ON_BN_CLICKED(IDC_RADIO5, OnRadio4)
ON_BN_CLICKED(IDC_RADIO6, OnRadio4)
ON_COMMAND(ID_MENU_ADMIN, OnMenuAdmin)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCcDlg message handlers
BOOL CCcDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
/*-----------------------------------------------------------*/
m_font1.CreateFont(12, 0,0,0,FW_BOLD, 0,0,0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋体");
/* m_font2.CreateFont(14, 0,0,0,FW_NORMAL, 0,0,0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋体");
*/
m_imagelist.Create(16,16,TRUE,2,2);
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_YES));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_NO));
m_list.SetImageList(&m_imagelist,LVSIL_SMALL);
m_list.SetExtendedStyle(0x21);
// m_list.SetFont(&m_font2);
m_list.GetHeaderCtrl()->SetFont(&m_font1);
m_list.SetBkColor(RGB(247,247,255));
m_list.SetTextColor(RGB(0,0,255));
m_list.SetTextBkColor(RGB(247,247,255));
m_list.InsertColumn(0,"批准",LVCFMT_LEFT,50);
m_list.InsertColumn(1,"姓名",LVCFMT_CENTER,70);
m_list.InsertColumn(2,"学院系别",LVCFMT_CENTER,110);
m_list.InsertColumn(3,"请假理由",LVCFMT_CENTER,200);
m_list.InsertColumn(4,"开始日期",LVCFMT_CENTER,70);
m_list.InsertColumn(5,"结束日期",LVCFMT_CENTER,70);
m_list.InsertColumn(6,"备注",LVCFMT_CENTER,80);
m_radio4.SetCheck(1); //设置显示所有记录的按钮为选中状态。
CLogonDlg dlglogon;
if(dlglogon.DoModal()==IDOK)
{
List("SELECT * FROM Records"); //显示此用户的数据
}
return TRUE;
}
void CCcDlg::List(CString sql) //将SQL语句查询的结果显示在列表框中
{
m_list.DeleteAllItems();
int nItem=0;
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->adoEOF) //如果记录不为空
{
while(!m_pRecordset->adoEOF)
{
if(strcmp((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("YorN"),"Y")==0) //是否批准
nItem=m_list.InsertItem(0xffff,"Y",0);
else
nItem=m_list.InsertItem(0xffff,"N",1);
m_list.SetItemText(nItem,1,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Name"));
m_list.SetItemText(nItem,2,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("College"));
m_list.SetItemText(nItem,3,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Reason"));
m_list.SetItemText(nItem,4,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("date1"));
m_list.SetItemText(nItem,5,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("date2"));
m_list.SetItemText(nItem,6,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Remark"));
m_pRecordset->MoveNext();
}
}
m_pRecordset->Close();
}
catch (_com_error e)
{
CATCH_ERROR;
return;
}
CString strTitle;
strTitle.Format("学生请假管理系统 共有%d条记录",nItem+1);
SetWindowText(strTitle);
}
#include "AddDlg.h"
void CCcDlg::OnButtonAdd() //添加请假记录
{
CAddDlg dlgadd;
dlgadd.m_bAddOrModify=0; //添加记录的标志
dlgadd.DoModal();
}
#include "SearchDlg.h"
void CCcDlg::OnButtonSearch() //查询记录
{
CSearchDlg sd;
sd.DoModal();
}
void CCcDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) //双击list控件的函数
{
POSITION pos = m_list.GetFirstSelectedItemPosition(); //得到当前选中的行
if(pos) //如果选中一行
{
int nItem = m_list.GetNextSelectedItem(pos);
CAddDlg dlgadd;
dlgadd.m_bAddOrModify=1; //修改记录的标志
if(m_list.GetItemText(nItem,0)=="N")
dlgadd.m_bPassed=false;
else
dlgadd.m_bPassed=true;
dlgadd.m_strName=m_list.GetItemText(nItem,1);
dlgadd.m_strCollege =m_list.GetItemText(nItem,2);
dlgadd.m_strReason =m_list.GetItemText(nItem,3);
dlgadd.m_date1 =m_list.GetItemText(nItem,4);
dlgadd.m_date2 =m_list.GetItemText(nItem,5);
dlgadd.m_strRemark =m_list.GetItemText(nItem,6);
dlgadd.DoModal();
}
*pResult = 0;
}
void CCcDlg::OnButtonEdit()
{
POSITION pos = m_list.GetFirstSelectedItemPosition();
if(pos) //如果选中一行
{
int nItem = m_list.GetNextSelectedItem(pos);
CAddDlg dlgadd;
dlgadd.m_bAddOrModify=1; //修改
if(m_list.GetItemText(nItem,0)=="N")
dlgadd.m_bPassed=false;
else
dlgadd.m_bPassed=true;
dlgadd.m_strName=m_list.GetItemText(nItem,1);
dlgadd.m_strCollege =m_list.GetItemText(nItem,2);
dlgadd.m_strReason =m_list.GetItemText(nItem,3);
dlgadd.m_date1 =m_list.GetItemText(nItem,4);
dlgadd.m_date2 =m_list.GetItemText(nItem,5);
dlgadd.m_strRemark =m_list.GetItemText(nItem,6);
dlgadd.DoModal();
}
}
void CCcDlg::OnButtonDel() //删除一条记录
{
try
{
POSITION pos = m_list.GetFirstSelectedItemPosition();
if(pos) //如果选中一行,则生成动态的sql语句
{
if(MessageBox("你确定要删除此记录吗?","警告",MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2)==IDYES)
{
int nItem = m_list.GetNextSelectedItem(pos);
theApp.m_strSQL="DELETE FROM Records WHERE name='"
+m_list.GetItemText(nItem,1)+"' and College='"
+m_list.GetItemText(nItem,2)+"' and Reason='"
+m_list.GetItemText(nItem,3)+"' and date1='"
+m_list.GetItemText(nItem,4)+"' and date2='"
+m_list.GetItemText(nItem,5)+"' and Remark='"
+m_list.GetItemText(nItem,6)+"'";
_variant_t RecordsAffected;
theApp.m_pConnection->Execute((_bstr_t)theApp.m_strSQL,&RecordsAffected,adCmdText); //执行此sql语句
List("SELECT * FROM Records");
}
}
else
AfxMessageBox("请选择一行数据!");
}
catch(_com_error e)
{
CATCH_ERROR;
}
}
//显示三种的状态。
//0:显示所有记录
//1:显示未批准记录
//2:显示已批准记录
void CCcDlg::OnRadio4()
{
UpdateData();
switch(m_radio)
{
case 0:
theApp.m_strSQL="SELECT * FROM Records";
break;
case 1:
theApp.m_strSQL="SELECT * FROM Records WHERE YorN='N'";
break;
case 2:
theApp.m_strSQL="SELECT * FROM Records WHERE YorN='Y'";
break;
}
List(theApp.m_strSQL); //根据上面的动态生成的sql语句列出数据
}
BOOL CCcDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg -> message == WM_KEYDOWN)
{
if(pMsg -> wParam == VK_ESCAPE)
{
SetFocus();
return TRUE;
}
if(pMsg -> wParam == VK_RETURN)
{
SetFocus();
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CCcDlg::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos = m_list.GetFirstSelectedItemPosition(); //得到当前选中的行
if(pos)
{
int nItem = m_list.GetNextSelectedItem(pos);
CPoint pt;
::GetCursorPos(&pt);
COfficeXPMenu m_menu;
m_menu.LoadMenu(IDR_MENU_LIST);
COfficeXPMenu::SetType(TYPE_XP); //设置菜单的风格,(TYPE_XP, TYPE_NORMAL)
COfficeXPMenu *psub = (COfficeXPMenu *)m_menu.GetSubMenu(0);
DWORD dwID =psub->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y ,this);
m_menu.DestroyMenu();
}
*pResult = 0;
}
void CCcDlg::OnMenuSetflag()
{
//暂时没有。。
}
void CCcDlg::OnMenuDelete()
{
this->OnButtonDel();
}
void CCcDlg::OnMenuAddnew()
{
this->OnButtonAdd();
}
void CCcDlg::OnMenuModify()
{
this->OnButtonEdit();
}
void CCcDlg::OnMenuAdmin()
{
//设置管理员的密码。。。
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -