Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CListCtrl отлов установки/снятия выделения строки 
:(
    Опции темы
triclosan
Дата 12.10.2008, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



На форме имеется кнопка для удаления выделенной строки. Пытаюсь добиться следующего - обычное состояние кнопки disabled, после выделения строки - enabled, а после удаления строки или снятия выделения (фокус переносится на другой контрол окна или остается в CListCtrl, но выделение строки снимается) - снова в исходное disabled состояние. 

С "заинейблиньем" кнопки проблем нет - ловлю сообщение ON_CLICK на контроле, проверяю есть ли выделенные строки, если да - активирую кнопку.

А вот с "дисейблиньем" проблема, не пойму как дезактивировать кнопку, при переходе в другой контрол. Хотел ловить сообщение WM_KILLFOCUS, но это не подходит поскольку удаляющая кнопка также становится неактивной при потере фокуса контролом CListCtrl. То есть идея такая - надо дисейблить кнопку удаления строки при потере фокуса контролом всегда, кроме случая, когда надо нажать на эту кнопку smile. Как такое можно реализовать.  
PM MAIL   Вверх
voov
Дата 14.10.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



В обработчике ON_CLICK если есть выделение строки, то активируешь кнопку, иначе - деактивируешь.
PM MAIL   Вверх
triclosan
Дата 14.10.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



у меня так и сделано сейчас. Но если кликнуть на другой контрол (не грид и не кнопка), то в этом случае выделении строки пропадает но кнопка будет оставаться активной. Имеется ввиду ON_CLICK CListCtrl'а?
PM MAIL   Вверх
voov
Дата 14.10.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



да, я имел ввиду именно ON_CLICK CListCtrl'а.

Цитата(triclosan @  14.10.2008,  14:13 Найти цитируемый пост)
Но если кликнуть на другой контрол (не грид и не кнопка), то в этом случае выделении строки пропадает но кнопка будет оставаться активной

Выделеный елемент листконтрола можно изменить лишь кликнув по нему или програмно. Если програмно снимаешь выделение, то также нужно дизеблить кнопку. Как я понял выделением ты управляешь только кликая по контролу. Если выделение не показывается, проверь свойство листконтрола Always show selection.

И еще нужно деактивировать кнопку по нажатию на нее (в обработчике, после удаления строки).
PM MAIL   Вверх
triclosan
Дата 17.10.2008, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



если я клацаю мышкой на ином контроле, то ранее выделенная строчка CListCtrl теряет флаг selected? 
PM MAIL   Вверх
voov
Дата 17.10.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Цитата(triclosan @  17.10.2008,  00:19 Найти цитируемый пост)
если я клацаю мышкой на ином контроле, то ранее выделенная строчка CListCtrl теряет флаг selected? 

нет

Цитата(voov @  14.10.2008,  16:07 Найти цитируемый пост)
Если выделение не показывается, проверь свойство листконтрола Always show selection.


PM MAIL   Вверх
triclosan
Дата 17.10.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



угу, я потому и спрашиваю, т.к. установил свойство LVS_SHOWSELALWAYS, но выделение пропадает.

Кстати  у меня еще установлен стиль Ovner Data это может как-то влиять?
PM MAIL   Вверх
voov
Дата 17.10.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Цитата(triclosan @  17.10.2008,  15:45 Найти цитируемый пост)
Кстати  у меня еще установлен стиль Ovner Data это может как-то влиять?

это не должно.

Цитата(triclosan @  17.10.2008,  15:45 Найти цитируемый пост)
установил свойство LVS_SHOWSELALWAYS, но выделение пропадает

проверь заходит ли при этом в твой обработчик ON_CLICK.
PM MAIL   Вверх
triclosan
Дата 17.10.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



Цитата(voov @  17.10.2008,  16:31 Найти цитируемый пост)
проверь заходит ли при этом в твой обработчик ON_CLICK. 

имеется ввиду выделение строки при клацанье в другом месте. 

Это сообщение отредактировал(а) triclosan - 17.10.2008, 18:57
PM MAIL   Вверх
Earnest
Дата 20.10.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Добавь еще обрабочик на NM_KILLFOCUS


--------------------
...
PM   Вверх
triclosan
Дата 21.10.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 1
Всего: 12



Цитата(Earnest @  20.10.2008,  15:15 Найти цитируемый пост)
Добавь еще обрабочик на NM_KILLFOCUS 

WM_KILLFOCUS выходит только для работы с клавиатурой?


PM MAIL   Вверх
voov
Дата 21.10.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



нет, не только. это потеря фокуса ввода. может быть вызвана и действиями мыши.
PM MAIL   Вверх
Earnest
Дата 21.10.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



NM_KILLFOCUS != WM_KILLFOCUS
Первое - это уведомление, посылаемое родителю контрола через WM_NOTIFY, а второе - сообщение, посылаемое теряющему фокус контролу.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.