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

📄 clienttreedlgview.cpp

📁 用数据库控制树型控件现实内容的例子
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		_RecordsetPtr m_pTreeRecordset;    //用于创建一个查询记录集
		CString strSQL,strCurItem;
		if(dlg.m_NewItemName.GetLength()<1)
		{
			AfxMessageBox("需要输入组名称");
			return;
		}
//		strSQL.Format("INSERT INTO ComputerGroups(ComputerGroupId,ComputerGroupName,ParentComputerGroupid) VALUES(select MAX(ComputerGroupId) from ComputerGroups,'%s',%d)",dlg.m_NewItemName,m_ClientTree.GetItemData(hTreeCurrent));
		strSQL.Format("INSERT INTO ComputerGroups(ComputerGroupName,ParentComputerGroupid) VALUES('%s',%d)",dlg.m_NewItemName,m_ClientTree.GetItemData(hTreeCurrent));
		_variant_t varSQLtcp(strSQL);
		try
		{
			HRESULT hTRes;
		    hTRes = m_pTreeRecordset.CreateInstance(_T("ADODB.Recordset"));
			if (SUCCEEDED(hTRes))
			{
		        hTRes = m_pTreeRecordset->Open(varSQLtcp,
			         _variant_t((IDispatch *)m_db,true),
					 adOpenStatic,adLockOptimistic,adCmdText);
			}
		}
		catch(...)
		{
			AfxMessageBox("INSERT DATA ERROR\r\n");
			TRACE("INSERT DATA ERROR\r\n");
		}
		hTreeCurrent = m_ClientTree.InsertItem(dlg.m_NewItemName, hTreeCurrent, NULL);
//		m_ClientTree.SetItemData(hTreeCurrent, m_pTreeRecordset->GetCollect("ComputerGroupId").iVal );
		Refresh();
	}
	
}

void CClientTreeDlgView::OnPopupInstall() 
{
	// TODO: Add your command handler code here
	CInstallKillDlg dlg;
	HTREEITEM hTreeCurrent;//当前项句柄
	hTreeCurrent=m_ClientTree.GetSelectedItem ();

	if(dlg.DoModal()==IDOK)
	{
		if(dlg.m_IncludeAllSubTreeNum)
		{
			CMainFrame * pMain=(CMainFrame *)AfxGetMainWnd();
			pMain->m_SocketServer.InstallGroup(m_ClientTree.GetItemData(hTreeCurrent),pMain->m_ClientPort,pMain->m_InstallUrl.GetBuffer(0),1);
		}
		else
		{
			CMainFrame * pMain=(CMainFrame *)AfxGetMainWnd();
			pMain->m_SocketServer.InstallGroup(m_ClientTree.GetItemData(hTreeCurrent),pMain->m_ClientPort,pMain->m_InstallUrl.GetBuffer(0),0);
		}
	}
}

void CClientTreeDlgView::OnPopupEdit() 
{
	// TODO: Add your command handler code here
	HTREEITEM hTreeCurrent;//当前项句柄
	hTreeCurrent=m_ClientTree.GetSelectedItem ();

	CString TreeCurrentStr;
	TreeCurrentStr="‘"+m_ClientTree.GetItemText(hTreeCurrent)+"’";
	if(TreeCurrentStr.Compare("‘组织’")==0 || TreeCurrentStr.Compare("‘未分组’")==0)
		return;

	int i=m_ClientTree.GetItemData(hTreeCurrent);
	if(i==0 || i==1 || i==2)
		return;

	CItemEditDlg dlg;

	if(dlg.DoModal()==IDOK)
	{
//		dlg.m_NewItemName;
		_RecordsetPtr m_pTreeRecordset;    //用于创建一个查询记录集
		CString strSQL,strCurItem;
		if(dlg.m_NewItemName.GetLength()<1)
		{
			AfxMessageBox("需要输入组名称");
			return;
		}
		strSQL.Format("UPDATE ComputerGroups SET computerGroupName='%s' where ComputerGroupid = %d",dlg.m_NewItemName,m_ClientTree.GetItemData(hTreeCurrent));
		_variant_t varSQLtcp(strSQL);
		try
		{
			HRESULT hTRes;
		    hTRes = m_pTreeRecordset.CreateInstance(_T("ADODB.Recordset"));
			if (SUCCEEDED(hTRes))
			{
		        hTRes = m_pTreeRecordset->Open(varSQLtcp,
			         _variant_t((IDispatch *)m_db,true),
					 adOpenStatic,adLockOptimistic,adCmdText);
			}
		}
		catch(...)
		{
		}
		m_ClientTree.SetItemText(hTreeCurrent,dlg.m_NewItemName);
//		Refresh();
	}
}

void CClientTreeDlgView::OnPopupDelete() 
{
	// TODO: Add your command handler code here
	HTREEITEM hTreeCurrent,hTreeParent;//当前和父级项句柄
	hTreeCurrent=m_ClientTree.GetSelectedItem ();
	hTreeParent=m_ClientTree.GetParentItem(m_ClientTree.GetSelectedItem ());
	CString TreeCurrentStr;
	TreeCurrentStr="‘"+m_ClientTree.GetItemText(hTreeCurrent)+"’";
	if(TreeCurrentStr.Compare("‘组织’")==0 || TreeCurrentStr.Compare("‘未分组’")==0)
		return;

	int i=m_ClientTree.GetItemData(hTreeCurrent);
	if(i==0 || i==1 || i==2)
		return;



	CItemDeleteDlg dlg;
	dlg.m_DeleteChild=true;
	dlg.m_ItemName=TreeCurrentStr;
	if(dlg.DoModal()==IDOK)
	{
		CString strSQL,strCurItem;
		_CommandPtr Cmd1;
		HRESULT hTRes;
		hTRes=Cmd1.CreateInstance( __uuidof( Command ) );
		if(SUCCEEDED(hTRes))
		{
			if(!dlg.m_DeleteChild)
			{
				try
				{
					Cmd1->ActiveConnection = m_db;
					strSQL.Format("update ComputerGroups set ParentComputerGroupid=%d where ParentComputerGroupid=%d",m_ClientTree.GetItemData(hTreeParent),m_ClientTree.GetItemData(hTreeCurrent));
					Cmd1->CommandText = strSQL.AllocSysString();
					Cmd1->Execute(NULL,NULL,adCmdText);
					strSQL.Format("DELETE  FROM ComputerGroups where ComputerGroupid = %d",m_ClientTree.GetItemData(hTreeCurrent));
					Cmd1->CommandText = strSQL.AllocSysString();
					Cmd1->Execute(NULL,NULL,adCmdText);
				}
				catch(...)
				{
				}
			}
			else
				DeleteSubTree(m_ClientTree.GetItemData(hTreeCurrent));
		}
		Refresh();
	}
}

void CClientTreeDlgView::OnPopupUninstall() 
{
	// TODO: Add your command handler code here
	CInstallKillDlg dlg;
	HTREEITEM hTreeCurrent;//当前项句柄
	hTreeCurrent=m_ClientTree.GetSelectedItem ();

	if(dlg.DoModal()==IDOK)
	{
		if(dlg.m_IncludeAllSubTreeNum)
		{
			CMainFrame * pMain=(CMainFrame *)AfxGetMainWnd();
			pMain->m_SocketServer.UnInstallGroup(m_ClientTree.GetItemData(hTreeCurrent),pMain->m_ClientPort,pMain->m_UnInstallUrl.GetBuffer(0),1);
		}
		else
		{
			CMainFrame * pMain=(CMainFrame *)AfxGetMainWnd();
			pMain->m_SocketServer.UnInstallGroup(m_ClientTree.GetItemData(hTreeCurrent),pMain->m_ClientPort,pMain->m_UnInstallUrl.GetBuffer(0),0);
		}
	}	
}


void CClientTreeDlgView::Refresh()
{
	m_ClientTree.DeleteAllItems();
	AddTree();
}

void CClientTreeDlgView::DeleteSubTree(int ParentComputerGroupid)
{
	CString strSQL,strCurItem;
	_RecordsetPtr m_pTreeRecordset;    //用于创建一个查询记录集
	_CommandPtr Cmd1;
	HRESULT hTRes;

	strSQL.Format("SELECT * FROM ComputerGroups where ParentComputerGroupid = %d",ParentComputerGroupid );
	_variant_t varSQLtcp(strSQL);
	try
	{
//		HRESULT hTRes;
	    hTRes = m_pTreeRecordset.CreateInstance(_T("ADODB.Recordset"));
		if (SUCCEEDED(hTRes))
		{
            //----------------------------------------------------
	        hTRes = m_pTreeRecordset->Open(varSQLtcp,
		         _variant_t((IDispatch *)m_db,true),
				 adOpenStatic,adLockOptimistic,adCmdText);
//				adOpenDynamic,adLockOptimistic,adCmdText);
            if(SUCCEEDED(hTRes))
	        {
				bool abc=m_pTreeRecordset->adoEOF;
				int a=m_pTreeRecordset->GetRecordCount();

				if (!m_pTreeRecordset->adoEOF)
				{
					for(int i=0;i<m_pTreeRecordset->GetRecordCount(); i++)
					{
						DeleteSubTree(m_pTreeRecordset->GetCollect("ComputerGroupId").intVal);						
						if (!(m_pTreeRecordset->adoEOF))
							m_pTreeRecordset->MoveNext();
					}		
				}
				m_pTreeRecordset->Close();
			}
			hTRes=Cmd1.CreateInstance( __uuidof( Command ) );
			if(SUCCEEDED(hTRes))
			{
				Cmd1->ActiveConnection = m_db;
				strSQL.Format("DELETE  FROM ComputerGroups where ComputerGroupid = %d",ParentComputerGroupid);
				Cmd1->CommandText = strSQL.AllocSysString();
				Cmd1->Execute(NULL,NULL,adCmdText);
			}
		}
	}
	catch(_com_error e)///捕捉异常
	{
		 CString errormessage;
		 MessageBox("创建City记录集失败!");
	}
}



void CClientTreeDlgView::OnDblclkClientTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
//	AfxMessageBox("abc");
	*pResult = 0;
}

int CClientTreeDlgView::GetCurrentGroupId()
{
	HTREEITEM hTreeCurrent;//当前项句柄
	hTreeCurrent=m_ClientTree.GetSelectedItem ();
	return m_ClientTree.GetItemData(hTreeCurrent);
}

⌨️ 快捷键说明

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