treeview 数据库的结合
扫描二维码
随时随地手机看文章
由于我的treeview比较大,变化频繁,所以没有用递归。
void _ado_treeview::loadtree()//装载treeview
{
PMyRec MyRecPtr;
Form1->TreeView1->Items->Clear();
Form1->TreeView1->Items->BeginUpdate();//禁止更新,等数据处理完成后再更新
TADOQuery *dquery = new TADOQuery((TComponent *)NULL); //
dquery->Connection =Form1->ADOConnection1; //
String x="select * from 树目录管理表 order by aID";//aID是节点在TreeView中的绝对索引,用来保存位置
dquery->SQL->Add(x);
dquery->Open();
dquery->First();
while (!dquery->Eof)
{
MyRecPtr = new TMyRec;//TMyRec是一个结构,后面给出定义
MyRecPtr->shuxing = dquery->FieldByName("属性")->AsString;
MyRecPtr->id = dquery->FieldByName("id")->AsString;
MyRecPtr->Father_id=dquery->FieldByName("Father_id")->AsString;
if(dquery->FieldByName("Father_ID")->AsString.IsEmpty()) //所有根节点的Father_ID均为空
Form1->TreeView1->Items->AddChildObject(NULL,dquery->FieldByName("nametext")->AsString,MyRecPtr);
else
{ //如果不是根节点,则查找父节点加上
for(int i=0;i
Form1->TreeView1->Items->EndUpdate();//
if(Form1->TreeView1->Items->Count>0)Form1->TreeView1->Items->Item[0]->Selected=true;
}
///////下面是MyRec的定义
typedef struct MyRec //对应数据表中的shuxing-属性,Father_id对应Father_id
{ // id对应ID
AnsiString shuxing;//shuxing-该节点的属性是表、部门、员工等 ,已备点击调用
AnsiString Father_id; //父节点-当拖动时改变
AnsiString id; //本节点-永远不变且没有重复,可以作为数据检索条件
} TMyRec;