楚楚留香
级别:精灵王 威望:6 经验:1 货币:2090 体力: 来源:218.63.89.* 总发帖数:590 注册日期:2001-04-17
|
|
查看 邮件 主页 QQ 消息 引用 复制 下载
TreeView的动态设定!我研究了一早上!从我的代码中复制来的!分享给爱好C++Builder的朋友!
//填充一个TreeView void __fastcall
TfrmMoneyManager::FormCreate(TObject *Sender) { TADOQuery
*pQuery=new TADOQuery(this);
pQuery->Connection=DMSource->cnCenter;
pQuery->Close(); pQuery->SQL->Clear();
pQuery->SQL->Add("Select * from User_Infor Where State=0
order by ID"); pQuery->Open(); if(!pQuery->Bof)
pQuery->First(); TTreeNode *
pRoot=trvwUsers->Items->Item[0]; while(!pQuery->Eof)
{ TTreeNode *
pNode=trvwUsers->Items->AddChild(pRoot,pQuery->FieldByName("User_Name")->AsString);
AnsiString * pID=new
AnsiString(pQuery->FieldByName("ID")->AsString);
pNode->Data=pID; pNode->ImageIndex=1;
pNode->StateIndex=1; pNode->SelectedIndex=1;
TTreeNode * pNodeChild;
pNodeChild=trvwUsers->Items->AddChild(pNode,"尚未使用的资金信息");
pNodeChild->Data=new int; *(int*)pNodeChild->Data=0;
pNodeChild->ImageIndex=2; pNodeChild->StateIndex=2;
pNodeChild->SelectedIndex=2;
pNodeChild=trvwUsers->Items->AddChild(pNode,"尚在使用的资金信息");
pNodeChild->Data=new int; *(int*)pNodeChild->Data=1;
pNodeChild->ImageIndex=2; pNodeChild->StateIndex=2;
pNodeChild->SelectedIndex=2;
pNodeChild=trvwUsers->Items->AddChild(pNode,"已使用结束的资金信息");
pNodeChild->Data=new int; *(int*)pNodeChild->Data=2;
pNodeChild->ImageIndex=2; pNodeChild->StateIndex=2;
pNodeChild->SelectedIndex=2;
pNodeChild=trvwUsers->Items->AddChild(pNode,"被注销掉的资金信息");
pNodeChild->Data=new int; *(int*)pNodeChild->Data=3;
pNodeChild->ImageIndex=2; pNodeChild->StateIndex=2;
pNodeChild->SelectedIndex=2;
pQuery->Next(); }
pQuery->Close(); delete pQuery;
pRoot->Expand(true); trvwUsers->Selected=pRoot; }
//处理Item的选择。 void __fastcall
TfrmMoneyManager::trvwUsersChange(TObject *Sender, TTreeNode
*Node) { switch(Node->Level) { case 0:
OpenWithSQL("select * from Charge_Infor,Pay_Infor Where
Charge_Infor.Pay_ID=Pay_Infor.ID Order by Charge_Infor.ID");
break; case 1: OpenWithSQL("select * from
Charge_Infor,Pay_Infor Where Charge_Infor.Pay_ID=Pay_Infor.ID And
Charge_Infor.User_ID="+ *(AnsiString *)Node->Data+ " Order by
Charge_Infor.ID"); break; case 2: OpenWithSQL("select *
from Charge_Infor,Pay_Infor Where Charge_Infor.Pay_ID=Pay_Infor.ID
And Charge_Infor.State="+IntToStr(*(int *)Node->Data)+" And
Charge_Infor.User_ID="+ *(AnsiString *)Node->Parent->Data+ "
Order by Charge_Infor.ID"); break; } }
void
__fastcall TfrmMoneyManager: penWithSQL(AnsiString
SQL) { if(qryCharge->Active) qryCharge->Close();
qryCharge->SQL->Clear();
qryCharge->SQL->Add(SQL); qryCharge->Open(); }
|