Скорее всего над правками все. Поправил код и сейчас он выглядит логичней. Флаги удаляются, а не подменяются и нет лишнего. Конечно нужно протестировать все. Скачать архив
Нашел другую ошибку. Она не связана с текущими правками (можно легко проверить отключив весь код NM_CUSTOMDRAW). Ошибка в следующем: 1. Таблица в множественном режиме (MultiSelect = true) 2. Сбросить все выделенные строки (нажать на пустое поле) 3. Используя курсор мыши выделить первую строку (верхнюю), затем с зажатым Ctrl выбрать вторую строку (следующую за первой), еще раз нажать на вторую строку с зажатым Ctrl чтоб снять выделенную строку И тут возникает вопрос. Сколько строк выделено в таблице?На таблице отображается на данный момент 1 строка. onSelect после второго нажатия на одну и туже строку событие не выдает (о чем и сообщает в описании). Но если бы вместо второй строки снять выделение с первой, то onSelect сработал. Черт с ним с onSelect, вернемся к количеству выделенных строк. Если спросить у MST_Selected то SelCount сообщит что выделена одна строка. Вроде все сходится. Но если задействовать doSelectInvert (инвертировать выделенные строки) у MST_SelectRow, то выделятся все строки кроме двух первых, что значит что все таки две строки выделено. Если проделать еще один пункт: 4. Зажать Ctrl и с помощью кнопок стрелок вверх или вниз сдвинуть хоть на одну строку рамку фокуса. Если сейчас инвертировать выбор строк, то будет все правильно (выделятся все строки кроме одной). Пока вывод такой что что-то в таблице не обновляется. Причем при выборе разных строк (к примеру если выбрать первую и третью ошибки нет), ошибка может появиться, а может и нет. Хорошо бы найти что. Редактировалось 5 раз(а), последний 2025-04-14 09:23:49
|