![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Unregistered |
|
|||
|
Unregistered |
Привет. Возникла такая проблема: Использую компонент TListView с Checkboxes=true. Теперь нужно отследить момент, когда пользователь "чекнул итем". Как это сделать? Посмотрел по событиям компонента и ничего подходящего не нашел. Спасибо.
|
|||
|
||||
| shilnik |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 22.12.2003 Репутация: нет Всего: 1 |
А как же onClick?
|
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Никак. На OnClick не отследишь это состояние итема. Ну в общем-то решение я нашел, не знаю на сколько хорошее:
procedure TfrmMain.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange); begin if (Change=ctState) then begin if Item.Checked then .................. if not Item.Checked then ..................... end; |
|||
|
||||
| Girder |
|
||||||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Нормальное решение.
Да нет, можно. Для общего развития: Смотри:
Если у тебя два миллиона записей, с Checkboxes. Тогда можно вот так:
-------------------- Как слышим, так и пишим. Истина где-то там... |
||||||||
|
|||||||||
| Unregistered |
|
|||
|
Unregistered |
Ну, это ж просто проверка идет на checked. Я может криво выразился... Если использовать онклик, то не будет реакции на пробел. Чекнуть-то и пробелом можно. Ну даже если это и опустить, то в первом варианте не узнаешь какой итем отмечен в данный момент, соответственно именно с ним не сопоставишь конкретные действия (они выполняться для всех чекнутых). Второй вариант тоже не подходит. С итемами связаны разные объекты образованные от разных классов. В момент когда юзер отмечает итем нужно произвести конкретные действия зависящие от связанного с итемом объекта. При простом клике на итеме ничего происходить не должно (не важно отмечен он или нет) в твоем коде это не прокатывает. Кроме того, нужно обработать и переход в состояние not Checked. Тут вообще ерунда получиться. В общем не состояние, а переход в состояние нужно отслеживать.
|
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Согласен, я просто показал, что по извращавшись это в принципе реально сделать
Забыл совсем: В Item.SubItems добавь запись о состоянии, к примеру: -Item.SubItems.Add('1')-Если выбран -Item.SubItems.Add('2')-Если не выбран а потом их изменяй при изменении состоянии Тогда проверяя Item.Checked и Item.SubItems.Strings[X] ты можеш точно сказать изменилось или нет состояние. Удачи. Это сообщение отредактировал(а) Girder - 2.6.2004, 11:16 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
А можно не париться и использовать предназначеное для этого событие OnClickCheck
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Ой сори, не посмотрел про какой компонент идет речь - событие OnClickCheck есть у TCheckListBox, а не у TListView
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Ну вариант с Change работает, на нем и остановлюсь наверное. Спасибо всем.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |