Delphi中的TreeView

以前总是循环展开,现在有这个属性,就简单多了
RzTreeView_DWDept.FullExpand;  这样就可以全部 展开了。
还有一个问题,设置节点选中
RzTreeView_DWDept.SetFocus;
if RzTreeView_DWDept.Selected = nil then
      RzTreeView_DWDept.Selected := RzTreeView_DWDept.Items.Item[0];
这个的重点是  RzTreeView_DWDept.SetFocus; 如果当前焦点没有在树上,你怎么设置都不起作用。

**************************************************************
.1.添加、删除、修改节点:
静态的方法可以在设计时通过Items的编辑器设置各节点的内容。
在添加和删除前必须保证有节点被选中(Treeview.Selected = nil)
用AddFirst, AddFirstChild, AddChild等先添加根节点,如Treeview.Items.AddFirst( nil, ‘Root‘);
然后以此为基础,添加此项的子节点。

删除节点
Treeview.Selected.Delete

编辑节点内容
Treeview.Selected.EditText

注意:由于根节点没有父节点 (TTreeNode.Parent= nil)
此外,在大批量添加数据到Treeview中时最好使用
  TreeView.Items.BeginUpdate;
  添加节点
  TreeView.Items.EndUpdate
这样能加快显示速度。

2.在节点上添加图象
Treeview中几个与图象相关的属性:
  SelectedIndex:当节点被选中时在TimageList 中选什么样的图象
  OverlayIndex:选那副图象作为掩图(一幅图象透明地显示在另一幅图象的前面),比如一个节点不可用时加一副X图象在其前面。
  ImageIndex:在常态时选用的图的序号
  StateIndex: 在StateImages这个ImageList中对应的序号,-1时不显示图象
   比较典型的,象在文件管理器中的所显示的一样,Treeview控件在节点之前也可以显示图象。在Form中放置一ImageList控件,加入几个图 片,分别被Index为0,1,…在Treeview的Image属性项填入你所加入的ImageList的控件名称。TreeNode的 ImageIndex表示节点未被选中时(Selected=nil)的图片序号,SelectedIndex表示节点被选中时图片序号。

3.关于Level
Level的概念可以用下图表示:
Level0   Level1 Level2

4.排序
SortType决定什么时候进行排序;
TreeView.AlphaSort对节点进行排序,如果不能满足要求,你可以定义自己的CustomSort方法。

5.Drag&Drop操作,与标准的拖放操作使用方法一样

下面是我写的一个TREEVIEW小程序的代码   
  var       rootnode,subnode,personnode,matenode:ttreenode;   
              i,j,k:integer;   
      begin   
      rootnode:=tv1.items.add(nil,‘公司‘);   
      qrymaster.Close;   
      qrymaster.sql.add(‘select   *   from   master‘);   
      qrymaster.Open;   
      qrymaster.First;   
      for   i:=0   to   qrymaster.RecordCount-1   do   
      begin   
                  subnode:=tv1.Items.Addchild(rootnode,qrymaster.FieldByName(‘company‘).AsString);   
              //原形:rootnode=tv1.items.add(nil,string);   
              //       rootnode.ImageIndex   :=0;   
              //       rootnode.stateIndex   =0;   
                    qrysub.Close;   
                    qrysub.SQL.clear;   
                    qrysub.SQL.Add(‘select   *   from   submaster   where   companyid=:dd‘);   
                    qrysub.ParamByName(‘dd‘).asinteger:=qrymaster.FieldByName(‘companyid‘).asinteger;   
                    qrysub.Open;   
                    qrysub.First;   
                      for   j:=0   to   qrysub.RecordCount-1   do   
                      begin   
                            personnode:=tv1.Items.AddChild(subnode,qrysub.FieldByName(‘personname‘).AsString);   
                            //   subnode.ImageIndex   :=-1;   
                            //   subnode.StateIndex   :=-1;   
                            qrymate.close;   
                            qrymate.sql.clear;   
                            qrymate.sql.add(‘select   *   from   comunication   where   personid=:personid‘);   
                            qrymate.parambyname(‘personid‘).asinteger:=qrysub.fieldbyname(‘personid‘).asinteger;   
                            qrymate.open;   
    
                            for   k:=0   to   qrymate.recordcount-1   do   
                              begin   
                              matenode:=tv1.items.addchild(personnode,qrymate.fieldbyname(‘name‘).asstring);   
                              qrymate.next;   
                              end;   
                              qrysub.Next;   
                      end;   
    
              qrymaster.Next;   
          end;   
        end;

原文地址:https://www.cnblogs.com/cinemaparadiso/p/8256882.html

时间: 2024-11-07 09:54:38

Delphi中的TreeView的相关文章

Delphi中根据分类数据生成树形结构的最优方法

一. 引言:    TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能,因而受到广大程序员的青睐.    树形结构在Windows环境中被普遍应用,但在数据库开发中面对层次多.结构复杂的数据,如何快速构造树形目录并实现导航呢?    二. 实现关键技术:    在Delphi提供的控件中包含了TreeView控件,但树的具体形成还需要用户编写代码.即它的列表项要在程序

Delphi中的TChart使用用法

1.TChart Hello world 放一个控件到窗体上,然后写代码加入一个折线数据序列: var Series: TLineSeries; begin Series := TLineSeries.Create(Chart1); Series.Add(100, '头部', clRed); Series.Add(200, '颈部', clGreen); Chart1.AddSeries(Series); end; 这样就会生成一个简单的折线图表,要生成其它类型的数据图表,可以添加不同的数据序列

Delphi中SendMessage使用说明 good

Delphi中SendMessage使用说明 SendMessage基础知识 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回. 函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam): 参数: hWnd:其窗口程序将接收消息的窗口的句柄.如果此参数为HWND_BRO

delphi中SendMessage使用说明

SendMessage基础知识 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回. 函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam): 参数: hWnd:其窗口程序将接收消息的窗口的句柄.如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗

delphi中的Format函数详解

首先看它的声明:[[email protected]][@21ki!] function Format(const Format: string; const Args: array of const): string; overload;[[email protected]][@21ki!] 事实上Format方法有两种形式,另外一种是三个参数的,主要区别在于它是线程安全的,[[email protected]][@21ki!]但并不多用,所以这里只对第一个介绍:[[email protect

老陈---谈Delphi中SSL协议的应用[转]

摘要:本文主要介绍如何在Delphi中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2)Delphi中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)SSL证书编程实例.(6)中间人欺骗实例.(7)其它.本文作者同时有一个用SSL协议编写的作品叫SSLPROXY,感兴趣的读者可以从作者主页http://www.138soft.org下载. 一:SSL协议是什么?  SSL是一种加密传输协议.引用网上一段话:SSL 是Secure socket La

Delphi中Android运行和JNI交互分析

Androidapi.JNIBridge负责和JNI交互.,既然要交互,那么首先就是需要获得JNI的运行环境,Android本身内置的就有一个Java(Dalvik)虚拟机.所以这个第一步就肯定是要这个虚拟机和我们当前的运行线程环境关联.这时候Androidapi.JNIBridge中的TJNIResolver就出场了.GetJNIEnv这个函数就是, [delphi] view plaincopy class function TJNIResolver.GetJNIEnv: PJNIEnv;

Delphi中的消息处理

1.windows的消息驱动体系  在windows系统中,消息传递是实现对乡间通信和控制的主要手段.可以额系统都以消息驱动的方式工作.系统中发生的用户输入操作.显示信息的改变.系统环境参数变化等所有时间都以系统定义消息的形式出现在相关的应用程序和窗口.所以程序设计的主要任务就是为这些消息的处理设计代码. 在应用程序中,发送者可以通过发送消息要求接收者完成相应的处理.当程序运行时,windows系统为每个应用程序实例建立一个消息队列,一次保存发送给该程序实例的消息,在应用程序的主控部分,需要设置

关于Delphi中的字符串的详细分析

关于Delphi中的字符串的详细分析 只是浅浅的解析下,让大家可以快速的理解字符串. 其中的所有代码均在Delphi7下测试通过. Delphi 4,5,6,7中有字符串类型包括了: 短字符串(Short String) 长字符串(Long String) 宽字符串(Wide String) 零结尾字符串(Null-Terminated String).PChar和字符数组 1.短字符串(Short String) 固 定长度,最大字符数个数为255,短字符串也成为长度字节(Length-byt