Вверх ↑
Этот топик читают: Гость
Ответов: 62
Рейтинг: 2
#61: 2021-10-10 19:06:34 ЛС | профиль | цитата
Привет всем.
не знаю ошибка или так задумано, если кликнуть в пустом месте таблице несколько раз двойным кликом то исчезают флажки состояния, если потом сохранить и загрузить все ровно отсутствуют, в файле помечаются -1, это только если включен режим редактирования.
Add(MainForm,3063237,532,336)
{
Width=397
Height=204
Position=1
link(onCreate,1976442:doEnum,[])
}
Add(MTStrTbl,15043066,637,294)
{
Width=390
Height=170
Align=5
Name="MTStrTbl"
Columns=#3:Имя|7:Фамилия|8:Отчество|
ColorItems=0
Redaction=0
HeaderDragDrop=0
CheckBoxes=0
Grid=0
EnableOnClick=1
SmallIconsManager="icon"
StateIconsManager="check"
DrawManager="draw"
}
Add(StrList,4383086,574,287)
{
Strings=#22:Иван;Иванов;Иванович;0|26:Андрей;Андреев;Андреевич;1|22:Петр;Петров;Петрович;2|29:Василий;Васильев;Васильевич;1|
}
Add(ArrayEnum,1976442,588,350)
{
link(onItem,16356153:doMT,[])
link(Array,4383086:Array,[])
}
Add(MST_RowAction,15395190,686,343)
{
MSTControl="MTStrTbl"
}
Add(MT_String,16356153,637,343)
{
link(onResult,15395190:doRowAction,[])
}
Add(MST_DrawManager,10020943,686,294)
{
Name="draw"
TabGrid=0
TabGridFrame=0
GutterStyle=1
Gradient=0
GutterColor=-16777211
}
Add(IconsManager,3400264,735,294)
{
Name="icon"
Icons=['Icon'=[ZIP7E03000078DA63606004420101062029C190C1CCC020C6C0C0A001C440210605068838083830330C5DD0D00042C42B3E7D1A8488D40251FFFF3FB15AE0EA89D182AC1882F0A847560CF1322EC5102964C5F8DD00772A41C570F5C40708B21692A28978C5B401FF41E02F10FF0662F3FFFFFFF14331FBFFFF7F80F80790FDA0FEFFFF0340E98340FC10883FFF4700006D3887A0],'Icon'=[ZIP7E03000078DA63606004420101062029C190C1CCC020C6C0C0A001C440210605068838083830338C1870000C4852FFFFFF7FE2B540D413A905AE180288544C923308AA843B95489389F71D9A96A1954EC04EFE0BC4BF81D8FCFFFF7FFC50CCFEFFFF1F20FE01643FA807060450FA20103F04E2CF48710900145C85DD],'Icon'=[ZIP7E03000078DA63606004420101062029C190C1CCC020C6C0C0A001C440210605068838083830330C5DD00046C42BDE690B420DA4A8FFCF40AC16B87A62B4202B86A006E21437E0F575038662FC6E803BF53F1121D9C040ACEF30B534D0264E6903FE83C05F20FE0DC4E6FFFFFFE38762F6FFFFFF00F10F20FB41FDFFFF0780D20781F821107FFE8F0000C08862D1]]
}
Add(IconsManager,11082672,777,294)
{
Name="check"
ImgSize=13
Icons=['Icon'=[ZIP1603000078DA8592C98B1A5110C6DF244C7219676E39E4921CF3370C819CC26CFF548E212BE41A42E28222AE990E0AEA61C6288CA8B8445BC57DC1155724F6B4814A7D0FFB9484BCA6BABABEEFD7BCEAEA27C41E5F2693E0FB6321EE0AF14008F1848325F150EC745EE53BE28F65B7DB85CD66130E87638F9F9F5E2ADF3E5D47BFB76F6E12BFAEA3D1E6D74BE523EBC7EC4B0E3CC262B1983C1ECFDB7C3EAFCD6633DA6EB784A5EB3A4DA753CAE5723FDD6EF72BE60E767BEC73FD86799A4C2692592E9732168B85ACA1C377B95C2FC1F37BA7F1785C6F341AD46C36A9D7EBD170389431180C640D1D7E2C16BB65FEB9DFEFB764B359525595CAE532D56A35C9B45A2D995143879FC964C8E7F37D0E06832AF78B9EA9502850A552915CBD5E97193574830904023FC2E1F018BD42AF56AB92451F46A0860E1F5C28141A629F62B1287BE9743A7F8D6EB72B7D70D8C7EBF5DA4AA592FCE67EBFFFCF188D46048EF92F3CBBF3542AA563AE98E9783C96D908A3869F4C2675E64F38EEF12CDEA187CD6643ABD54AFAF3F95C66D4D0DBED36F678BDFB3FC26C361F2A8AF281BFF976BD5E93A669F20C20A3E63968ECBF67CE649C1DABD52A9C4E27CEC3452412B1261209359D4E4F381779AE66FEFF67F0C181BF7A46F4E28848DCFF7F80BB7A44F41B36BB3C21],'Icon'=[ZIP1603000078DA85924B4F535110C78F60423112173E166E34D14416267E038D0B8D2E8C4617266EF413E04617022A18310152340A84C7E5D1DB4702D85B69EA2D7D88A50545E86D4BC13E6D85961623500414A216FFCEA9B872E1DCCCF967667E937BE66418DB415F5919A3F33063C58C1D608C9593538A1D64DB79B24811FBC7F47A7DC1B55A2D13B5DA1392647AEA703A936EB73B4FFAC128999E88A2F638AFFF65B7F9D28181817B8AA2AC2C2EE7F00B7F6C8BFCF3520E5EEFE4727F7F7F15712ACEEB74BA628AEF07027EE456BFE2CBCA2AD2C1D7888FEA485D14AF15F27E9F0FC455135F6430184E7B3C9ECDB95416B1A9B770745EC573F55E58DA76C248EAE8BC8678F01D78DDE3716F107FD2244942606A1A91701492FA1CEA6F3374B530F4F53208CD0CF5B7185E3CBE8028D539274952BB2CCBD3A1E82CC62D1D68A850A18A7AD48F546869DC0D759D0A95D4D3787317C6E56EBC278E78BFDD6E5F8C24B270E9AAF0B082A1A9A11C3D1D67200AE7D1D37E164DF5C75047F911430D228905D8EDB64F56AB351A4F2E60C2F20CC283A3B0592BE11CAA81C37A174E5B2D86E43BE8AC3D8249B915F16496FF2744F7EB8BC593984F46E1E8BA0EEF582BC26119A1197341BDA3CD7076DD40663686482C01C96834D07B5FF129CAD6FAB79F48F8ED98305563E68D80F894849931A1102703AFB0BEF1038AE2CDD35B5F242F359BCD422693C1F73CB094FD88F0482F822F1B493514CF15F2F3E934060707DB8857D17B335114F7D35C9A34E53709C86FEF00571EA752293E47B746A3D9C779EED4CBF7A784F6E7B2CBE5B2288A6F2D189CA6BBF8568787872D34F325DA8112BE739C9F3D05D4EC0158C9FF9D73AE43C06FCF4705BE]]
}


Редактировалось 3 раз(а), последний 2021-10-10 19:09:09
карма: 1

1
Голосовали:sla8a
Ответов: 198
Рейтинг: 12
#62: 2021-10-11 06:14:32 ЛС | профиль | цитата
Подтверждаю глюк. Win 10 x64 Hiasm 4.05 186
Достаточно одного двойного клика в пустой области и флажки пропадают.
Видео
карма: 3

0
Ответов: 1992
Рейтинг: 634
#63: 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 если нажатие происходит на пустое поле таблицы и редактирование не происходит.

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

0
Ответов: 62
Рейтинг: 2
#64: 2021-10-13 09:18:14 ЛС | профиль | цитата
sla8a работает отладчик. спасибо
карма: 1

0
Ответов: 1992
Рейтинг: 634
#65: 2021-10-13 10:18:39 ЛС | профиль | цитата
В любом случае дождитесь правок автора компонента! Выложенные мной правки точно не конечный результат.
карма: 9

1
Голосовали:ric
Разработчик
Ответов: 25690
Рейтинг: 2088
#66: 2021-10-13 10:41:44 ЛС | профиль | цитата
sla8a писал(а):
В любом случае дождитесь правок автора компонента! Выложенные мной правки точно не конечный результат.

Это будет не скоро, у меня сейчас нет доступа к SVN. Вроде ты сделал все правильно, поэтому я не буду пока ничего переделывать.
карма: 20

0
Ответов: 1992
Рейтинг: 634
#67: 2021-10-13 12:20:30 ЛС | профиль | цитата
nesco писал(а):

Вроде ты сделал все правильно...

Мне не нравится моя правка, это костыль как по мне. Эти события (OnBeforeLineChange и OnLineChange) как бы и не должны срабатывать, редактирование и не начинается и соответственно и не заканчивается при клике в пустом месте.
карма: 9

0
Разработчик
Ответов: 25690
Рейтинг: 2088
#68: 2021-10-14 14:27:18 ЛС | профиль | цитата
sla8a писал(а):
nesco писал(а):

Вроде ты сделал все правильно...

Мне не нравится моя правка, это костыль как по мне. Эти события (OnBeforeLineChange и OnLineChange) как бы и не должны срабатывать, редактирование и не начинается и соответственно и не заканчивается при клике в пустом месте.

Это приколы модуля ListEdit. То, что я добавлял по CheckBoxes в OnBeforeLineChange и OnLineChange, тоже был костыль. В обычном режиме CheckBoxes-ы не пропадают.

Редактировалось 1 раз(а), последний 2021-10-14 14:28:24
карма: 20

0
68
Сообщение
...
Прикрепленные файлы
(файлы не залиты)