Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1360232154
Interrupt Directive
2013-02-07 14:15
2013.06.16
Внешний диск - не работает.


15-1360300655
alexdn
2013-02-08 09:17
2013.06.16
Косм телескоп Джеймс Вебб


15-1360259305
Ega23
2013-02-07 21:48
2013.06.16
Внезапно возник вопрос


15-1360269005
Юрий
2013-02-08 00:30
2013.06.16
С днем рождения ! 8 февраля 2013 пятница


15-1359807822
Дмитрий С
2013-02-02 16:23
2013.06.16
Стартовый бит rs232





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский