📄 powsetdialog.cpp
字号:
// PowSetDialog.cpp : 实现文件
//
#include "stdafx.h"
#include "SaleManager.h"
#include "PowSetDialog.h"
#include ".\powsetdialog.h"
// CPowSetDialog 对话框
IMPLEMENT_DYNAMIC(CPowSetDialog, CDialog)
CPowSetDialog::CPowSetDialog(CWnd* pParent /*=NULL*/)
: CDialog(CPowSetDialog::IDD, pParent), m_FlagAdd(FALSE),
m_FlagModify(FALSE), m_FlagDel(FALSE)
{
}
CPowSetDialog::~CPowSetDialog()
{
}
void CPowSetDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_POWER, m_PowerNameList);
DDX_Control(pDX, IDC_LIST_NOPOWER, m_ManagerPowNotYetList);
DDX_Control(pDX, IDC_LIST_POWERED, m_ManagerPowNameList);
DDX_Control(pDX, IDC_LIST_MODULE, m_ListModule);
DDX_Control(pDX, IDC_LIST_NOMODULE, m_ListNoModule);
}
BEGIN_MESSAGE_MAP(CPowSetDialog, CDialog)
ON_LBN_SELCHANGE(IDC_LIST_POWER, OnLbnSelchangeListPower)
ON_BN_CLICKED(IDC_LEAVE, OnBnClickedLeave)
ON_BN_CLICKED(IDC_BUTTON_ADDPOW, OnBnClickedButtonAddpow)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON_MODIFP, OnBnClickedButtonModifp)
ON_BN_CLICKED(IDC_CANCEL, OnBnClickedCancel)
ON_BN_CLICKED(IDC_BUTTON_DELPOW, OnBnClickedButtonDelpow)
ON_BN_CLICKED(IDC_USER_GIVE, OnBnClickedUserGive)
ON_BN_CLICKED(IDC_USER_RECEDE, OnBnClickedUserRecede)
ON_BN_CLICKED(IDC_USER_ALLGIVE, OnBnClickedUserAllgive)
ON_BN_CLICKED(IDC_USER_ALLRECEDE, OnBnClickedUserAllrecede)
ON_LBN_SELCHANGE(IDC_LIST_MODULE, OnLbnSelchangeListModule)
ON_BN_CLICKED(IDC_MODULE_RECEDE, OnBnClickedModuleRecede)
ON_BN_CLICKED(IDC_MODULE_GIVE, OnBnClickedModuleGive)
ON_BN_CLICKED(IDC_MODULE_ALLGIVE, OnBnClickedModuleAllgive)
ON_BN_CLICKED(IDC_MODULE_ALLRECEDE, OnBnClickedModuleAllrecede)
END_MESSAGE_MAP()
// CPowSetDialog 消息处理程序
BOOL CPowSetDialog::OnInitDialog()
{
CDialog::OnInitDialog();
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionString = "File Name=SaleManagerdata.udl";
m_pConnection->ConnectionTimeout = 20;
hr = m_pConnection->Open("","","",adConnectUnspecified);
if(FAILED(hr))
{
AfxMessageBox("打开失败");
return TRUE;
}
}
else
{
AfxMessageBox("创建连接实例失败!");
return TRUE;
}
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
return TRUE;
}
InitPowNameList();
ControlCanNotUse();
return TRUE;
}
void CPowSetDialog::ControlCanNotUse()
{
CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->EnableWindow(FALSE);
CButton *pButton = (CButton*)GetDlgItem(IDOK);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_CANCEL);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_USER_GIVE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_USER_RECEDE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_USER_ALLRECEDE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_GIVE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_RECEDE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLGIVE);
pButton->EnableWindow(FALSE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLRECEDE);
pButton->EnableWindow(FALSE);
}
void CPowSetDialog::ControlCanUse()
{
CButton *pButton = (CButton*)GetDlgItem(IDC_USER_GIVE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_USER_RECEDE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_USER_ALLGIVE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_USER_ALLRECEDE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_GIVE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_RECEDE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLGIVE);
pButton->EnableWindow(TRUE);
pButton = (CButton*)GetDlgItem(IDC_MODULE_ALLRECEDE);
pButton->EnableWindow(TRUE);
}
void CPowSetDialog::InitPowNameList()
{
_RecordsetPtr m_pRecordsetP;
HRESULT hrP;
try
{
hrP = m_pRecordsetP.CreateInstance (__uuidof(Recordset));
if(FAILED(hrP))
{
AfxMessageBox (_T("不能创建记录集实例!"));
return;
}
hrP = m_pRecordsetP->Open ("select * from PowerNameTable",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(SUCCEEDED(hrP))
{
_variant_t var;
CString strValue;
while(!m_pRecordsetP->adoEOF)
{
var = m_pRecordsetP->GetCollect ("PowerName");
strValue = (LPCSTR) _bstr_t(var);
if(strValue != _T("超级用户"))
m_PowerNameList.InsertString (-1,strValue);
m_pRecordsetP->MoveNext();
}
m_pRecordsetP->Close();
m_pRecordsetP = NULL;
}
}
catch(_com_error &e)
{
AfxMessageBox (e.ErrorMessage());
}
}
void CPowSetDialog::InitManagerPowNameListList(CString m_tempPowName)
{
_RecordsetPtr m_pRecordsetM;
HRESULT hrM;
try
{
hrM = m_pRecordsetM.CreateInstance (__uuidof(Recordset));
if(FAILED(hrM))
{
AfxMessageBox (_T("不能创建记录集实例!"));
return;
}
CString strSQL;
strSQL.Format("select * from PowerManagerTable where PowerName = '%s'", m_tempPowName);
hrM = m_pRecordsetM->Open (_bstr_t(strSQL),
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(SUCCEEDED(hrM))
{
_variant_t var;
CString strValue;
if(!m_pRecordsetM->adoEOF)
{
var = m_pRecordsetM->GetCollect ("ManagerPowNum");
strValue = (LPCSTR) _bstr_t(var);
_RecordsetPtr m_pRecordsetP;
HRESULT hrP;
hrP = m_pRecordsetP.CreateInstance (__uuidof(Recordset));
if(FAILED(hrP))
{
AfxMessageBox (_T("不能创建记录集实例!"));
return;
}
hrP = m_pRecordsetP->Open ("select * from PowerNameTable",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
int Count = strValue.GetLength();
CString PowerNum;
for(int index = 0; index < Count; index++)
{
PowerNum = "";
PowerNum += strValue[index];
m_pRecordsetP->MoveFirst();
while(!m_pRecordsetP->adoEOF)
{
CString tempPowNum;
var = m_pRecordsetP->GetCollect("PowerNum");
tempPowNum = (LPCSTR)_bstr_t(var);
if(tempPowNum == PowerNum)
break;
m_pRecordsetP->MoveNext();
}
var = m_pRecordsetP->GetCollect("PowerName");
CString tempstrValue;
tempstrValue = (LPCSTR) _bstr_t(var);
m_ManagerPowNameList.InsertString(-1,tempstrValue);
PowerNum.Empty();
}
}
m_pRecordsetM->Close();
m_pRecordsetM = NULL;
}
}
catch(_com_error &e)
{
AfxMessageBox (e.ErrorMessage());
}
}
void CPowSetDialog::OnLbnSelchangeListPower()
{
int Count = m_ManagerPowNameList.GetCount();
for(int index =0; index< Count; index++)
m_ManagerPowNameList.DeleteString(0);
Count = m_ManagerPowNotYetList.GetCount();
for(int index =0; index< Count; index++)
m_ManagerPowNotYetList.DeleteString(0);
CString PowerName;
int Index = m_PowerNameList.GetCurSel();
m_PowerNameList.GetText(Index,PowerName);
InitManagerPowNameListList(PowerName);
InitManagerPowNotYetList(PowerName);
Count = m_ListModule.GetCount();
for(int index = 0; index < Count; index++)
m_ListModule.DeleteString(0);
Count = m_ListNoModule.GetCount();
for(int index = 0; index< Count; index++)
m_ListNoModule.DeleteString(0);
InitManagerModule(PowerName);
InitManagerNotYetModule(PowerName);
}
void CPowSetDialog::InitManagerPowNotYetList(CString m_tempPowName)
{
HRESULT hrM;
_RecordsetPtr m_pRecordsetM;
try
{
hrM = m_pRecordsetM.CreateInstance(__uuidof(Recordset));
if(FAILED(hrM))
{
AfxMessageBox(_T("创建实例失败!"));
return ;
}
CString strSQL;
strSQL.Format ("select * from PowerManagerTable where PowerName = '%s'", m_tempPowName);
hrM = m_pRecordsetM->Open (_bstr_t(strSQL),
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(SUCCEEDED(hrM))
{
CString strValue;
CString ManagerPowNum;
_variant_t var;
if(!m_pRecordsetM->adoEOF)
{
var = m_pRecordsetM->GetCollect ("ManagerPowNum");
if(var.vt != VT_NULL)
ManagerPowNum = (LPCSTR)_bstr_t(var);
_RecordsetPtr m_pRecordsetP;
HRESULT hrP;
hrP = m_pRecordsetP.CreateInstance (__uuidof(Recordset));
if(FAILED(hrP))
{
AfxMessageBox (_T("不能创建记录集实例!"));
return;
}
hrP = m_pRecordsetP->Open ("select * from PowerNameTable",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
if(m_pRecordsetP->adoEOF)
return;
int RecordCount = 0;
while(!m_pRecordsetP->adoEOF)
{
RecordCount++;
m_pRecordsetP->MoveNext();
}
m_pRecordsetP->MoveFirst();
struct FlagPowerNum{
CString PowerNum;
CString PowerName;
bool flag;
};
FlagPowerNum *pFlagPowerNum;
pFlagPowerNum = new FlagPowerNum[RecordCount]; //用来判断哪一个可以插入ListBox,如果是true就可以
//插入
int index = 0;
CString PowerNumtemp;
while(!m_pRecordsetP->adoEOF)
{
var = m_pRecordsetP->GetCollect ("PowerName");
strValue = (LPCSTR) _bstr_t(var);
if(strValue != m_tempPowName)
{
var = m_pRecordsetP->GetCollect ("PowerName");
strValue = (LPCSTR) _bstr_t(var);
pFlagPowerNum[index].PowerName = strValue;
var = m_pRecordsetP->GetCollect ("PowerNum");
strValue = (LPCSTR) _bstr_t(var);
pFlagPowerNum[index].PowerNum = "";
pFlagPowerNum[index].PowerNum += strValue;
pFlagPowerNum[index++].flag = FALSE ;
}
else{
var = m_pRecordsetP->GetCollect("PowerNum");
PowerNumtemp = (LPCSTR)_bstr_t(var);
}
m_pRecordsetP->MoveNext();
}
int Count = ManagerPowNum.GetLength();
CString PowerNum;
for(int index1 = 0; index1 < Count; index1++)
{
PowerNum = "";
PowerNum += ManagerPowNum[index1];
for(int index2 = 0; index2 < RecordCount; index2++)
{
if(PowerNum == pFlagPowerNum[index2].PowerNum)
pFlagPowerNum[index2].flag = TRUE;
}
}
m_pRecordsetM->Close();
hrM = m_pRecordsetM->Open ("select * from PowerManagerTable", //为了将m_pRecordsetM移到第一条记录
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
while(!m_pRecordsetM->adoEOF)
{
var = m_pRecordsetM->GetCollect ("ManagerPowNum");
strValue = (LPCSTR)_bstr_t(var);
var = m_pRecordsetM->GetCollect("PowerName");
CString name = (LPCSTR)_bstr_t(var);
if(name != m_tempPowName)
{
int Count = strValue.GetLength();
for(int index = 0; index< Count; index++)
{
if(strValue[index] == PowerNumtemp[0])
{
var = m_pRecordsetM->GetCollect("PowerName");
strValue = (LPCSTR)_bstr_t(var);
for(int index2 = 0; index2 < RecordCount; index2++)
{
if(pFlagPowerNum[index2].PowerName == strValue)
{
pFlagPowerNum[index2].flag = TRUE;
break;
}
}
break;
}
}//for
}//if
m_pRecordsetM->MoveNext();
}//while
for(int index1 = 0;index1 < RecordCount; index1++)
{
if(pFlagPowerNum[index1].flag == FALSE)
m_ManagerPowNotYetList.InsertString(-1, pFlagPowerNum[index1].PowerName);
}
m_pRecordsetM->Close();
m_pRecordsetP->Close();
delete []pFlagPowerNum;
m_pRecordsetM = NULL;
m_pRecordsetP = NULL;
pFlagPowerNum = NULL;
}//if
}//if
}//try
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -