TScrollBox -> TCustomTreeView -> TTreeView 子项类型是 TTreeViewItem.

测试, 先在窗体上放一个 TTreeView, 并需要它的 OnChange 事件:


unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Layouts, FMX.TreeView; type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Change(Sender: TObject);
  end; var
  Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject);
var
  item: TTreeViewItem;
  i: Integer;
begin
  TreeView1.Align := TAlignLayout.alLeft;
  TreeView1.UseSmallScrollBars := True;
  TreeView1.AlternatingRowBackground := True;
  TreeView1.ShowCheckboxes := True;   item := TTreeViewItem.Create(Self);
  item.Parent := TreeView1;
  item.Text := 'Item1';   item := TTreeViewItem.Create(Self);
  item.Parent := TreeView1;
  item.Text := 'Item2';
    for i := to do
      with TTreeViewItem.Create(Self) do
      begin
        Parent := item;
        Text := item.Text + '_' + IntToStr(i+);
        IsChecked := Odd(i);
      end;
  item.IsExpanded := True;   item := TTreeViewItem.Create(Self);
  item.Parent := TreeView1;
  item.Text := 'Item3';
end; procedure TForm1.TreeView1Change(Sender: TObject);
var
  item: TTreeViewItem;
begin
  item := TreeView1.Selected;
  if item <> nil then
  begin
    ShowMessageFmt(
      'TreeView1.GlobalCount: %d'#13#10 +
      'TreeView1.Count: %d'#13#10 +
      'TTreeViewItem.Count: %d'#13#10 +
      'TTreeViewItem.Level: %d'#13#10 +
      'TTreeViewItem.GlobalIndex: %d'#13#10 +
      'TTreeViewItem.Index: %d'#13#10
      , [TreeView1.GlobalCount, TreeView1.Count, item.Count, item.Level, item.GlobalIndex, item.Index]
    );
  end;
end; end.

成员概览:

{ TCustomTreeView }
public
  constructor Create(...); override; //
  destructor Destroy; override;      //
  procedure EndUpdate; override;    //结束更新
  procedure Clear;                  //清空
  procedure ExpandAll;              //全部展开
  procedure CollapseAll;            //全部关闭
  function ItemByText(...): TTreeViewItem;        //根据标题获取项
  function ItemByPoint(...): TTreeViewItem;      //根据位置获取项
  function ItemByIndex(...): TTreeViewItem;      //根据索引获取项
  function ItemByGlobalIndex(...): TTreeViewItem; //根据总索引获取项
  procedure AddObject(...); override;    //
  procedure RemoveObject(...); override; //
  procedure MouseDown(...); override;    //
  procedure MouseMove(...); override;    //
  procedure MouseUp(...); override;      //
  procedure KeyDown(...); override;      //
  procedure KeyUp(...); override;        //
  procedure DragOver(...); override;    //
  procedure DragDrop(...); override;    //
  property Count: Integer ...;          //第一层项总数
  property GlobalCount: Integer ...;    //项总数
  property CountExpanded: Integer ...;  //???
  property Selected: TTreeViewItem ...;  //当前选择的项
  property Items[Index: Integer]: TTreeViewItem ...;  //索引到项
  property AllowDrag: Boolean ...;                    //是否允许拖拽
  property AlternatingRowBackground: Boolean ...;      //是否使用交替背景
  property ItemHeight: Single ...;                    //项高
  property HideSelectionUnfocused: Boolean ...;        //是否在失去焦点时隐藏选择
  property MultiSelect: Boolean ...;                  //能否多选
  property ShowCheckboxes: Boolean ...;                //是否显示多选框
  property Sorted: Boolean ...;                        //
  property OnChange: TNotifyEvent ...;                //
  property OnChangeCheck: TNotifyEvent ...;            //
  property OnCompare: TOnCompareTreeViewItemEvent ...; //
  property OnDragChange: TOnTreeViewDragChange ...;    //
end; { TTreeView }
published
  property StyleLookup;                            //
  property CanFocus default True;                  //
  property DisableFocusEffect;                    //
  property TabOrder;                              //
  property AllowDrag default False;                //
  property AlternatingRowBackground default False; //
  property ItemHeight;                            //
  property HideSelectionUnfocused default False;  //
  property MultiSelect default False;              //
  property ShowCheckboxes default False;          //
  property Sorted default False;                  //
  property OnChange;                              //
  property OnChangeCheck;                          //
  property OnCompare;                              //
  property OnDragChange;                          //
end; { TTreeViewItem }
public
  constructor Create(...); override;        //
  procedure Paint; override;                //
  procedure AddObject(...); override;      //
  procedure RemoveObject(...); override;    //
  procedure Sort(...); override;            //
  function ItemByPoint(...): TTreeViewItem; //根据位置获取项
  function ItemByIndex(...): TTreeViewItem; //根据索引获取项
  property Count: Integer ...;              //子项数
  property GlobalIndex: Integer ...;        //全局索引
  function TreeView: TCustomTreeView;      //拥有它的 TreeView
  function Level: Integer;                  //在第几层
  function ParentItem: TTreeViewItem;      //父项
  property Items[Index: Integer]: TTreeViewItem ...; //索引到子项
published
  property IsChecked: Boolean ...;    //是否选中复选框
  property IsExpanded: Boolean ...;    //是否展开
  property IsSelected: Boolean ...;    //是否选择
  property AutoTranslate default True; //是否自动接收语言翻译
  property Font;                      //
  property StyleLookup;                //
  property Text;                      //
  property TextAlign default TTextAlign.taLeading; //
end;

Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem的更多相关文章

  1. Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid

    Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...

  2. Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit

    Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...

  3. Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox

    Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...

  4. Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo

    Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如:   Memo1.UseSma ...

  5. Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBox

    Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox.TVertScrollBox.TFramedScrollBox.TFramedVertScrollB ...

  6. Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu

    Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu.TMenuItem.TMenuBar.TMainMenu 相关控件: TMenuBar.TPopup ...

  7. Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览

    Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览 { TControl } public   constructor Create(...); ov ...

  8. Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm

    Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm 当我第一次读取 Form1.StyleLookup 并期待出现 "formstyle" 时 ...

  9. Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它

    Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它 TFmxObject 增加了 TagObject.TagFloat.TagString, 算 ...

随机推荐

  1. xml发post请求

    # python3字符串换行,在右边加个反斜杠 body = '<?xml version="1.0" encoding = "UTF-8"?>' ...

  2. AutoLayout and Sizeclasses讲解

    iOS8和iPhone6发布已经过去蛮久了,广大的果粉终于迎来了大屏iPhone,再也不用纠结为大屏买三星舍苹果了…但是对于iOS开发人员来说,迎来了和Android开发开发一样的问题—>各种屏 ...

  3. 使用MEMCACHED实现缓存

    什么是memcached Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fit ...

  4. shared_ptr的原理与应用

    new与赋值的坑 赋值(assignment)和new运算符在C++与Java(或C#)中的行为有本质的区别.在Java中,new是对象的构造,而赋值运算是引用的传递:而在C++中,赋值运算符意味着& ...

  5. 006-saltstack之远程执行

    1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...

  6. mysql5.7.26做主主配置

    一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.在 ...

  7. 洛谷P3374 【模板】树状数组 1&&P3368 【模板】树状数组 2题解

    图片来自度娘~~ 树状数组形如上图,是一种快速查找区间和,快速修改的一种数据结构,一个查询和修改复杂度都为log(n),树状数组1和树状数组2都是板子题,在这里进行详解: 求和: 首先我们看一看这个图 ...

  8. 【洛谷P2922】Secret Message

    题目大意:给定 N 个字符串组成的字典,有 M 个询问,每次给定一个字符串,求字典中有多少个单词为给定字符串的前缀或前缀是给定的字符串. 题解:在 trie 上维护一个 tag 表示有多少字符串以当前 ...

  9. 动态列表+动态样式(vue双向绑定)

    先上效果图 注:下面的几个值可以从其他地方获取,这边演示我是写死的 在上逻辑图 接着上代码template部分 <template> <div > <div> &l ...

  10. Kendo UI for jQuery使用教程:入门指南

    [Kendo UI for jQuery最新试用版下载] Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support ...