Как при нажатии на кнопку переносить значение DevExpress treelist в memo?

Рейтинг: 1Ответов: 1Опубликовано: 13.02.2023

Как при нажатии на кнопку переносить значение в memo?

procedure Tnov_zam.cxdbtrlstclmnlst21cxDBTreeListColumn1PropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
mmo2.Lines.Add(lst21.DataController.DataSource.DataSet.FieldByName('Text_1').asstring;
end;

Данный код как пример и он не работает. Он должен переносить выбранное значение в компонент memo, но этого он не делает.

Понял, что при нажатии на кнопку в treelist процедура не исполняется даже, с чем это может быть связано?

Ответы

▲ 1Принят

В примере из вопроса указан ивент нажатия на кнопку типа ButtonEdit внутри ноды, указанная в properties одного из Column, в целях упрощения представления выдачи данных из ноды, я буду использовать простую кнопку. Чтобы вытащить данные из ноды, воспользуйтесь идентифицированием ноды через FocusedNode. (FocusedNode возвращает ноду на которой установлен фокус, следовательно ноду необходимо выделить, например, путем клика по ней).

Пример на VCL

Пример на VCL

procedure TForm1.btn1Click(Sender: TObject);
var
  s:string;
  node:TcxTreeListNode;
begin
  node:=lst1.FocusedNode;
  s:= node.Values[cl1.ItemIndex] + ' | ' + node.Values[cl3.ItemIndex] + ' | ' + node.Values[cl3.ItemIndex] ;
  mmo1.Lines.Add(s);
end;

При выделении ноды и нажатии на кнопку произойдет перенос данных на Memo

введите сюда описание изображения

P.S. Чтобы упростить еще больше, можно использовать ивент OnFocusedNodeChanged для TcxTreeList (не для TcxTreeListColumn или TcxTreeListNode) , так же работает и с OnFocusedColumnChanged