Форум: "Начинающим";
Текущий архив: 2013.06.16;
Скачать: [xml.tar.bz2];
ВнизListView - текущее кол-во выделенных строк в режиме "Multiselect" Найти похожие ветки
← →
Tcount © (2012-11-10 02:18) [0]Мне нужно знать, сколько в данный момент выделено строк в ListView. Чот не могу сообразить как...
Все работает, если считывать ListView.SelCount, но у меня стоит свойство Multiselect:=true и при выделении при зажатой SHIFT SelCount почему-то возвращает ноль...
Проходиться по всем строкам и проверять на ListView.Items[i].selected - не вариант, так как у меня огромное кол-во строк...
P.S. Использую виртуальный ListView
← →
kilkennycat © (2012-11-10 02:23) [1]
> Проходиться по всем строкам и проверять на ListView.Items[i].
> selected
не надо, потому что можно считать
> при выделении при зажатой SHIFT
← →
Tcount © (2012-11-10 02:28) [2]
> не надо, потому что можно считать
Немного не понял, поясните, пожалуйста, это как считать?
Нажатие SHIFT я-то определю, но как узнать, сколько выделено с помощью него строк?
← →
kilkennycat © (2012-11-10 02:28) [3]и еще посмотри GetNextltem, если лень самому осуществлять поиск.
← →
kilkennycat © (2012-11-10 02:32) [4]
> но как узнать, сколько выделено с помощью него строк?
ну как... есть два варианта. если тебе просто кол-во нужно, то создается переменная, после чего при клике мышью или кнопки на клаве инсерт(?) определяется, что происходит с итемом, выделен он или нет. если он был выделен, а перестал - декрементируем переменную, если наоборот - инкрементируем, что тут непонятного?
если нужен список выделенных для дальнейшего быстрого доступа - значит, создаем список с индексами...
← →
Tcount © (2012-11-10 02:43) [5]
> ну как... есть два варианта. если тебе просто кол-во нужно,
> то создается переменная, после чего при клике мышью или
> кнопки на клаве инсерт(?) определяется, что происходит
> с итемом, выделен он или нет. если он был выделен, а перестал
> - декрементируем переменную, если наоборот - инкрементируем,
> что тут непонятного?
> если нужен список выделенных для дальнейшего быстрого доступа
> - значит, создаем список с индексами...
Например...У меня есть пару тысяч строк, я выделяю обычным образом несколько десятков строк в разных местах через Ctrl+клик мышкой...Потом перехожу в любое место и нажимаю уже SHIFT+клик мышкой...И получается непонятно что выделено.
← →
Tcount © (2012-11-10 02:48) [6]В принципе, до меня ток щас дошло, что лучше запоминать последний нажатый Итем и при нажатии на SHIFT вычитать из текущего предыдущий (или наоборот, если последний меньше предыдущего)
← →
kilkennycat © (2012-11-10 02:52) [7]ну тогда вся надежда на сендмессадж LVM_GETSELECTEDCOUNT
← →
Tcount © (2012-11-10 02:58) [8]kilkennycat, спасибо за отклик)
перехват сообщения тоже вариант, но я щас на практике просто попробовал проверять ListView.Selcount при событии OnMouseDown ListView"a и он чудесным образом справляется)
Оказывается, все намного проще)
← →
kilkennycat © (2012-11-10 03:02) [9]
> Tcount © (10.11.12 02:48) [6]
лучше отлавливать сообщение изменения итема (LVN_ITEMCHANGING)
и выполнять проверку для него на выделение (LVM_GETSELECTIONMARK).
← →
kilkennycat © (2012-11-10 03:03) [10]
> Tcount © (10.11.12 02:58) [8]
очень странно, ибо в доке четко сказано, что при мультиселекте соунт всегда равен 1
← →
Dennis I. Komarov © (2012-11-10 09:25) [11]Чтобы пробежаться по выделенному списку, количество выделенных узлов не требуется...
← →
Smile (2012-11-10 10:13) [12]> Tcount © (10.11.12 02:43) [5]
Например...У меня есть пару тысяч строк ...
Это форменное издевательство над пользователем
:(
← →
Tcount © (2012-11-10 12:31) [13]
>
> Это форменное издевательство над пользователем
> :(
Ну почему же издевательство?))
Я пишу интернет-радио, у меня есть два ComboBox"a (один для жанра, другой для страны), если выбраны жанр "все" и страна "все", ты выводится весь список)
Если ты имеешь ввиду скорость вывода, то здесь все нормально, так как это виртуальный ListView)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.06.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c