TScrollBox -> TCustomTreeView -> TTreeView 子項類型是 TTreeViewItem.
測試, 先在表單上放一個 TTreeView, 並需要它的 OnChange 事件:
unit Unit1;interfaceuses 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 := 0 to 19 do with TTreeViewItem.Create(Self) do begin Parent := item; Text := item.Text + '_' + IntToStr(i+1); 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;