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