QQ登录

只需一步,快速开始

81上位机VC MFC树视图加载显示数据库数据

[ 复制链接 ]

81上位机VC MFC树视图加载显示数据库数据

81上位机VC MFC树视图加载显示数据库数据

81上位机VC MFC树视图加载显示数据库数据


功能展示

有时为了能够将数据库内数据非常清晰的表达数据间的层次关系,就会用到树状视图控件,我们当前例程就使用树状视图加载与显示数据库文件数据,效果如图;
要点提示
在使用树视图控件时,常用到的函数 有SetImageList()关联图像列表;InsertItem()插入数据;GetNextItem()遍历数据;
InsertItem()查阅MSDN手册语法有很多,我们当前例程使用HTREEITEMInsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT,HTREEITEM hInsertAfter = TVI_LAST);
lpszItem节点文本; hParent 父节点句柄; nImage, nSelectedImage为节点及选中图像的索引; hInsertAfter 标识新播放节点后面的节点句柄;






实现功能
1.新建基于对话框的应用程序
2.拖拽一树状视图控件关联变量CTreeCtrl  m_Tree;添加一图片列表变量 CImageList m_TreeImageList;用于设置树状视图控图标用;

3.添加一函数AddtoTree(HTREEITEM node,int UPID)用于向树状视图添加节点,再进行初始化操作给树状视图从数据库读取数据添加到树状视图中
  1. void CGkbc8Dlg::AddtoTree(HTREEITEM node,int UPID)
  2. {
  3.         HTREEITEM CHILDROOT;
  4.         for(int i=0;i<a_upid.GetSize();i++)
  5.         {
  6.                 if(UPID==atoi(a_upid.GetAt(i)))
  7.                 {
  8.                         switch(atoi(a_lx.GetAt(i)))
  9.                         {
  10.                                 case 1:
  11.                                         CHILDROOT = m_Tree.InsertItem(a_name.GetAt(i),2,2,node);
  12.                                         AddtoTree(CHILDROOT,atoi(a_id.GetAt(i)));
  13.                                         break;
  14.                                 case 2:
  15.                                         CHILDROOT = m_Tree.InsertItem(a_name.GetAt(i),1,1,node);
  16.                                         AddtoTree(CHILDROOT,atoi(a_id.GetAt(i)));
  17.                                         break;
  18.                                 case 3:
  19.                                         CHILDROOT = m_Tree.InsertItem(a_name.GetAt(i),3,3,node);
  20.                                         AddtoTree(CHILDROOT,atoi(a_id.GetAt(i)));
  21.                                         break;
  22.                         }
  23.                 }
  24.         }
  25. }
复制代码
  1. //
  2.         m_TreeImageList.Create(16,16,ILC_MASK,4,1);
  3.         m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
  4.         m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
  5.         m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
  6.         m_TreeImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
  7.         m_Tree.SetImageList(&m_TreeImageList,LVSIL_NORMAL);
  8.         HTREEITEM ROOT;
  9.         ROOT=m_Tree.InsertItem("工控编程",0,0);
  10. //初始化数据库
  11.     _ConnectionPtr m_pConnection;//Connection对象的指针
  12.         _RecordsetPtr m_pRecordset;//Recordset对象的指针
  13.     ::CoInitialize(NULL);//初始化OLE/COM库环境
  14.         m_pConnection.CreateInstance("ADODB.Connection");//创建connection对象
  15.         _bstr_t strConnect="uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=Shujuku.mdb;";//设置连接字符串
  16.         m_pConnection->Open(strConnect,"","",adModeUnknown);//SERVER和UID,PWD的设置根据实际情况来设置

  17.         _bstr_t vSQL;
  18.         vSQL="SELECT*FROM shuju ORDER BY id";//设置SQL语句
  19.         m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集对象
  20.     m_pRecordset->Open(vSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);//取得表中的记录
  21. //加载数据

  22.         a_id.RemoveAll();
  23.         a_upid.RemoveAll();
  24.         a_lx.RemoveAll();
  25.         a_name.RemoveAll();
  26.         while(m_pRecordset->adoEOF==0)
  27.         {
  28.                 a_id.Add((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("id"));
  29.                 a_upid.Add((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("upid"));
  30.                 a_lx.Add((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("lx"));
  31.                 a_name.Add((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name"));
  32.                 m_pRecordset->MoveNext();
  33.         }
复制代码
  1. m_pRecordset->Close();
  2.         m_pConnection->Close();
  3. //将从数据库加载的数据添加到树状列表中
  4.     AddtoTree(ROOT,0);
  5.         m_Tree.Expand(ROOT,TVE_EXPAND);//展开
复制代码
其中CStringArraya_id;
CStringArray a_upid;
CStringArray a_lx;
CStringArray a_name; 为全局变量
例程中涉及数据库的操作所以所加载动态库文件,添加一句便可#import "C:\Program Files\CommonFiles\System\ado\msado15.dll" no_namespacerename("EOF","adoEOF")rename("BOF","adoBOF")

我们来演示下功能实现的整个过程

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:81.上位机VC MFC树视图加载显示数据库数据.rar 
文件大小:204.35 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索