www.pudn.com > vc524448882244.rar > UserDlg.cpp


// UserDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "stu.h" 
#include "UserDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CUserDlg dialog 
 
 
CUserDlg::CUserDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CUserDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CUserDlg) 
	m_UserNm = _T(""); 
	m_UserPsd1 = _T(""); 
	m_UserPsd2 = _T(""); 
	//}}AFX_DATA_INIT 
} 
 
 
void CUserDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CUserDlg) 
	DDX_Control(pDX, IDC_USERPSD2, m_EditUsPsd2); 
	DDX_Control(pDX, IDC_USERPSD1, m_EditUsPsd1); 
	DDX_Control(pDX, IDC_USERNM, m_EditUsNm); 
	DDX_Control(pDX, IDC_SAVEUSER, m_btnSaveUser); 
	DDX_Control(pDX, IDC_NEWUSER, m_btnNewUser); 
	DDX_Control(pDX, IDC_EDITUSER, m_btnEditUser); 
	DDX_Control(pDX, IDC_DELUSER, m_btnDelUser); 
	DDX_Control(pDX, IDC_CANUSER, m_btnCanUser); 
	DDX_Control(pDX, IDC_USERGRID, m_UserLB); 
	DDX_Text(pDX, IDC_USERNM, m_UserNm); 
	DDX_Text(pDX, IDC_USERPSD1, m_UserPsd1); 
	DDX_Text(pDX, IDC_USERPSD2, m_UserPsd2); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CUserDlg, CDialog) 
	//{{AFX_MSG_MAP(CUserDlg) 
	ON_BN_CLICKED(IDC_EXITUSER, OnExituser) 
	ON_BN_CLICKED(IDC_CANUSER, OnCanuser) 
	ON_BN_CLICKED(IDC_NEWUSER, OnNewuser) 
	ON_BN_CLICKED(IDC_EDITUSER, OnEdituser) 
	ON_BN_CLICKED(IDC_DELUSER, OnDeluser) 
	ON_BN_CLICKED(IDC_SAVEUSER, OnSaveuser) 
	ON_LBN_SELCHANGE(IDC_USERGRID, OnSelchangeUsergrid) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CUserDlg message handlers 
 
BOOL CUserDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
    bAdd=FALSE; 
	bEdit=FALSE; 
 
	if(!rsUser.IsOpen()) rsUser.Open(); 
	if(rsUser.GetRecordCount()>0) 
	{ 
		CString strUser; 
		rsUser.MoveFirst(); 
        do  
		{ 
			rsUser.GetFieldValue("cUser", strUser); 
			m_UserLB.AddString(strUser); 
			rsUser.MoveNext(); 
		} while(! rsUser.IsEOF()); 
		rsUser.MoveLast(); 
		m_UserLB.SetCurSel(rsUser.GetRecordCount()-1); 
		m_UserNm=rsUser.m_cUser; 
		m_UserPsd1=rsUser.m_cPsd; 
		m_UserPsd2=m_UserPsd1; 
		UpdateData(FALSE); 
	} 
	else 
		m_UserLB.ResetContent(); 
  	 
	SetBtnState(); 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CUserDlg::OnNewuser()  
{ 
   bEdit=FALSE; 
   bAdd=TRUE; 
   SetBtnState();    
} 
 
 
void CUserDlg::SetBtnState() 
{ 
	m_EditUsNm.EnableWindow(bAdd || bEdit); 
	m_EditUsPsd1.EnableWindow(bAdd || bEdit); 
	m_EditUsPsd2.EnableWindow(bAdd || bEdit); 
	if(bAdd) 
	{ 
		m_UserNm=_T(""); 
		m_UserPsd1=_T(""); 
        m_UserPsd2=_T(""); 
		UpdateData(FALSE); 
	} 
	if(!rsUser.IsOpen()) rsUser.Open(); 
	if(rsUser.GetRecordCount()<1) 
	{ 
		m_UserLB.ResetContent(); 
		if(bEdit) bEdit=FALSE; 
	} 
	 
	m_btnNewUser.EnableWindow(!(bAdd || bEdit)); 
	m_btnEditUser.EnableWindow((!(bAdd || bEdit)) && rsUser.GetRecordCount()>0); 
	m_btnDelUser.EnableWindow((!(bAdd || bEdit)) && rsUser.GetRecordCount()>0); 
	m_btnSaveUser.EnableWindow((bAdd || bEdit)); 
	m_btnCanUser.EnableWindow((bAdd || bEdit)); 
	if(bAdd || bEdit) m_EditUsNm.SetFocus(); 
} 
 
void CUserDlg::OnEdituser()  
{ 
   bAdd=FALSE; 
   bEdit=TRUE; 
   SetBtnState(); 
} 
 
void CUserDlg::OnDeluser()  
{ 
   if(AfxMessageBox("您确定要删除指定的用户吗?",MB_YESNO)==IDYES) 
   { 
	   int nCurSel; 
	   rsUser.CanUpdate();  
	   nCurSel=m_UserLB.GetCurSel(); 
	   rsUser.Delete(); 
	   m_UserLB.DeleteString(nCurSel); 
	   rsUser.Requery(); 
	   if(rsUser.GetRecordCount()>0) 
	   { 
    	   if(rsUser.GetRecordCount()<=nCurSel) 
	    	   nCurSel=m_UserLB.GetCount()-1; 
	   } 
	   else 
	   { 
		   nCurSel=-1; 
		   m_UserLB.ResetContent(); 
	   } 
	   m_UserLB.SetCurSel(nCurSel); 
	   if(rsUser.GetRecordCount()>0) 
	   { 
		   rsUser.MoveFirst(); 
		   rsUser.Move(nCurSel); 
		   m_UserNm=rsUser.m_cUser; 
		   m_UserPsd1=rsUser.m_cPsd; 
		   m_UserPsd2=m_UserPsd1; 
		   UpdateData(FALSE); 
	   } 
 
	   SetBtnState();	    
   } 
} 
 
void CUserDlg::OnSaveuser()  
{ 
	if(!ValidData()) return; 
 
	if(bAdd) 
		rsUser.AddNew(); 
	if(bEdit)  
		rsUser.Edit(); 
	if(bEdit || bAdd) 
	{ 
		rsUser.m_cUser=m_UserNm; 
		rsUser.m_cPsd=m_UserPsd1; 
		rsUser.Update(); 
		rsUser.Requery(); 
		if(bAdd) 
		{ 
			m_UserLB.AddString(m_UserNm); 
			m_UserLB.SetCurSel(m_UserLB.GetCount()-1); 
		} 
		if(bEdit) 
		{ 
			int nCurIdx; 
			nCurIdx=m_UserLB.GetCurSel(); 
			m_UserLB.DeleteString(nCurIdx); 
			if(nCurIdx>m_UserLB.GetCount()) 
			{ 
				nCurIdx=m_UserLB.GetCount(); 
				m_UserLB.AddString(m_UserNm); 
			} 
			else 
				m_UserLB.InsertString(nCurIdx, m_UserNm); 
			m_UserLB.SetCurSel(nCurIdx); 
		} 
		bAdd=FALSE; 
		bEdit=FALSE; 
		SetBtnState(); 
	} 
} 
 
void CUserDlg::OnExituser()  
{ 
	CDialog::OnOK(); 
} 
 
void CUserDlg::OnCanuser()  
{ 
	bAdd=FALSE; 
	bEdit=FALSE; 
	SetBtnState(); 
	 
} 
 
void CUserDlg::OnSelchangeUsergrid()  
{ 
   if(m_UserLB.GetCurSel()>=0) 
   { 
	   if(rsUser.GetRecordCount()>0) 
	   { 
		   rsUser.MoveFirst(); 
		   rsUser.Move(m_UserLB.GetCurSel()); 
		   if(rsUser.IsEOF()) rsUser.MoveLast(); 
		   m_UserNm=rsUser.m_cUser; 
		   m_UserPsd1=rsUser.m_cPsd; 
		   m_UserPsd2=m_UserPsd1; 
		   UpdateData(FALSE); 
	   } 
   } 
} 
 
BOOL CUserDlg::ValidData() 
{ 
   BOOL bErr=FALSE; 
   if(bEdit || bAdd) 
   { 
	   UpdateData(TRUE); 
	   m_UserNm.TrimLeft(); 
	   m_UserNm.TrimRight(); 
	   if(m_UserNm.GetLength()<1) 
	   { 
		   AfxMessageBox("用户代码不能为空", MB_OK); 
		   m_EditUsNm.SetFocus(); 
		   return bErr; 
	   } 
	   if(m_UserLB.GetCount()>0) 
	   { 
		   int nRow, nIdx; 
		   BOOL bRpt; 
		   bRpt=FALSE; 
		   CString cItem=_T(""); 
		   nIdx=m_UserLB.GetCurSel(); 
		   for(nRow=0;nRow