Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.06.16;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
15-1358964370
Mozart
2013-01-23 22:06
2013.06.16
Вырезать из множества jpg кусок


15-1360701005
Юрий
2013-02-13 00:30
2013.06.16
С днем рождения ! 13 февраля 2013 среда


2-1352477885
Signal
2012-11-09 20:18
2013.06.16
Другой вопрос по фреймам и IWebBrowser2


15-1359703096
DevilDevil
2013-02-01 11:18
2013.06.16
XML: Проект "ApolloSAX"


15-1359670971
картман
2013-02-01 02:22
2013.06.16
игра