2016-11-22 10 views
0

Я скрыл некоторые элементы VirtualTreeView, используя VirtualTree.IsVisible[n] := false;.Как выбратьВсе только видимые элементы VirtualTreeView?

В одной функции я повторяю все выбранные элементы, используя метод VirtualTree.GetNextSelected(n);. Но есть проблема: если я вручную выберу несколько элементов, например, используя CTRL-клик или SHIFT, выбираются элементы, которые получают петлю.

Но если я нажимаю CTRL + A, чтобы выбрать все, то GetNextSelected дает мне все узлы, в том числе скрытые.

Я сделал обходное решение, проверив if (VirtualTree.IsVisible[n]) ..., чтобы избежать прокрутки всех элементов и выбрать только видимые, но это похоже на ошибку, или, возможно, есть опция, которая контролирует поведение CTRL + A - будет ли она выбирать только видимые узлы или все они?

Так это ошибка или, может быть, я пропустил какой-либо вариант выбора (я их изучил), или я должен использовать какой-либо другой метод для циклирования только через видимые узлы?

+2

Это выбор дизайна, а не ошибка. Вам придется приспособиться к нему. –

+1

@DavidHeffernan Вы уверены, что это так? Почему при выборе клавиш клавиатуры SHIFT + ARROW выбираются только видимые узлы, а не все заметки между видимыми узлами, которые скрыты? Странно, что CTRL + A будет выбирать скрытые, но SHIFT + Arrow не будет? – Coder12345

+2

Что касается CTRL + Virtual TreeView ведет себя как большинство других элементов управления и Проводника Windows, для пользователя было бы неожиданным поведение, и, по моему мнению, это был бы плохой выбор. –

ответ

1

Как видно Дэвиду Хеффернану и Йоахиму Мардеру, это выбор дизайна, а не ошибка. По этой причине необходимо ввести обходной путь при переходе через элементы с использованием GetNextSelected, проверив if (VirtualTree.IsVisible[n]) ... на цикл только через видимые элементы.