C++ Builder高手进阶 (三)用BCB设计DBTreeView组件(续二)

 

//续二

void __fastcall TDBTreeView::FillChildTreeNodes(int ParentID, TTreeNode* Node, bool Nest)

{//用指定值填充子节点

    TQuery* AQuery = new TQuery(this);//创建一个数据集控件

    AnsiString strSql, strText;

    int iID, iParentID;

    int iImageIndex, iSelectedIndex;

    TTreeNode* TreeNode;

    TDBTreeNodeData NodeData;

    //设置数据集的各项参数

    AQuery->DatabaseName = ((TTable*)(FDataLink->DataSource->DataSet))->DatabaseName;//设置数据库名

    AQuery->Close();//关闭数据集

    AQuery->SQL->Clear();//清空原SQL语句

 

    strSql = "SELECT * FROM " + ((TTable*)(FDataLink->DataSource->DataSet))->TableName + " WHERE ";

    strSql += FParentIDField + "=:PID";

 

    AQuery->SQL->Add(strSql);//指定新的SQL语句

    AQuery->ParamByName("PID")->AsInteger = ParentID;

    AQuery->Open();//打开数据集

 

    this->Items->BeginUpdate();//开始更新DBTreeView组件显示

 

    while (!AQuery->Eof)//未到数据集尾部

    {

        strText = AQuery->FieldByName(FDisplayField)->AsString;//取得显示字段内容

        iID = AQuery->FieldByName(FPrimaryIDField)->AsInteger;//取得主标识字段内容

        iParentID = AQuery->FieldByName(FParentIDField)->AsInteger;//取得父标识字段内容

 

        TreeNode = this->Items->AddChild(Node, strText);//将上面取得的相关数据追加到新节点

        iImageIndex = iSelectedIndex = -1;//设置节点位图与选中时位图

        if (FOnSetImageIndex) FOnSetImageIndex(this, iID, iParentID, TreeNode->Level, iImageIndex, iSelectedIndex);//如果设置位图发生变化,则触发相关事件

        TreeNode->ImageIndex = iImageIndex;//设置节点位图及选中时位图

        TreeNode->SelectedIndex = iSelectedIndex;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值