📄 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<m_UserLB.GetCount();nRow++)
{
m_UserLB.GetText(nRow, cItem);
if(cItem==m_UserNm)
{
if(bAdd) bRpt=TRUE;
if(bEdit)
{
if(nIdx!=nRow) bRpt=TRUE;
m_UserLB.SetCurSel(nIdx);
}
if(bRpt)
{
AfxMessageBox("用户代码已经存在", MB_OK);
m_EditUsNm.SetFocus();
return bErr;
}
}
}
m_UserLB.SetCurSel(nIdx);
}
m_UserPsd1.TrimLeft();
m_UserPsd1.TrimRight();
m_UserPsd2.TrimLeft();
m_UserPsd2.TrimRight();
if(m_UserPsd1!=m_UserPsd2)
{
AfxMessageBox("两次输入的用户密码不相同。", MB_OK);
m_EditUsPsd1.SetFocus();
return bErr;
}
}
else
{
return bErr;
}
bErr=TRUE;
return bErr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -