不同数据表记录构建树控件


 几个函数搞定:

void CErrorCheck::AddRootTree()
{
 //创建图象标签
 m_TreeBootImage.Create( IDB_BOOT,20,1,ILC_COLOR8);
 m_ctrlTree.SetImageList ( &m_TreeBootImage,TVSIL_NORMAL );
 m_ctrlTree.SetTextColor (RGB(7,145,13));
 //Tree控件操作变量
 TVINSERTSTRUCT tvInsert;
 HTREEITEM hParentItem;
 //
 tvInsert.hParent = NULL;
 tvInsert.hInsertAfter = NULL;
 tvInsert.item.mask = TVIF_TEXT;

 CString strSQL,strCurItem,strCity;
 //
 strSQL.Format("SELECT * FROM tbCity");
 CADORecordset* pRs=new CADORecordset(((CInsuranceMISApp*)(AfxGetApp()))->pDB);
 pRs->Open(strSQL,CADORecordset::openQuery);

 if(pRs->GetRecordCount() > 0)
 {
  while(!pRs->IsEOF())
  {
   pRs->GetFieldValue("City",strCity);
   
   //添加根目录
   tvInsert.item.pszText = (LPSTR)(LPCTSTR)strCity;
   hParentItem = m_ctrlTree.InsertItem(&tvInsert);
   
   //添加子目录
   AddSubTree(strCity,1,hParentItem);
   pRs->MoveNext();
  }
 }

 //展开Tree目录
 m_ctrlTree.Expand(hParentItem,TVE_EXPAND);

}
//----------------------------------------------------
void CErrorCheck::AddSubTree(CString strCity, int nChildTreeLyr, HTREEITEM hItem)
{
 //Tree控件操作变量
 HTREEITEM hCurrentItem;
 CString strSQL,strFarm,strTabName;
 strTabName = SelectCityTable(strCity,TRUE);
 
 strSQL.Format("SELECT Distinct ForestFarm FROM %s where City = '%s'",strTabName,strCity);
 try
 {
  if(nChildTreeLyr > 0)
  {
   CADORecordset* pRs=new CADORecordset(((CInsuranceMISApp*)(AfxGetApp()))->pDB);
   pRs->Open(strSQL,CADORecordset::openQuery);
   if(pRs->GetRecordCount() > 0)
   {
    pRs->MoveFirst();
    while(!pRs->IsEOF())
    {
     pRs->GetFieldValue("ForestFarm",strFarm);
     hCurrentItem = m_ctrlTree.InsertItem(strFarm, hItem, NULL);
     pRs->MoveNext();
    }
   }
  }

 }
 catch(_com_error e)///捕捉异常
 {
  MessageBox("创建记录集失败!",strCity);
 }
}
//-------------------------------------
void CErrorCheck::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

 m_hTreeCurrent=m_ctrlTree.GetSelectedItem ();
 m_hTreeParent=m_ctrlTree.GetParentItem(m_ctrlTree.GetSelectedItem ());
 //树型控件的图标更改
 m_ctrlTree.SetItemImage(m_hTreeCurrent,1,true );
 m_strTreeCurrent="''"+m_ctrlTree.GetItemText(m_hTreeCurrent)+"''";
 m_strTreeParent=m_ctrlTree.GetItemText (m_hTreeParent);

 *pResult = 0;
}

void CErrorCheck::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
 //-------------------树型控件的图标还原---------
 m_ctrlTree.SetItemImage(m_hTreeCurrent,0,true );
 //----------------------------------------------
 *pResult = 0;
}
在CErrorCheck::OnInitDialog()中添加以下代码:

AddRootTree();
注:CErrorCheck是基于CDialog的对话框类。
成员变量:
 CImageList m_TreeBootImage;
 CString m_strTreeCurrent,m_strTreeParent;
 HTREEITEM m_hTreeCurrent,m_hTreeParent;
程序启动时,对数据库进行读操作,从地州市表中查询地市州名,以地市州名各个创建树的根项目,再在另一表查寻符合条件的记录,并将单位名称一一添加到树中供数据查询用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值