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

Вниз

События 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
14-1135064032
stone
2005-12-20 10:33
2006.01.15
Это по-русски...


4-1131416118
msgipss
2005-11-08 05:15
2006.01.15
Можно ли получить время нахождения процесса в памяти


14-1135098605
Piter
2005-12-20 20:10
2006.01.15
Может кто-нибудь дать аккаунт на www.filepost.ru? :)


14-1135015853
Yura32
2005-12-19 21:10
2006.01.15
ACME Setup


6-1127974262
Гарри Поттер
2005-09-29 10:11
2006.01.15
Организация программ.