TListbox - OnChangeEvent не срабатывает надежно при множественном выборе

Использую XE7 и FMX.

Моя проблема в том, что OnChange-Event для TListbox неправильно работает с множественным выбором (он не срабатывает каждый раз, когда происходит изменение).

Действия по воспроизведению:

  • Создайте FMX-приложение и добавьте TListbox в его форму.
  • Добавить элементы в этот список.
  • Установите MultiSelectStyle в Listbox на default.
  • Обработайте событие OnChangeEvent (установите точку останова или сделайте что-нибудь ...).
  • Теперь запустите проект и щелкните по первому элементу -> OnChange выполняется.
  • Но если первый элемент будет нажат снова, OnChange не будет выполнен.

Кто-нибудь может сказать мне, как я могу это исправить, чтобы каждый раз при изменении выбора я получал событие.


person Rynardald    schedule 21.12.2015    source источник
comment
используйте событие onClick, чтобы справиться с этим. Выбранный элемент не изменяется при повторном щелчке.   -  person sddk    schedule 21.12.2015


Ответы (1)


Из документации FMX.ListBox.TCustomListBox.OnChange:

Происходит при изменении выбора в списке. Напишите обработчик события OnChange для выполнения определенного действия сразу после выбора нового элемента или элементов в поле списка.

Вместо этого используйте событие OnClick или OnItemClick, чтобы отслеживать, когда пользователь повторно выбирает тот же самый выбор. И сохраните обработчик OnChange для всех новых выделений.

person LU RD    schedule 21.12.2015
comment
OnClick срабатывает, только если элемент выбран с помощью мыши, и не срабатывает, если элемент выбран с помощью клавиатуры. - person Rynardald; 21.12.2015
comment
@Rynardald, вы будете использовать событие onClick для обработки повторного щелчка по выбранному элементу. для других вы будете использовать onChange - person sddk; 21.12.2015