Вверх ↑
Ответов: 2193
Рейтинг: 673
#1: 2021-10-12 19:42:27 ЛС | профиль | цитата
Подтверждаю ошибку, на win XP тоже есть.
Предложение по исправлению:
Для пользователей

1. Выделить на поле HiAsm компонент MTStrTbl (MT таблица строк) и нажать сочетание Ctrl+F. Должна открыться вкладка с кодом компонента (в вкладке будет написано: hiMTStrTbl).
2. Найти строку:
procedure ThiMTStrTbl._OnBeforeLineChange;
За ней будет строка:
procedure ThiMTStrTbl._OnLineChange;

Нужно добавить две строки чтоб получилось вот так:
procedure ThiMTStrTbl._OnBeforeLineChange;
var
dt: TData;
begin
if _prop_CheckBoxes then CBvalue := Control.LVItemStateImgIdx[idx]; //сохраним
if CBvalue = 0 then exit;//Fix: Error draw checkbox after dbclik on empty area if Redaction = True (sla8a 2021.10.12)
dt := Get(Idx);
_hi_OnEvent_(_event_onBeforeLineChange, dt);
end;

procedure ThiMTStrTbl._OnLineChange;
var
dt: TData;
begin
if CBvalue = 0 then exit;//Fix: Error draw checkbox after dbclik on empty area if Redaction = True (sla8a 2021.10.12)
if _prop_CheckBoxes then Control.LVItemStateImgIdx[idx] := CBvalue; //восстановим
dt := Get(Idx);
_hi_OnEvent_(_event_onLineChange, dt);
end;
3. Нажать Ctr+S или сохранить изменения нажав на иконку на панели.
4. Закрыть вкладку с кодом компонента.
Важно: Если после тестирования результат вас не удовлетворит, проделайте тоже самое и удалите эти две строки.
Следите за темой и ждите обновления от автора компонента.
Для разработчиков

При двойном нажатии на пустую область таблицы срабатывает _OnBeforeLineChange и _OnLineChange. Первый заносит в CBvalue значение 0, а второй заносит это значение в Control.LVItemStateImgIdx[idx] что и убивает всю отрисовку флажков состояния. Нет смысла его перезаписывать, если редактирование не было.
Возможно есть и более лучшее решение для защиты от срабатывания данных событий чем предложенное мной, предложенное мной решение ошибок отрисовки не довало и блокирует событие _event_onBeforeLineChange и _event_onLineChange если нажатие происходит на пустое поле таблицы и редактирование не происходит.
карма: 10

0
Редактировалось 4 раз(а), последний 2021-10-12 20:24:07