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

📄 usedlg.cpp

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

#include "stdafx.h"
#include "yhgl.h"
#include "UseDlg.h"
#include "Choose.h"


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

#define Max 999
extern CYhglApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CUseDlg dialog


CUseDlg::CUseDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CUseDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUseDlg)
	//}}AFX_DATA_INIT
	m_nCurrentSel = -1;
	m_bAutoSave = TRUE;
	j=0;
	i=0;
}


void CUseDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUseDlg)
	DDX_Control(pDX, IDC_BUTTONDEL, m_Del);
	DDX_Control(pDX, IDC_BUTTONAPPLY, m_apply);
	DDX_Control(pDX, IDC_BUTTONADD, m_create);
	DDX_Control(pDX, IDCANCEL, m_cancel);
	DDX_Control(pDX, IDOK, m_exit);
	DDX_Control(pDX, IDC_LIST1, m_userlist);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUseDlg, CDialog)
	//{{AFX_MSG_MAP(CUseDlg)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)
	ON_BN_CLICKED(IDC_BUTTONADD, OnButtonadd)
	ON_BN_CLICKED(IDC_BUTTONAPPLY, OnButtonapply)
	ON_BN_CLICKED(IDC_BUTTONDEL, OnButtondel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUseDlg message handlers

void CUseDlg::PostNcDestroy() 
{
	//CSizingDialog::OnDestroy();
	CDialog::PostNcDestroy();
	delete this;
}

BOOL CUseDlg::Create()
{
	return CDialog::Create(CUseDlg::IDD);
}

void CUseDlg::OnOK() 
{
	m_pRecordset1->Close();
	m_pRecordset2->Close();
    m_userlist.flag=0;
	DestroyWindow();
}

void CUseDlg::OnCancel()
{
	//CDialog::OnCancel();
	DestroyWindow();
}

BOOL CUseDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	m_exit.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
	m_exit.SetBkColor(RGB(234,216,187));
	m_exit.SetTooltipText(_T("退回到先前目录"));
	m_exit.SetRounded(TRUE);
    m_cancel.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
	m_cancel.SetBkColor(RGB(234,216,187));
	m_cancel.SetTooltipText(_T("退出"));
	m_cancel.SetRounded(TRUE);
    m_apply.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
	m_apply.SetBkColor(RGB(234,216,187));
	m_apply.SetTooltipText(_T("更新修改内容"));
	m_apply.SetRounded(TRUE);
    m_create.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
	m_create.SetBkColor(RGB(234,216,187));
	m_create.SetTooltipText(_T("创建新的用户:登陆名、密码与所属权限组不能为空"));
	m_create.SetRounded(TRUE);
    m_Del.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
	m_Del.SetBkColor(RGB(234,216,187));
	m_Del.SetTooltipText(_T("删除制定用户"));
	m_Del.SetRounded(TRUE);
	


	m_Del.EnableWindow(FALSE);
	ListView_SetExtendedListViewStyle(::GetDlgItem(m_hWnd,IDC_LIST1),LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); 
	::SendMessage(m_userlist.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);

	//////////为列表控件添加列//////////
	m_userlist.flag = 1;
	m_userlist.InsertColumn(0,"用户ID",LVCFMT_LEFT,60);
	m_userlist.InsertColumn(1,"用户全名",LVCFMT_LEFT,100);
	m_userlist.InsertColumn(2,"登陆名",LVCFMT_LEFT,150);
	m_userlist.InsertColumn(3,"密码",LVCFMT_LEFT,100);
	m_userlist.InsertColumn(4,"权限组",LVCFMT_LEFT,80);
	m_userlist.InsertColumn(5,"说明",LVCFMT_LEFT,200);
	//////////读取数据库中的信息添加到列表控件///////////
	int nItem;
	_variant_t vUsername,vPname,vPID,vUID,vCode,vFullname,vDes;
	try
	{  
		m_sa.RemoveAll();
		m_pRecordset1.CreateInstance("ADODB.Recordset");
        m_pRecordset2.CreateInstance("ADODB.Recordset");
		m_pRecordset1->Open("SELECT * FROM SDE.TB_DSUSER ORDER BY UserID",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		m_pRecordset2->Open("SELECT * FROM SDE.TB_RoleGroupInfo",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
	    
		long dsNum1,dsNum2;
	    m_pRecordset1->get_RecordCount(&dsNum1);
        m_pRecordset2->get_RecordCount(&dsNum2);
	   
		if (dsNum2>0)
		{
	       m_pRecordset2->MoveFirst();
		   while(!m_pRecordset2->adoEOF)
		   {
			  vPname = m_pRecordset2->GetCollect("RoleGroupName");
			  vPID=m_pRecordset2->GetCollect("RoleGroupID");
			  pre[i]=vPID.lVal;
		      Pname[i]=(LPCTSTR)(_bstr_t)vPname;
			  m_sa.Add(Pname[i]);
		      m_pRecordset2->MoveNext();
			  i++;
		   }

		 if (dsNum1>0)
		 {
		    m_pRecordset1->MoveFirst();
		    while(!m_pRecordset1->adoEOF)
			{
		      vUID = m_pRecordset1->GetCollect("UserID");
	          vUsername = m_pRecordset1->GetCollect("LogName");///取得username字段的值
	          vCode = m_pRecordset1->GetCollect("LogPassWord");
	          vPID = m_pRecordset1->GetCollect("RoleGroupID");
			  vFullname=m_pRecordset1->GetCollect("UserFullName");
			  vDes=m_pRecordset1->GetCollect("Description");

		      Info[j].uid=vUID.lVal;
			  Info[j].code=(LPCTSTR)(_bstr_t)vCode;
			  Info[j].lname=(LPCTSTR)(_bstr_t)vUsername;
			  Info[j].qid=vPID.lVal;
			  Info[j].DeleteFlag=1;
			  Info[j].NewFlag=0;
			  int k=0;
			  while(k<i)
			  {
				if(Info[j].qid==pre[k])
				break;
				k++;
			  }
			  Info[j].qname=Pname[k];
			  nItem=m_userlist.InsertItem(0xffff,"");
			  m_userlist.SetItemText(nItem,0,(_bstr_t)vUID);
			  m_userlist.SetItemText(nItem,2,(_bstr_t)vUsername);
			  m_userlist.SetItemText(nItem,3,(_bstr_t)_T("******"));
			  m_userlist.SetComboBox(nItem,4,1,&m_sa,i,k);

              if(vFullname.vt != VT_NULL)
			  {
			    Info[j].fname=(LPCTSTR)(_bstr_t)vFullname;
		        m_userlist.SetItemText(nItem,1,(_bstr_t)vFullname);
			  }
		      else 
			  {
			    Info[j].fname=_T("");
		        m_userlist.SetItemText(nItem,1,(_bstr_t)_T(""));
			  }
		      if(vDes.vt != VT_NULL)
			  {
			    Info[j].des=(LPCTSTR)(_bstr_t)vDes;
                m_userlist.SetItemText(nItem,5,(_bstr_t)vDes);
			  }
		      else
			  {
                Info[j].des=_T("");
                m_userlist.SetItemText(nItem,5,(_bstr_t)_T(""));
			  }
              m_pRecordset1->MoveNext();
		     j++; 
			}
		 }
		}
	    else
		{
			MessageBox("没有用户组,请先选择权限组信息维护!");
			CDialog::OnCancel();			
		}
	}
	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 CUseDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    if(pNMListView->uNewState&LVIS_SELECTED)
	{
	    UpdateData();
	    m_nCurrentSel = pNMListView->iItem;
		m_Del.EnableWindow();
	}	
	*pResult = 0;
}


void CUseDlg::OnButtonadd() 
{
	m_nCurrentSel=m_userlist.InsertItem(0xffff,"");
	if(j==0)
    vUSERID=long(1);
	else
    vUSERID = (long)(Info[j-1].uid+1);
	
	m_userlist.SetItemText(m_nCurrentSel,0,(_bstr_t)vUSERID);
	m_userlist.SetItemText(m_nCurrentSel,1,(_bstr_t)_T(""));
	m_userlist.SetItemText(m_nCurrentSel,2,(_bstr_t)_T(""));
	m_userlist.SetItemText(m_nCurrentSel,3,(_bstr_t)_T(""));
    m_userlist.SetComboBox(m_nCurrentSel,4,1,&m_sa, i, 0);
    m_userlist.SetItemText(m_nCurrentSel,5,(_bstr_t)_T(""));	
    
	m_userlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
 	m_userlist.SetHotItem(m_nCurrentSel);
	m_userlist.SetFocus();

	if(j==0)
      Info[j].uid=1;
	else
	   Info[j].uid=Info[j-1].uid+1;
	Info[j].fname=_T("");
	Info[j].des=_T("");
	Info[j].lname=_T("");
	Info[j].code=_T("");
	Info[j].qid=pre[0];
	Info[j].qname=Pname[0];
	Info[j].NewFlag=1;
	Info[j].DeleteFlag=0;
	j++;
}

void CUseDlg::OnButtonapply() 
{
   int t=0;
   CString str;
   
   while(t<j)
   {
	   str=m_userlist.GetComboText(t, 4);
       if(strcmp(str,Info[t].qname)!=0)
	   {
		   m_userlist.UserInfo[t].sign[3]=1;
		   Info[t].qname=str;
	   }
	   int tag=0;
	   while(tag<i)
	   {
		   if(strcmp(Pname[tag],Info[t].qname)==0)
			  break;
		   tag++;
	   }
	   if(m_userlist.UserInfo[t].sign[0]==1||m_userlist.UserInfo[t].sign[1]==1||m_userlist.UserInfo[t].sign[2]==1||m_userlist.UserInfo[t].sign[3]==1||m_userlist.UserInfo[t].sign[4]==1)
	   {
		  if(m_userlist.UserInfo[t].sign[0]==1)
		     Info[t].fname=m_userlist.UserInfo[t].fname;
		  if(m_userlist.UserInfo[t].sign[1]==1)
		     Info[t].lname=m_userlist.UserInfo[t].lname;
          if(m_userlist.UserInfo[t].sign[2]==1)
		     Info[t].code=m_userlist.UserInfo[t].code;
		  if(m_userlist.UserInfo[t].sign[4]==1)
		     Info[t].des=m_userlist.UserInfo[t].des;
          
		  if(Info[t].lname.IsEmpty()||Info[t].code.IsEmpty())
		  {
			  AfxMessageBox("有无效信息,请再次修改!");
		  }
		   else
		  {
			  vUSERID = (long)(Info[t].uid);
              vUSERNAME=Info[t].lname;
	          vCODE=Info[t].code;
              vPID=(long)pre[tag];
              vDES=Info[t].des;
	          vFULLNAME=Info[t].fname;

			  if(Info[t].NewFlag==1)
			  {
				  m_pRecordset1->AddNew();
				  Info[t].NewFlag=0;
				  Info[t].DeleteFlag=1;
			  }
              else
			  {
				  m_pRecordset1->MoveFirst();
		          m_pRecordset1->Move(t);
			  }
			  
              m_pRecordset1->PutCollect("LogName",vUSERNAME);
  	          m_pRecordset1->PutCollect("LogPassWord",vCODE);
			  m_pRecordset1->PutCollect("UserID",vUSERID);
              m_pRecordset1->PutCollect("RoleGroupID",vPID);
	          m_pRecordset1->PutCollect("UserFullName",vFULLNAME);
              m_pRecordset1->PutCollect("Description",vDES);
              m_pRecordset1->Update();
		  }		  
	   }
	   t++;
	}
}

void CUseDlg::OnButtondel() 
{
   m_bAutoSave = FALSE;
   
   if(m_nCurrentSel >= 0&&Info[m_nCurrentSel].DeleteFlag==1)
   {
	   m_pRecordset1->MoveFirst();
       m_pRecordset1->Move(m_nCurrentSel);
	  
	   m_userlist.DeleteItem(m_nCurrentSel);
	   int count = m_userlist.GetItemCount();
	   if(count <= m_nCurrentSel)
		 m_nCurrentSel = count-1;
	   else
		{ 
		  for(int i=0;i<=(j-m_nCurrentSel-2);i++)
		  {
			  	Info[m_nCurrentSel+i].uid=Info[m_nCurrentSel+i+1].uid;
 		        Info[m_nCurrentSel+i].fname=Info[m_nCurrentSel+i+1].fname;
                Info[m_nCurrentSel+i].code=Info[m_nCurrentSel+i+1].code;
				Info[m_nCurrentSel+i].lname=Info[m_nCurrentSel+i+1].lname;
				Info[m_nCurrentSel+i].qid=Info[m_nCurrentSel+i+1].qid;
                Info[m_nCurrentSel+i].qname=Info[m_nCurrentSel+i+1].qname;
				Info[m_nCurrentSel+i].des=Info[m_nCurrentSel+i+1].des;
		  }
		}
	   j--;

	   	m_pRecordset1->Delete(adAffectCurrent);
	    if(m_nCurrentSel!=0)
        m_pRecordset1->MoveNext();
		
	    m_userlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
	    m_userlist.SetFocus();
	}
	m_bAutoSave = TRUE;			
}

⌨️ 快捷键说明

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