Работа с кнопками в TListView

Я создал TListView в своей форме, изменил ItemAppearance на DynamicAppearance. В структуре я выбрал ListView1> ItemAppearance> Item> Add New...> и выбрал TTextButtonObjectAppearance.

Хорошо, теперь я хочу знать, как я могу установить событие OnClick в этой кнопке, потому что, когда я дважды щелкаю вкладку «Код», не открывается, а на вкладке «Событие» в инспекторе объектов нечего выбирать.


person Diego Bittencourt    schedule 05.05.2017    source источник


Ответы (2)


Установите для AppearenceObjectName кнопок значение Удалить и Изменить.

procedure TForm2.ListView1ButtonClick(const Sender: TObject;
  const AItem: TListItem; const AObject: TListItemSimpleControl);
begin
  if AObject.name = 'Delete' then
    showmessage('Delete')
  else if AObject.Name = 'Edit' then
    showmessage('Edit');
end;
person Kohull    schedule 05.05.2017
comment
Спасибо за помощь. Я поместил этот код в событие OnButtonClick моего listView. Проблема возникает, когда я нажимаю кнопку (кнопку редактирования, а не элемент listView). Похоже, что на кнопке нет коллайдера, щелчок просто игнорирует hiim и переходит к элементу (из listView). - person Diego Bittencourt; 05.05.2017
comment
Вы изменили AppearenceObjectName кнопок? - person Kohull; 05.05.2017
comment
Я не думаю, что смогу сделать это на Инспекторе. Но я понимаю, как заставить это работать, просто проверьте имя кнопки и вызовите правильный метод на основе этой информации. Спасибо за помощь человеку! - person Diego Bittencourt; 09.05.2017

Заполнить список

  with ListView1.Items.Add do
  begin
    Text := 'Item';
    Data['dateUpdate'] := '09.05.2017';
  end;

Событие OnItemClickEx

procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: Integer; const LocalClickPos: TPointF;
  const ItemObject: TListItemDrawable);
begin
  if ItemObject.Name.Equals('dateUpdate') then
    ShowMessage('AppearenceObjectName = "dateUpdate"');
end;
person ZuBy    schedule 08.05.2017