Форум: "Основная";
Текущий архив: 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