?? 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 + -