⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quanxian.cpp

📁 一个实用的GIS系统的系统维护模块
💻 CPP
字号:
// Quanxian.cpp : implementation file
//

#include "stdafx.h"
#include "yhgl.h"
#include "Quanxian.h"
#include "Quanshu.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define Max 999
extern CYhglApp theApp;
int v[Max];
int x=0;
int y=0;
int qidtemp=0;
CString qnametemp=_T("");
CString qdestemp=_T("");
/////////////////////////////////////////////////////////////////////////////
// CQuanxian dialog


CQuanxian::CQuanxian(CWnd* pParent /*=NULL*/)
	: CDialog(CQuanxian::IDD, pParent)
{
	//{{AFX_DATA_INIT(CQuanxian)
	m_qid = 0;
	m_qname = _T("");
	m_qdes = _T("");
	//}}AFX_DATA_INIT
	m_nCurrentSel = -1;
    Success = FALSE;
	m_bAutoSave = TRUE;
}


void CQuanxian::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQuanxian)
	DDX_Control(pDX, IDC_DEL, m_jian);
	DDX_Control(pDX, IDC_ADD, m_jia);
	DDX_Control(pDX, IDC_LIST2, m_quanlist);
	DDX_Text(pDX, IDC_EDIT1, m_qid);
	DDX_Text(pDX, IDC_EDIT2, m_qname);
	DDX_Text(pDX, IDC_EDIT3, m_qdes);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQuanxian, CDialog)
	//{{AFX_MSG_MAP(CQuanxian)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_BN_CLICKED(IDC_UPDS, OnUpds)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST2, OnItemchangedList2)
	ON_BN_CLICKED(IDC_UPDP, OnUpdp)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQuanxian message handlers

BOOL CQuanxian::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_jian.EnableWindow(FALSE);
	::SendMessage(m_quanlist.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
	//////////为列表控件添加列//////////
	m_quanlist.InsertColumn(0,"权限组ID",LVCFMT_LEFT,60);
	m_quanlist.InsertColumn(1,"名称",LVCFMT_LEFT,100);
	m_quanlist.InsertColumn(2,"说明",LVCFMT_LEFT,80);
	
	//////////读取数据库中的信息添加到列表控件///////////
	int nItem;
	_variant_t vQid,vQname,vQdes,vID;
	try
	{  
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open("SELECT * FROM GroupInfo",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		Success = TRUE;
		while(!m_pRecordset->adoEOF)
		{
		    vID=m_pRecordset->GetCollect("ID");
			vQid = m_pRecordset->GetCollect("RoleGroupID");
	        vQname = m_pRecordset->GetCollect("RoleGroupName");///取得username字段的值
			vQdes=m_pRecordset->GetCollect("Description");
		    v[x]=vQid.lVal;
			nItem=m_quanlist.InsertItem(0xffff,(_bstr_t)vID);
			m_quanlist.SetItem(nItem,0,1,(_bstr_t)vQid,NULL,0,0,0);
			if(vQname.vt != VT_NULL)
		    m_quanlist.SetItem(nItem,1,1,(_bstr_t)vQname,NULL,0,0,0);
		    else 
		      m_quanlist.SetItem(nItem,1,1,_T(""),NULL,0,0,0);
		   if(vQdes.vt != VT_NULL)
              m_quanlist.SetItem(nItem,2,1,(_bstr_t)vQdes,NULL,0,0,0);
		   else
              m_quanlist.SetItem(nItem,2,1,_T(""),NULL,0,0,0);
		      m_pRecordset->MoveNext();
			  x++; 
		}
	}
	catch(_com_error e)///捕捉异常
	{
		AfxMessageBox("读取数据库失败!");///显示错误信息
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}



void CQuanxian::OnOK() 
{
	if(Success)
	{
      m_pRecordset->Close();
	}
	CDialog::OnOK();
}


void CQuanxian::OnAdd() 
{
    UpdateData();
	int k=0;
	while(k<x)
	{
	   if(v[k]==m_qid)
        {
		   y=1;
		   break;
	   }
	   k++;                           
	}
	if(k==x)
	{
		 y=2;
	}
    if(y==2)
	{
		m_pRecordset->AddNew();
		m_nCurrentSel = m_quanlist.InsertItem(0xffff,"");
		Save();///保存数据
		m_quanlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
		m_quanlist.SetHotItem(m_nCurrentSel);
		m_quanlist.SetFocus();
		AfxMessageBox("添加成功!");
		y=0;
	}
	else
		AfxMessageBox("权限组的ID唯一!请再次输入其他的ID");
}

void CQuanxian::OnDel() 
{
    m_bAutoSave = FALSE;
	if(m_nCurrentSel >= 0)
	{
		m_quanlist.DeleteItem(m_nCurrentSel);
		int count = m_quanlist.GetItemCount();
		if(count <= m_nCurrentSel)
			m_nCurrentSel = count-1;
		m_pRecordset->Delete(adAffectCurrent);
		m_pRecordset->MoveNext();
		Load();
		m_quanlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
		m_quanlist.SetFocus();
	}
	m_bAutoSave = TRUE;		
}

void CQuanxian::OnUpds() 
{
    UpdateData();        // 更新对话框数据
	if(m_quanlist.GetItemCount() == 0 || m_qname == "" || m_qdes == ""||m_qid==0)
	{
		AfxMessageBox("有无效信息,请选取需要修改的用户!");
		return;
	}
	else
	{
	      Save();
		  m_pRecordset->Update();
		  if(m_qid==qidtemp&&strcmp(m_qname,qnametemp)==0&&strcmp(m_qdes,qdestemp)==0)
		  {
			  AfxMessageBox("您没有进行任何修改操作!");
		  }
		  else
		      AfxMessageBox("修改成功!");
	}	
}

void CQuanxian::OnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    if(pNMListView->uNewState&LVIS_SELECTED)
	{
     	UpdateData();
    	Save();///保存旧数据
	    m_nCurrentSel = pNMListView->iItem;
    	Load();///加载新数据
    	m_jian.EnableWindow();
	}	
      *pResult = 0;
}


/////将编辑框的数据保存到记录集与列表框
void CQuanxian::Save()
{
    if(!m_pRecordset->adoEOF && m_nCurrentSel >= 0 && m_bAutoSave)
	{
		if (m_qname.IsEmpty())
		{
			MessageBox ("权限组的名称不能为空","");
			return;
		}

		vQID = (long)m_qid;
		if(strcmp(m_qname,_T(""))==0)
			vQNAME.vt=VT_NULL;
		else
            vQNAME=m_qname;
		if(strcmp(m_qdes,_T(""))==0)
			vQDES.vt=VT_NULL;
		else
            vQDES=m_qdes;

        v[x]=m_qid;
		x++;
		m_pRecordset->PutCollect("RoleGroupID",vQID);
		m_pRecordset->PutCollect("RoleGroupName",vQNAME);
		m_pRecordset->PutCollect("RolePassword",vQNAME);	//暂时定义为同SDE用户名称
        m_pRecordset->PutCollect("Description",vQDES);
		m_quanlist.SetItem(m_nCurrentSel,0,LVIF_TEXT,(_bstr_t)vQID,NULL,0,0,0);
		if(vQNAME.vt != VT_NULL)
		      m_quanlist.SetItem(m_nCurrentSel,1,LVIF_TEXT,(_bstr_t)vQNAME,NULL,0,0,0);
		else 
		      m_quanlist.SetItem(m_nCurrentSel,1,LVIF_TEXT,_T(""),NULL,0,0,0);
	    if(vQDES.vt != VT_NULL)
              m_quanlist.SetItem(m_nCurrentSel,2,LVIF_TEXT,(_bstr_t)vQDES,NULL,0,0,0);
		else
              m_quanlist.SetItem(m_nCurrentSel,2,LVIF_TEXT,_T(""),NULL,0,0,0);
	}
}



//////将记录集中的数据加载到编辑框/////
void CQuanxian::Load()
{
    m_pRecordset->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));
	vQID = m_pRecordset->GetCollect("RoleGroupID");
	vQNAME = m_pRecordset->GetCollect("RoleGroupName");
    vQDES=m_pRecordset->GetCollect("Description");
    m_qid = vQID.lVal;
	if(vQNAME.vt != VT_NULL)
	    m_qname = (LPCTSTR)(_bstr_t)vQNAME;
	else 
		m_qname=_T("");    
     if(vQDES.vt != VT_NULL)
        m_qdes=(LPCTSTR)(_bstr_t)vQDES;
	 else
	    m_qdes=_T("");
    qidtemp=m_qid;
	qdestemp=m_qdes;
	qnametemp=m_qname;
	UpdateData(FALSE);
}


void CQuanxian::OnUpdp() 
{
    CQuanshu dlg;
	dlg.m_qid=m_qid;
	dlg.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -