📄 usersetdialog.cpp
字号:
// UserSetDialog.cpp : 实现文件
//
#include "stdafx.h"
#include "SaleManager.h"
#include "UserSetDialog.h"
#include ".\usersetdialog.h"
// CUserSetDialog 对话框
IMPLEMENT_DYNAMIC(CUserSetDialog, CDialog)
CUserSetDialog::CUserSetDialog(CWnd* pParent /*=NULL*/)
: CDialog(CUserSetDialog::IDD, pParent)
, m_Canuse(0), m_Index(0), m_ErrorMessage(FALSE)
{
}
CUserSetDialog::~CUserSetDialog()
{
}
void CUserSetDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text (pDX, IDC_EDIT_ACCOUNT, m_Account);
DDX_Text (pDX, IDC_EDIT_NAME, m_Name);
DDX_Text (pDX, IDC_EDIT_PASSF, m_PassWord);
DDX_Text (pDX, IDC_EDIT_PASSA, m_PassWordAgain);
DDX_Control (pDX,IDC_USER_LIST, m_UserList);
DDX_Control (pDX, IDC_COMBO_POW, m_Pow);
DDX_Control(pDX, IDC_RADIO_CAN, m_RCanUse);
}
BEGIN_MESSAGE_MAP(CUserSetDialog, CDialog)
ON_BN_CLICKED(IDC_ADD_USER, OnBnClickedAddUser)
ON_BN_CLICKED(IDC_RADIO_CAN, OnBnClickedRadioCan)
ON_BN_CLICKED(IDC_RADIO_NO, OnBnClickedRadioNo)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON_CHANGE, OnBnClickedButtonChange)
ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnBnClickedButtonCancel)
ON_NOTIFY(LVN_HOTTRACK, IDC_USER_LIST, OnLvnHotTrackUserList)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
END_MESSAGE_MAP()
// CUserSetDialog 消息处理程序
BOOL CUserSetDialog::OnInitDialog()
{
CDialog::OnInitDialog();
OnConnection();
m_UserList.InsertColumn (0, _T("帐号"), LVCFMT_LEFT, 80,-1);
m_UserList.InsertColumn (1, _T("姓名"), LVCFMT_LEFT, 80,-1);
m_UserList.InsertColumn (2, _T("级别"), LVCFMT_LEFT, 80,-1);
m_UserList.InsertColumn (3, _T("可用"), LVCFMT_LEFT, 46,-1);
m_UserList.SetExtendedStyle (LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
InitList();
InitComboBox();
CtrlButtonCannotUse();
AddNewUserCanNotUse();
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CUserSetDialog::OnConnection()
{
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
AfxMessageBox(_T("创建连接实例失败!"));
return;
}
m_pConnection->ConnectionString = "File Name=SaleManagerdata.udl";
m_pConnection->ConnectionTimeout = 20;
hr = m_pConnection->Open ("","","",adConnectUnspecified);
if(FAILED(hr))
{
AfxMessageBox("打开失败");
return;
}
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
}
}
void CUserSetDialog::AddNewUserCanNotUse()
{
HRESULT hrPM;
_RecordsetPtr m_pRecordsetPM;
try
{
hrPM = m_pRecordsetPM.CreateInstance (__uuidof(Recordset));
if(FAILED(hrPM))
{
AfxMessageBox (_T("创建实例失败!"));
return;
}
CString strSQL;
strSQL.Format ("select * from PowerManagerTable where PowerName = '%s'", m_PowerName);
hrPM = m_pRecordsetPM->Open (_bstr_t(strSQL),
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(SUCCEEDED(hrPM))
{
_variant_t var;
CString strValue;
if(!m_pRecordsetPM->adoEOF)
{
var = m_pRecordsetPM->GetCollect ("ManagerPowNum");
strValue = (LPCSTR)_bstr_t(var);
var = m_pRecordsetPM->GetCollect ("PowerName");
CString PowerName = (LPCSTR)_bstr_t(var);
if(strValue == "" && PowerName != _T("系统管理员"))
{
CButton *pButton = (CButton*)GetDlgItem(IDC_ADD_USER);
pButton->EnableWindow (FALSE);
}
}
m_pRecordsetPM->Close ();
m_pRecordsetPM = NULL;
}
}//try
catch(_com_error &e)
{
AfxMessageBox (e.ErrorMessage());
return;
}
}
void CUserSetDialog::InitList()
{
_RecordsetPtr m_pRecordsetP; //PowTable
_RecordsetPtr m_pRecordsetL; // LoginTable
_RecordsetPtr m_pRecordsetPN; // PowerNameTable
_RecordsetPtr m_pRecordsetPM; //PowerManagerTable
HRESULT hrP;
HRESULT hrL;
HRESULT hrPN;
HRESULT hrPM;
try
{
hrP = m_pRecordsetP.CreateInstance (__uuidof(Recordset));
hrL = m_pRecordsetL.CreateInstance (__uuidof(Recordset));
hrPN = m_pRecordsetPN.CreateInstance(__uuidof(Recordset));
hrPM = m_pRecordsetPM.CreateInstance(__uuidof(Recordset));
if(FAILED(hrP) || FAILED(hrL) || FAILED(hrPN) || FAILED(hrPM))
{
AfxMessageBox (_T("不能创建记录集实例!"));
return;
}
hrP = m_pRecordsetP->Open ("select * from PowTable",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hrL = m_pRecordsetL->Open ("select * from LoginTable",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hrPN = m_pRecordsetPN->Open ("select * from PowerNameTable",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(SUCCEEDED(hrP) && SUCCEEDED(hrL) && SUCCEEDED(hrPN) && SUCCEEDED(hrPM))
{
_variant_t var;
CString strValue;
BOOL CanUse;
int AccountNum;
CString PowerName;
struct FlagUserSetPower{
CString AccountName;
CString PowerName;
CString RealName;
CString PowerNum;
CString CanUse;
int AccountNum;
BOOL flag;
};
FlagUserSetPower *pFlagUserSetPower;
int Size = 0;
while(!m_pRecordsetP->adoEOF)
{
Size++;
m_pRecordsetP->MoveNext();
}
pFlagUserSetPower = new FlagUserSetPower[Size];
m_Index = 0;
m_pRecordsetP->MoveFirst();
while(!m_pRecordsetP->adoEOF)
{
var = m_pRecordsetP->GetCollect ("AccountNum");
if(var.vt != VT_NULL)
AccountNum = (int)_variant_t(var);
pFlagUserSetPower[m_Index].AccountNum = AccountNum;
m_pRecordsetL->MoveFirst();
while(!m_pRecordsetL->adoEOF)
{
int tempAccountNum ;
var = m_pRecordsetL->GetCollect ("AccountNum");
if(var.vt != VT_NULL)
tempAccountNum = (int)_variant_t(var);
if(tempAccountNum == AccountNum)
{
var = m_pRecordsetL->GetCollect ("AccountName");
if(var.vt != VT_NULL)
strValue = (LPCSTR) _bstr_t(var);
break;
}
m_pRecordsetL->MoveNext();
}
pFlagUserSetPower[m_Index].AccountName = strValue;
var = m_pRecordsetP->GetCollect ("RealName");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
pFlagUserSetPower[m_Index].RealName = strValue;
var = m_pRecordsetP->GetCollect ("PowerName");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
pFlagUserSetPower[m_Index].PowerName = strValue;
m_pRecordsetPN->MoveFirst();
while(!m_pRecordsetPN->adoEOF)
{
CString tempPowerName;
var = m_pRecordsetPN->GetCollect("PowerName");
tempPowerName = (LPCSTR)_bstr_t(var);
if(tempPowerName == strValue)
{
var = m_pRecordsetPN->GetCollect("PowerNum");
pFlagUserSetPower[m_Index].PowerNum = (LPCSTR)_bstr_t(var);
break;
}
m_pRecordsetPN->MoveNext();
}
var = m_pRecordsetP->GetCollect ("CanUse");
if(var.vt != VT_NULL)
CanUse = (int)_variant_t(var);
if(CanUse)
pFlagUserSetPower[m_Index].CanUse = _T("可用");
else
pFlagUserSetPower[m_Index].CanUse = _T("禁用");
pFlagUserSetPower[m_Index].flag = FALSE;
m_pRecordsetP->MoveNext();
m_Index++;
}
for(m_Index = 0 ; m_Index < Size; m_Index++)
{
if(pFlagUserSetPower[m_Index].AccountNum == m_AccountNum)
{
pFlagUserSetPower[m_Index].flag = TRUE;
break;
}
}
m_pRecordsetL->MoveFirst();
while(!m_pRecordsetL->adoEOF)
{
var = m_pRecordsetL->GetCollect("AccountName");
strValue = (LPCSTR)_bstr_t(var);
if(strValue == m_AccountName)
{
var = m_pRecordsetL->GetCollect("PowerName");
PowerName = (LPCSTR)_bstr_t(var);
break;
}
m_pRecordsetL->MoveNext();
}
CString strSQL;
strSQL.Format("select * from PowerManagerTable where PowerName = '%s'", PowerName);
hrPM = m_pRecordsetPM->Open (_bstr_t(strSQL),
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
var = m_pRecordsetPM->GetCollect("ManagerPowNum");
strValue = (LPCSTR)_bstr_t(var);
int Count = strValue.GetLength();
for(m_Index = 0; m_Index < Count; m_Index ++)
{
for(int index = 0; index < Size; index++)
{
if(strValue[m_Index] == pFlagUserSetPower[index].PowerNum)
pFlagUserSetPower[index].flag = TRUE;
}
}
int index = 0;
for(m_Index = 0; m_Index < Size; m_Index++)
{
if(pFlagUserSetPower[m_Index].flag == TRUE &&
pFlagUserSetPower[m_Index].AccountName != _T("admin") &&
pFlagUserSetPower[m_Index].AccountName != _T("manager"))
{
m_UserList.InsertItem(index, pFlagUserSetPower[m_Index].AccountName);
m_UserList.SetItemText(index, 1, pFlagUserSetPower[m_Index].RealName);
m_UserList.SetItemText(index, 2, pFlagUserSetPower[m_Index].PowerName);
m_UserList.SetItemText(index, 3, pFlagUserSetPower[m_Index].CanUse);
index++;
}
}
m_pRecordsetP->Close();
m_pRecordsetL->Close();
m_pRecordsetPN->Close();
m_pRecordsetPM->Close();
m_pRecordsetP = NULL;
m_pRecordsetL = NULL;
delete []pFlagUserSetPower;
}
}
catch(_com_error &e)
{
AfxMessageBox (e.ErrorMessage());
}
}
void CUserSetDialog::InitComboBox()
{
_RecordsetPtr m_pRecordsetPN;
_RecordsetPtr m_pRecordsetPM;
HRESULT hrPN;
HRESULT hrPM;
try
{
hrPN = m_pRecordsetPN.CreateInstance (__uuidof(Recordset));
hrPM = m_pRecordsetPM.CreateInstance (__uuidof(Recordset));
if(FAILED(hrPN) || FAILED(hrPM))
{
AfxMessageBox (_T("不能创建记录集实例!"));
return;
}
hrPN = m_pRecordsetPN->Open ("select * from PowerNameTable",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
CString strSQL;
strSQL.Format ("select * from PowerManagerTable where PowerName = '%s'", m_PowerName);
hrPM = m_pRecordsetPM->Open (_bstr_t(strSQL),
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(SUCCEEDED(hrPN) && SUCCEEDED(hrPM))
{
_variant_t var;
CString strValue;
CString ManagerPow;
var = m_pRecordsetPM->GetCollect ("ManagerPowNum");
ManagerPow = (LPCSTR)_bstr_t(var);
if(m_PowerName != _T("超级用户") && m_PowerName != _T("系统管理员"))
m_Pow.InsertString (-1,m_PowerName);
if(ManagerPow == "")
return;
int Count = ManagerPow.GetLength ();
for(int index = 0; index < Count; index++)
{
CString num = "";
num += ManagerPow[index];
m_pRecordsetPN->MoveFirst ();
while( !m_pRecordsetPN->adoEOF)
{
var = m_pRecordsetPN->GetCollect ("PowerNum");
strValue = (LPCSTR)_bstr_t(var);
if(strValue == num)
{
var = m_pRecordsetPN->GetCollect ("PowerName");
strValue = (LPCSTR)_bstr_t(var);
m_Pow.InsertString (-1, strValue);
break;
}
m_pRecordsetPN->MoveNext ();
}
}//for
}//if
}
catch(_com_error &e)
{
AfxMessageBox (e.ErrorMessage());
}
}
void CUserSetDialog::CtrlButtonCanUse()//使控件可以使用
{
CEdit *pEdit = (CEdit*) GetDlgItem(IDC_EDIT_ACCOUNT);
pEdit->EnableWindow(TRUE);
pEdit = (CEdit*) GetDlgItem(IDC_EDIT_NAME);
pEdit->EnableWindow(TRUE);
pEdit = (CEdit*) GetDlgItem(IDC_EDIT_PASSF);
pEdit->EnableWindow(TRUE);
pEdit = (CEdit*) GetDlgItem(IDC_EDIT_PASSA);
pEdit->EnableWindow(TRUE);
CButton *pButton = (CButton*)GetDlgItem(IDC_RADIO_CAN);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_RADIO_NO);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDOK);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_BUTTON_CANCEL);
pButton->EnableWindow(TRUE);
m_Pow.EnableWindow(TRUE);
}
void CUserSetDialog::CtrlButtonCannotUse()//使控件不能使用
{
CEdit *pEdit = (CEdit*) GetDlgItem(IDC_EDIT_ACCOUNT);
pEdit->EnableWindow(FALSE);
pEdit = (CEdit*) GetDlgItem(IDC_EDIT_NAME);
pEdit->EnableWindow(FALSE);
pEdit = (CEdit*) GetDlgItem(IDC_EDIT_PASSF);
pEdit->EnableWindow(FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -