如果更改了 CheckBox,如何使用 CheckBoxes 获取 FMX.TreeView 中的项目索引?

How to get Item index in FMX.TreeView with CheckBoxes if CheckBox was changed?

我正在尝试将 FMX.TreeView 与 CheckBox 一起使用,但找不到识别项目的方法,这触发了 TreeViewChangeCheck 事件。

我找到的所有解决方案都是关于 VCL.ComCtrls TreeView with TTreeNode class,但我使用的是 FMX.TreeView.

有人可以帮助我吗?谢谢

OnChangeCheck 事件属于 class TNotifyEvent。它的 Sender: TObject 参数告诉你是谁触发了事件。比如下面的代码

procedure TForm19.TreeView1ChangeCheck(Sender: TObject);
begin
  ShowMessage(Sender.ToString);
end;

可能会显示 TTreeViewItem 'TreeViewItem5'

或者,如果您想更改该项目的 属性,

procedure TForm19.TreeView1ChangeCheck(Sender: TObject);
begin
  if Sender is TTreeViewItem then
    if TTreeViewItem(Sender).IsChecked then
      TTreeViewItem(Sender).Text := 'Checked'
    else
      TTreeViewItem(Sender).Text := 'Not checked';
end;

或者,如果您确实需要该项目的索引:

  ShowMessage(IntToStr((Sender as TTreeViewItem).Index));