Как получить индекс элемента в FMX.TreeView с CheckBoxes, если CheckBox был изменен? - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь использовать FMX.TreeView с CheckBoxes, но не могу найти способ идентифицировать элемент, который вызвал событие TreeViewChangeCheck.

Все решения, которые я нашел, были о VCL.ComCtrls TreeView с TTreeNodeкласс, но я использую FMX.TreeView.

Кто-нибудь может мне помочь? Спасибо.

1 Ответ

1 голос
/ 08 ноября 2019

Событие OnChangeCheck относится к классу 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));
...