![]() |
|
|
![]()
|
|
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
На форме имеется кнопка для удаления выделенной строки. Пытаюсь добиться следующего - обычное состояние кнопки disabled, после выделения строки - enabled, а после удаления строки или снятия выделения (фокус переносится на другой контрол окна или остается в CListCtrl, но выделение строки снимается) - снова в исходное disabled состояние.
С "заинейблиньем" кнопки проблем нет - ловлю сообщение ON_CLICK на контроле, проверяю есть ли выделенные строки, если да - активирую кнопку. А вот с "дисейблиньем" проблема, не пойму как дезактивировать кнопку, при переходе в другой контрол. Хотел ловить сообщение WM_KILLFOCUS, но это не подходит поскольку удаляющая кнопка также становится неактивной при потере фокуса контролом CListCtrl. То есть идея такая - надо дисейблить кнопку удаления строки при потере фокуса контролом всегда, кроме случая, когда надо нажать на эту кнопку |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
В обработчике ON_CLICK если есть выделение строки, то активируешь кнопку, иначе - деактивируешь.
|
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
у меня так и сделано сейчас. Но если кликнуть на другой контрол (не грид и не кнопка), то в этом случае выделении строки пропадает но кнопка будет оставаться активной. Имеется ввиду ON_CLICK CListCtrl'а?
|
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
да, я имел ввиду именно ON_CLICK CListCtrl'а.
Выделеный елемент листконтрола можно изменить лишь кликнув по нему или програмно. Если програмно снимаешь выделение, то также нужно дизеблить кнопку. Как я понял выделением ты управляешь только кликая по контролу. Если выделение не показывается, проверь свойство листконтрола Always show selection. И еще нужно деактивировать кнопку по нажатию на нее (в обработчике, после удаления строки). |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
если я клацаю мышкой на ином контроле, то ранее выделенная строчка CListCtrl теряет флаг selected?
|
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
||||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
угу, я потому и спрашиваю, т.к. установил свойство LVS_SHOWSELALWAYS, но выделение пропадает.
Кстати у меня еще установлен стиль Ovner Data это может как-то влиять? |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
||||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
||||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Добавь еще обрабочик на NM_KILLFOCUS
-------------------- ... |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
||||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
нет, не только. это потеря фокуса ввода. может быть вызвана и действиями мыши.
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
NM_KILLFOCUS != WM_KILLFOCUS
Первое - это уведомление, посылаемое родителю контрола через WM_NOTIFY, а второе - сообщение, посылаемое теряющему фокус контролу. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |