Я обнаружил ошибку, связанную с TTreeView
.
- Примите форму, содержащую
TTreeView
с HideSelection
, установленным на True
. - Сделайте множественный выбор древовидного представления и выберите несколько элементов в древовидном представлении.
- Покажите другую форму, чтобы ваше приложение имело две формы.
- Задайте фокус на древовидном представлении, а затем нажмите надругая форма.
Результат выглядит следующим образом:
Но на самом деле не должно быть выделенных элементов.Интересно, что последний элемент выбран, и он больше не выделяется, как и все остальные элементы.Похоже, что последний нажатый элемент - это тот, который получает специальную обработку.
Если вместо этого щелкнуть поле редактирования (или любой другой элемент управления, который фокусируется), то все элементы будут правильно скрыты.Поэтому вполне нормально, чтобы фокус переместился на другой элемент управления в форме - проблема, по-видимому, сводится к деактивации формы.
Я обнаружил методом проб и ошибок, что можно исправить это, вызвав Invalidate
надревовидное представление всякий раз, когда форма деактивируется и активируется (необходимо предотвратить зеркальное отображение ошибки).Тем не менее, я ищу лучшего понимания того, что является ошибкой и как ее исправить менее инвазивным способом, то есть на уровне древовидной структуры, а не на уровне формы содержания.
Итак, чтобы подвести итог,мои вопросы:
- Что именно вызывает проблему?
- Как я могу это исправить без написания кода, который перехватывает
TForm
события?
Отправил вопрос как QC # 94908 .