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

本文详细介绍了使用C++ Builder设计DBTreeView组件的方法,包括填充子节点、数据绑定、编辑节点和展开节点等功能。通过TQuery对象与数据库交互,实现了根据指定父ID动态加载子节点,并支持节点的编辑和数据更新操作。
摘要由CSDN通过智能技术生成
 

//续二

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;

TRichView 是Delphi/C++Builder 控件,主要用于显示、编辑和打印超文本文档。新版本解决多个兼容性问题,更新了字符串标签、剪贴板、RTF和DB组件。 兼容性问题 Item tags是字符串,不再是整数型 OnRVFPictureNeeded参数改变 TRichView.LoadText, LoadTextFromStream, SaveText, SaveTextToStream, TRichViewEdit.InsertTextFromFile 有了新的参数。 TRVLongOperation的声明类型已经改变 以下全局变量从RVTable.pas中移除:RichViewTableGridStyle, RichViewTableGridStyle2, RichViewTableGridColor,被替换为TRVStyle属性。 风格模板 默认情况下,风格模板不能被使用,需激活风格模板,设置TRichView.UseStyleTemplates = True。 在TRichViewEdit中,你可以应用指定的模板样式到选定区域,使用这些方法:ApplyStyleTemplate, ApplyTextStyleTemplate, ApplyParaStyleTemplate. 样式模板可用ChangeStyleTemplates方法编辑。 RTF TRichView.RTFOptions中的新选项:rvrtfSavePngAsPng。如果默认有这个选项,PNG图像也会被保存为PNG格式。 打印 表格行的新属性: KeepTogether; 新的表格方法: SetRowPageBreakBefore, SetRowKeepTogether; table.PrintOptions新选项: rvtoContinue; 新属性:TCustomRVPrint.IgnorePageBreaks。 旋转 表格单元格可旋转 90°, 180°或 270。 一个新的方法返回项坐标: GetItemCoordsEx; 它考虑到了单元格的旋转。 字符串标签 新属性:cell tags; 从13.2版本开始,项目标签是字符串(Unicode for Delphi 2009或更高,ANSI老版本的Delphi),从整数到PChar无需类型转换! 64-bit 32-bit 和 64-bit编译器均支持RAD Studio XE2+。 注意: TRVOfficeConverter 可以编译为64-bit应用程序,但列表的转换器将为空 (因为转换器是32-bit DLLs,不能再64-bit应用中使用)。 HTML存储 TRichView.SaveHTMLEx可保存扩展的背景图像; TRichView.SaveHTMLEx 能更好的保存列表标记 (无论是在常规或rvsoMarkersAsText 模式); TRichView.OnSaveImage2事件新增"hidden"参数。 DB组件 如果rvfoLoadBack在 RVFOptions中, TDBRichView会在加载数据前清空 BackgroundBitmap; 如果rvfoLoadBack在RVFOptions 和 FieldFormat=rvdbRVF中, TDBRichViewEdit会在加载数据前清空 BackgroundBitmap。 剪贴板 TRichViewEdit 可以粘贴URL,新增方法:PasteURL; 新属性:AcceptPasteFormats允许限制格式列表; 新属性:DefaultPictureVAlign定义一个对齐以粘贴和放置图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值