`
ivfh
  • 浏览: 59934 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

一种较简易的树型控件节点构造法

阅读更多

把数据库中的数据在树型控件(TreeView)中正确显示是较为不易,我在实际编程中经常为之头痛,也使用了不少方法,后来仔细研究了cxDBTreeList控件,受到启发解决了问题:
1、 创建一个表,为简化程序,只创建三个数据字段,定义如下:
字段名 类型 长度 说明
Mytext nvarchar 50 要显示的文字
MyID int 4 主关键ID,(可使用自动编号)
MYParentID int 4 记录父主关键ID,无父节点是时为0
2、窗体中放置一个TreeView控件;
2、使用数据控件连接该数据表(本例中使用ADOTable);
3、声明一个过程:

procedure MyNode(MyParentID:string;MyNodeT:TTreeNode);

 4、过程代码:

procedure TA_FinanceSubjec.MyNode(MyParentID: string;MyNodeT:TTreeNode);
type
  PMyList = ^AList;
    AList = record
    MyParendID: string;
    MyNodeP: TTreeNode ;
  end;
var
  ATempList: TList;
  I: Integer;
  ARecord:PMyList;
  s:string;
  node:TTreeNode;
begin
   ADOTable1.Filtered:=true;
   ADOTable1.Filter:=' MYParentID ='+MyParentID;
   if ADOTable1.RecordCount<1 then exit;
   ATempList := TList.Create;
   try
    ADOTable1.First;
    while not ADOTable1.Eof  do
    begin
       New(ARecord);
       s:='('+ADOTable1MyID.AsString +')'+ ADOTable1Mytext.AsString  ;
       node:= TreeView1.Items.AddChild(MyNodeT   ,s) ;
       ARecord^.MyParendID:= ADOTable1Mytext.AsString  ;
       Arecord^.MyNodeP  :=node;
       ATempList.Add(Arecord);
       ADOTable1.Next;
      end;
     for I :=0 to ATempList.Count - 1 do
     begin
       Arecord:=ATempList.Items[i];
       MyNode(Arecord^.MyParendID,Arecord^.MyNodeP );
       end;
   finally
    for I := 0 to ATempList.Count - 1 do
      Dispose(ATempList[I]);
    ATempList.Free;
    ADOTable1.Filtered:=false;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 ADOTable1.DisableControls;
 if ADOTable1.Active then
     ADOTable1.Active:=false;
     ADOTable1.Active:=true;
     ADOTable1.First;
     MyNode('0',nil  );
  ADOTable1.EnableControls;     
end;

 

5、改变节点位置时(在OnDragDrop中实现):

var iPos1:integer;s:string;
begin
  ipos1:= pos(')', TreeView1.Selected.Parent);
 if ipos1>1 then
   begin
  s:=copy(RzTreeView1.Selected.Text,2,iPos-2);
  ADOTable1.Locate('MyID',s,[loPartialKey]);
ADOTable1.edit;
   ADOTable1MYParentID.asinteger:=
    StrToInt(copy(TreeView1.Selected.Parent,2, ipos1-2)) ;
ADOTable1.post;
  End;

 

(出处:DelphiFans.com)

分享到:
评论

相关推荐

    树型控件代码

    在Windows API中,树型控件(HTREEITEM)是一种窗口控件,它可以展示多级数据结构,每一级称为一个节点,节点之间通过父节点与子节点的关系构成树状结构。用户可以通过展开和折叠节点来查看或隐藏子节点,这种控件...

    树型控件 java.rar

    在Java编程领域,树型控件(Tree View)是一种常用的数据可视化组件,它允许用户以层级结构展示数据,常用于文件系统、组织架构或者复杂的分类系统等场景。本压缩包"树型控件 java.rar"包含了一个使用Java实现的树型...

    树型控件(视图)VC源代码:treepropertysheet_help

    在MFC中,树型控件通常由`CTreeCtrl`类表示,提供了一系列的方法来操作控件,如添加、删除、修改节点等。 描述中的`treepropertysheet`可能是一个自定义的对话框类,它扩展了标准的`CPropertySheet`类,增加了树型...

    为Flex Tree控件构造树形结构数据

    Flex是一种基于ActionScript和MXML的开源框架,常用于构建富互联网应用程序(RIA)。Tree控件在Flex中扮演着重要角色,它允许用户以图形化的方式浏览和操作层级结构的数据。 首先,我们要理解Flex Tree控件的基础。...

    树型控件(视图)VC源代码:DirTreeCtrl_src

    在Windows应用程序开发中,树型控件(Tree Control)是一种常见的用户界面元素,它以层级结构展示数据,适用于目录浏览、文件系统管理等多种场景。在MFC(Microsoft Foundation Classes)框架下,我们通常会使用`...

    VC++树状图控件的使用

    在VC++编程环境中,树状图控件,也被称为树型视图控件(Tree Control),是一种常用的用户界面元素,用于展示数据的层次结构。它广泛应用于文件浏览器、应用程序设置菜单以及各种配置工具中,因为它能清晰地表示具有...

    js 简易的日历控件

    JavaScript(简称JS)是一种轻量级的脚本语言,常用于网页交互和动态效果的实现。在本案例中,我们讨论的是一个“js简易的日历控件”,它旨在提供类似于QQ邮箱中简洁版日历的功能,适合作为网页左下角或后台管理页面...

    树型javascript

    JavaScript中的树型结构是一种数据组织方式,它模拟了自然界中的树状结构,具有层次分明、节点间存在父子关系的特点。在编程中,树形结构常用于实现如文件系统、组织结构、网页DOM(文档对象模型)等场景。在这个...

    CTreeCtrl(树状控件)用法源代码

    CTreeCtrl是MFC(Microsoft Foundation Classes)库中提供的一种控件,用于在Windows应用程序中创建和管理树形视图。这种控件常用于显示层级结构的数据,如文件系统、组织结构或菜单。本篇文章将深入探讨CTreeCtrl的...

    易语言设置树型框连线颜色

    树型框是常见的一种控件,它通常用于显示层次结构的数据,比如文件系统或者组织结构。在树型框中,各个节点之间通过连线表示它们的父子关系。而本主题讨论的是如何改变这些连线的颜色,以达到个性化或高亮显示的目的...

    Android树形控件

    在Android开发中,树形控件(TreeView)是一种常见的用户界面元素,用于展示层次结构的数据。通常,我们可能会使用ListView、RecyclerView等控件来模拟实现树形结构,尤其是在数据层级不固定或者层级较深的情况下。...

    树形控件(源程序)

    树形控件在计算机编程,特别是用户界面设计中,是一种常用的数据展示组件。在MFC(Microsoft Foundation Classes)框架下,树形控件是用于构建Windows应用程序的重要工具,它允许用户以层次结构的方式查看和操作数据...

    vc树形控件源码,希望能对大家有所帮助。

    在Windows编程领域,树形控件(TreeView Control)是一种常用且功能强大的用户界面元素,它允许用户以层次结构的方式查看和操作数据。本资源提供的"vc树形控件源码"是一个面向Visual C++开发者的实践示例,旨在帮助...

    C#下拉框中显示树控件

    总的来说,“C#下拉框中显示树控件”是一种提高用户界面交互性的设计,它结合了下拉框的简洁性和树控件的层次性,是开发中的一种实用技巧。通过理解和掌握以上知识点,开发者可以有效地实现这一功能,并为用户提供更...

    三状态树控件及源代码

    本主题涉及的是一个名为“三状态树控件”的自定义控件,该控件扩展了传统的二状态(选中和未选中)树形控件,增加了第三种状态,通常称为“半选中”或“不确定状态”。这个控件可能是用C#编程语言实现的,因为它在...

    由特定数据库表格式(3个字段)生成TreeView树型

    在IT领域,尤其是在Windows应用程序开发中,经常需要将数据库数据以图形化的方式展现给用户,TreeView控件就是一种常见的选择。本项目似乎涉及到一个使用Delphi编程语言开发的应用,其目标是根据特定的数据库表...

    c#用树型列表动态显示菜单源码.rar

    在C#编程中,树型列表(TreeView)是一种常见的用户界面元素,用于展示层次结构的数据。这个"用树型列表动态显示菜单源码"的压缩包包含了一个示例项目,教你如何利用C#来实现这样的功能。下面我们将深入探讨相关的...

    Java目录树控件

    在Java编程语言中,构建一个目录树控件是常见的需求,尤其在开发文件管理系统或桌面应用程序时。这个控件能够直观地展示文件系统的层级结构,使用户能够方便地浏览和操作文件和文件夹。以下是对如何实现Java目录树...

    MFC树形控件实例

    本实例主要关注的是MFC中的树形控件(TreeCtrl),它是一种常见的图形用户界面元素,常用于展现层次结构的数据。MFC TreeCtrl为开发者提供了丰富的功能,如添加、删除节点,以及设置节点的图标和状态。 首先,让...

Global site tag (gtag.js) - Google Analytics