Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

События ListView   Найти похожие ветки 

 
hermit   (2005-12-12 17:38) [0]

Как отследить изменение свойства Checked у элемента списка ListView ? Т.е. когда пользователь снимает/ставит галочку рядом с элементом списка.


 
begin...end ©   (2005-12-12 18:05) [1]

Галочку можно поставить или снять, по крайней мере, двумя способами -- мышью или клавишей "Пробел".

Если нужно отслеживать только первый способ, то обрабатывайте событие OnMouseDown и проверяйте, не попал ли курсор мыши в область с checkbox"ом (вызывайте метод GetHitTestInfoAt и сравнвиайте результат с htOnIcon).

Если требуется реагировать и на второй способ, сделайте обработку OnKeyDown и проверяйте, какой item был выбран в момент нажатия "пробела".

Но правильнее (и универсальнее) будет, ИМХО, обрабатывать уведомления LVN_ITEMCHANGED, отправляемые списком родительскому окну в форме WM_NOTIFY. Нужно будет смотреть на структуру tagNMLISTVIEW, а именно на поля uNewState и uOldState. Элемент с "галочкой" и без неё будет отличаться одним битом.


 
Hermit   (2005-12-12 23:20) [2]


> Но правильнее (и универсальнее) будет, ИМХО, обрабатывать
> уведомления LVN_ITEMCHANGED, отправляемые списком родительскому
> окну в форме WM_NOTIFY. Нужно будет смотреть на структуру
> tagNMLISTVIEW, а именно на поля uNewState и uOldState. Элемент
> с "галочкой" и без неё будет отличаться одним битом.

Вот это мне и надо.

А можно примерчик/исходничек ?


 
Hermit   (2005-12-12 23:51) [3]

Сделал проще: через события OnChanging и OnChange.


 
begin...end ©   (2005-12-13 09:33) [4]

> Hermit   (12.12.05 23:51) [3]

То есть, примерчик уже не надо? :-)

Ну, на всякий случай дам. Нужен вот такой обработчик WM_NOTIFY формы (если ListView находится на форме):

procedure TMyForm.WMNotify(var Message: TWMNotify);
begin
 with PNMLISTVIEW(Message.NMHdr)^ do
   if (hdr.hwndFrom = ListView.Handle) and (hdr.code = LVN_ITEMCHANGED) then
     if Odd((uNewState xor uOldState) shr 13) then
       Caption := Format("У %d-го сняли или поставили галочку, [iItem]);
 inherited
end


Особо не тестировал, но вроде работает.


 
begin...end ©   (2005-12-13 09:34) [5]

К [4]: в uses нужно добавить CommCtrl.


 
Hermit   (2005-12-13 19:23) [6]

За пример большое спасибо, может и пригодится... ;-)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.013 c
5-1121121621
Brack
2005-07-12 02:40
2006.01.15
Как можно ScrollBox`у добавить свойство Canvas?


14-1134928795
Gero
2005-12-18 20:59
2006.01.15
Про тире


10-1111064667
kblc
2005-03-17 16:04
2006.01.15
Word.Application


3-1132096501
Fl@sh
2005-11-16 02:15
2006.01.15
Данные из другой таблицы * коеффициент


1-1134227147
DimLord
2005-12-10 18:05
2006.01.15
Получение значение ячейки в DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский