treeview 數(shù)據(jù)庫的結(jié)合
由于我的treeview比較大,變化頻繁,所以沒有用遞歸。
void _ado_treeview::loadtree()//裝載treeview
{
?? PMyRec? MyRecPtr;
?? Form1->TreeView1->Items->Clear();
?? Form1->TreeView1->Items->BeginUpdate();//禁止更新,等數(shù)據(jù)處理完成后再更新
?? TADOQuery *dquery = new TADOQuery((TComponent *)NULL);?? //
?? dquery->Connection =Form1->ADOConnection1;?????????????? //
? String x="select * from 樹目錄管理表 order by aID";//aID是節(jié)點(diǎn)在TreeView中的絕對索引,用來保存位置
? dquery->SQL->Add(x);
? dquery->Open();
? dquery->First();
? while (!dquery->Eof)
??? {
??????? MyRecPtr = new TMyRec;//TMyRec是一個(gè)結(jié)構(gòu),后面給出定義
??????? 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())? //所有根節(jié)點(diǎn)的Father_ID均為空
????????? Form1->TreeView1->Items->AddChildObject(NULL,dquery->FieldByName("nametext")->AsString,MyRecPtr);
??????? else
??????? {? //如果不是根節(jié)點(diǎn),則查找父節(jié)點(diǎn)加上
??????????? 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?? //對應(yīng)數(shù)據(jù)表中的shuxing-屬性,F(xiàn)ather_id對應(yīng)Father_id
{????????????????????? //????????????? id對應(yīng)ID
? AnsiString shuxing;//shuxing-該節(jié)點(diǎn)的屬性是表、部門、員工等 ,已備點(diǎn)擊調(diào)用
? AnsiString Father_id; //父節(jié)點(diǎn)-當(dāng)拖動時(shí)改變
? AnsiString id;? //本節(jié)點(diǎn)-永遠(yuǎn)不變且沒有重復(fù),可以作為數(shù)據(jù)檢索條件
} TMyRec;
?