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. 优化 JS 条件语句及JS 数组常用方法, ---- 看完绝对对日后开发有用

    前言: 日常所说的优化优化.最后我们到底优化了哪些,不如让我们从代码质量开始:个人觉得简洁简化代码其实觉得存在感挺强烈的QAQ 1. 获取URL中 ?后的携带参数: 这是我见过最简洁的了,若有更简洁的 ...

  2. element样式调整用到的东西

    修改element 样式不能j加scoped 一般来说常常用!important,为了提高权重会用到>,有时发现/deep/其实还蛮好用,如下 .range { .el-input--mini ...

  3. Directed Roads CodeForces - 711D (基环外向树 )

    ZS the Coder and Chris the Baboon has explored Udayland for quite some time. They realize that it co ...

  4. 如何代替set get方法

    博主刚刚看其他人的博客的时候,发现好多人还在用 生成set get方法  虽然是自动生成的 但是看起来很复杂,影响代码的可读性 那么有什么办法能代替set  get方法吗? 当然有啦!!! 只需要导入 ...

  5. Python核心技术与实战——十三|Python中参数传递机制

    我们在前面的章节里学习了Python的函数基础以及应用,那么现在想一想:传参,也就是把一些参数从一个函数传递到另一个函数,从而使其执行相应的任务,这个过程的底层是如何工作的,原理又是怎样的呢? 在实际 ...

  6. angularjs 代码结构两种写法

    1.当路由中不写controller的时候,controller写在对应的html表单中 2.若要写在路由中,如下 3.转到相应的路由(页面) 1.采用location服务 2.采用 transiti ...

  7. MegaPixImage插件代码(new MegaPixImage)

    /** * Mega pixel image rendering library for iOS6 Safari * * Fixes iOS6 Safari's image file renderin ...

  8. webpack 搭建React(手动搭建)

    前言 最近真的都是在瞎学,看到自己不是很明白的东西,都喜欢自己手动去敲1到3遍(晚上下班的时候咯), 瞧,React  基于webpack 搭建,react 官方有一套手脚架工具,我自己也搭建过确实挺 ...

  9. springCloud——Dalston.SR5升级到Greenwich.SR2

    老项目: SpringBoot 版本 :1.5.13.RELEASE SpringCloud 版本:Dalston.SR5 项目升级: SpringBoot 版本 :2.1.6.RELEASE Spr ...

  10. 11.Linux date命令的用法

    date命令常的日常应用   修改时间 date -s “2008/05/23 19:20″ 打包文件 tar zcvf log-$(date +$F).gz /home/admin/logs 同步阿 ...