資源簡介
1、支持任意添加、修改、刪除節點信息
2、支持節點間的任意拖曳
3、支持對操作結果的保存
4、提供了生產樹的方法
附:執行程序和源代碼

代碼片段和文件信息
//---------------------------------------------------------------------------
#pragma?hdrstop
#include?“BuildTreeUnit.h“
//---------------------------------------------------------------------------
#pragma?package(smart_init)
typedef?struct?TreeItem
{
???String?ItemCaption;
???int?NumID;
???int?ItemID;
???String?strMemo;
}TTreePoint;
/****************************************************************************
?*??函數名稱:FindKey
?*??參數:????String?FieldName????//父節點字段名
?*????????????int?Index???????????//匹配值
?*????????????TDataSet*?DataSet???//數據集
?*??功能:????找到第一個匹配的記錄?
?*??作者:????透明
?*??日期:????2006-02-22
****************************************************************************/
bool?__fastcall?FindKey(String?FieldName?int?Index?TDataSet*?DataSet)
{
????bool?ret;
????TLocateOptions?Opts;
????Opts.Clear();
????//?全匹配
????Opts?<
????ret?=?DataSet->Locate(FieldName?Index?Opts);
????return?ret;
}
/****************************************************************************
?*??函數名稱:FindNext
?*??參數:????String?FieldName????//父節點字段名
?*????????????int?Index??????????//匹配值
?*????????????TDataSet*?DataSet???//數據集
?*??功能:????查找下一個配置的記錄?
?*??作者:????透明
?*??日期:????2006-02-22
****************************************************************************/
bool?__fastcall?FindNext(String?FieldName?int?Index?TDataSet*?DataSet)
{
????bool?ret;
????DataSet->Next();
????if?(DataSet->Eof)
??????return?false;
????else
??????if?(DataSet->FieldValues[FieldName]?==?Index)
?????????ret?=?true;
??????else
?????????ret?=?false;
????if?(!ret)
??????DataSet->Prior();
????return?ret;
}
/****************************************************************************
?*??函數名稱:GetChildNode
?*??參數:????int?Index??????????????//當前節點ID
?*????????????TTreeNode*?ANode???????//當前結點
?*????????????TTreeView*?TreeView????//構造樹?
?*????????????TDataSet*?DataSet??????//提供結點數據的數據集?
?*??功能:????據構造當前結點的一級子樹
?*??作者:????透明
?*??日期:????2006-02-22
****************************************************************************/
int?__fastcall?GetChildNode(int?Index?TTreeNode*?ANode?TTreeView*?TreeView?TDataSet*?DataSet)
{
????TTreeNode*?Node;
????TTreePoint*?GlobalNode;
????int?ret?=?0;
????if?(FindKey(“NodeID“?Index?DataSet))
????{
??????if?(DataSet->Eof)
????????return?-1;
??????do
??????{
????????Node?=?TreeView->Items->AddChild(ANode?DataSet->FieldValues[“MenuItem“]);
????????Node->ImageIndex?=?0;
????????Node->SelectedIndex?=?1;
????????GlobalNode?=?new?TTreePoint();
????????GlobalNode->NumID?=?DataSet->FieldByName(“ID“)->AsInteger;
????????GlobalNode->ItemID?=?DataSet->FieldByName(“NodeID“)->AsInteger;
????????GlobalNode->ItemCaption?=?DataSet->FieldByName(“MenuItem“)->AsString;
????????GlobalNode->strMemo?=?DataSet->FieldByName(“Memo1“)->AsString;
????????Node->Data?=?GlobalNode;
????????ret++;
??????}while?(FindNext(“NodeID“?Index?DataSet));
????}
??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4290??2008-12-22?09:33??BuildTreeUnit.cpp
?????文件????????672??2008-12-22?09:33??BuildTreeUnit.h
?????文件???????3982??2008-12-22?09:33??TreeOption.bpr
?????文件???????1078??2008-12-22?09:33??TreeOption.cpp
?????文件?????317440??2011-03-16?12:43??TreeOption.exe
?????文件???????1536??2008-12-22?09:33??TreeOption.res
?????文件??????10005??2008-12-22?09:33??TreeUnit.cpp
?????文件?????????51??2008-12-22?09:33??TreeUnit.ddp
?????文件??????13596??2008-12-22?09:33??TreeUnit.dfm
?????文件???????2331??2008-12-22?09:33??TreeUnit.h
?????文件??????10369??2011-03-16?12:43??TreeOption.obj
?????文件??????28661??2011-03-16?12:43??TreeUnit.obj
?????文件??????13340??2011-03-16?12:43??BuildTreeUnit.obj
?????文件?????204800??2009-03-04?13:51??mobile2006.mdb
?????文件????1638400??2011-03-16?12:45??TreeOption.tds
-----------?---------??----------?-----??----
??????????????2250551????????????????????15
評論
共有 條評論