Как избежать TListView для запуска события OnSelectItem (c ++ Embarcadero)

В настоящее время я работаю с TListView на Embarcadero C ++, с объектами, которые могут содержать несколько тысяч элементов.
Я хочу настроить функцию CTRL + A, чтобы все элементы были выбраны одновременно. Мне удалось это сделать, однако при использовании myListView-> SelectAll (); он запускает событие OnSelectItem для каждого элемента (!!!), что может занять огромное количество времени.
Я пробовал BeginUpdate / EndUpdate, Enabled = false без результата вообще — т.е. OnSelectItem запускается для каждого элемента.
Даже если я установлю переменную для немедленного возврата из события OnSelectItem, это займет слишком много времени.

Есть ли простое решение, чтобы избежать тысяч событий, вызываемых при вызове SelectAll ()?

Спасибо за любую помощь.

2

Решение

Меня это не удивит, если это невозможно, но мне интересно, почему на вызовы OnSelectItem требуется так много времени для менее чем 100 000 элементов … возможно, вам просто нужно улучшить производительность управления OnSelectItem, например, просто вернитесь из них, если вы находитесь в середине SelectAll

Добавлено после некоторых комментариев:

да, TListView не предназначен для работы с таким количеством элементов, я не вижу ни одного пользователя, прокручивающего столько строк, в любом случае, кажется, что это будет намного быстрее, если вы сделаете это в другом потоке как они рекомендуют в этой статье Embarcadero

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]