Вверх ↑
Этот топик читают: Гость
Ответов: 245
Рейтинг: 4
#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
Ответов: 263
Рейтинг: 18
#62: 2021-10-11 06:14:32 ЛС | профиль | цитата
Подтверждаю глюк. Win 10 x64 Hiasm 4.05 186
Достаточно одного двойного клика в пустой области и флажки пропадают.
Видео
карма: 3

0
Ответов: 2200
Рейтинг: 673
#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
карма: 11

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

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

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

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

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

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

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

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

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

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

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

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

0
Ответов: 245
Рейтинг: 4
#69: 2021-10-19 14:41:05 ЛС | профиль | цитата
как исправить исчезает первый столб просто проведя мышкой по нему.
Add(MainForm,2953706,392,91)
{
Width=880
Height=600
Caption=""
Position=1
}
Add(MTStrTbl,2452207,609,280)
{
Width=864
Height=561
Align=5
Font=[MS Sans Serif,8,1,0,204]
TabOrder=-1
Name="tab"
DoubleBuffered=0
Columns=#19:rtrtrtrtrtr=120=0=0|19:rtrtrtrtrtr=120=0=0|19:rtrtrtrtrtr=120=0=0|0:|
ColorItems=0
HeaderDragDrop=0
TextAlign=2
Grid=0
DrawManager="user"
Point(doFont)
link(FormatCell,13332854:GetData,[])
}
Add(StyleXP,8452824,280,56)
{
}
Add(IconsManager,15067105,280,91)
{
Name="ico2"
Icons=['Icon'=[ZIP7E04000078DA9D93310E823018851F91C4D14EAE30BA7A027B048FE0E8E80D181D39428FE011D078008F0037C038B9D5572C09A96D014B3EFE50F215787F01121E42A01BC71458B36E8899CA49D29D0199E2676C8B972085AD988AD6BAC35E1F484B4E7FFA868A685213F9872FADDF7321F90CDFA09C3574289B809FDB1CDC355A9BD1980FFB3C1DE0D16713F11178872165C4DF47BCB6CF23E00BDB3F9FAB86FD08F8BE6FAF7CFBC1E3BBD9D76EE623BE1AEB79C49753F65CC45753F67CC09FF5DFBA7EA68192DCC995343B9201CF25F05EB09266F59D37F76FE44C1429C80726602769]]
}
Add(MST_DrawManager,6833392,315,91)
{
Name="user"
SingleString=0
TabGrid=0
TabGridFrame=0
GutterStyle=1
LightTextSel=1
StyleGrid3D=1
ColorRowSel=0
BkFrameColor=33023
LightTxtColor=-16777208
}
Add(Matrix,6336376,672,329)
{
MatrixType=2
}
Add(MathParse,11945622,623,329)
{
@Hint=#48:количество столбов + 65536 * на количество строк|
MathStr="%2+65536*%1"
link(onResult,6336376:doSize,[])
link(X1,2452207:Count,[])
link(X2,2452207:CountCol,[])
}
Add(EventFromData,13332854,623,231)
{
link(onEvent,6289078:doValue,[])
}
Add(MatrixRW,5346286,756,231)
{
link(onRead,13332854:doData,[(801,237)(801,194)(611,194)(611,237)])
link(Matrix,6336376:Matrix,[(762,199)(718,199)(718,373)(678,373)])
link(X,6289078:Value2,[(776,219)(743,219)(743,284)(678,284)])
link(Y,6289078:Value1,[(783,211)(729,211)(729,275)(671,275)])
}
Add(MT_MultiMem,6289078,665,231)
{
From=1
link(onData,5346286:doRead,[])
}
Add(MST_RowAction,12985991,567,217)
{
MSTControl="tab"
}
Add(StrList,15034837,434,175)
{
Strings=#36:sdf345345sdf;aaa345345aa;01234534533|
}
Add(MT_String,922736,518,217)
{
link(onResult,12985991:doRowAction,[])
}
Add(ArrayEnum,10041622,448,231)
{
link(onItem,922736:doMTString,[])
link(onEndEnum,11945622:doCalc,[(492,244)(492,335)])
link(Array,15034837:Array,[])
}
Add(MMTimer,12930563,392,231)
{
Interval=1
AutoStop=10
link(onTimer,10041622:doEnum,[])
}


--- Добавлено в 2021-10-19 14:53:06

работает только если стиль XP убрать с ним нет

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

0
Ответов: 2200
Рейтинг: 673
#70: 2021-10-19 19:05:35 ЛС | профиль | цитата
ric, лично мне никогда не было понятно для чего этот компонент (XP), никогда его не использовал, хоть до сих пор использую winXP.
Так что могу только предположить что конфликтуют StyleXP и MST_DrawManager. Достаточно удалить с схемы один из них и проблемы с отрисовкой пропадают (у меня так на winXP).
Могу еще посоветовать поставить свойство DoubleBuffered = False (свойство в таблице).
А так же протестировать при InfoTip = False (свойство в таблице).
карма: 11

0
Ответов: 245
Рейтинг: 4
#71: 2021-10-19 19:34:56 ЛС | профиль | цитата
DoubleBuffered = False пробывал, после отключения при клике в таблице мерцает когда строк больше 100.
MST_DrawManager нужен тоже удалял проверял, без него ячейки по отдельности не выделяются и вся строка серая.
StyleXP без него все элементы формы выглядят не айс
InfoTip отключен.
карма: 1

0
Ответов: 245
Рейтинг: 4
#72: 2022-04-30 11:06:25 ЛС | профиль | цитата
Сетка таблицы строится со смешением в пиксель.
смещение 1 пиксель.jpg

Add(StyleXP,13131224,126,91)
{
}
Add(MainForm,3910667,245,217)
{
Height=319
Caption="Example"
link(onCreate,10041622:doEnum,[])
}
Add(MTStrTbl,2452207,504,217)
{
Left=5
Top=5
Width=380
Height=220
Align=5
Name="tab"
Columns=#9:1=100=0=2|9:2=100=0=2|9:3=100=0=2|0:|0:|0:|
FlatScroll=1
Grid=0
}
Add(MST_RowAction,12985991,427,217)
{
MSTControl="tab"
}
Add(StrList,15034837,294,175)
{
Strings=#14:sdfsdf;aaaaa;0|14:fzsdfzs;bbbb;3|13:sdfszz;cccc;2|14:sdfszz;ddddd;0|14:sdfszz;eeeee;1|14:sdfszz;fffff;3|14:fzsdfzs;gggg;2|13:sdfszz;hhhh;0|15:fzsdfzs;iiiii;3|15:sdfszz;jjjjjj;1|
}
Add(MT_String,922736,364,217)
{
link(onResult,12985991:doRowAction,[])
}
Add(ArrayEnum,10041622,308,231)
{
link(onItem,922736:doMTString,[])
link(Array,15034837:Array,[])
}

карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#73: 2022-04-30 13:01:04 ЛС | профиль | цитата
ric писал(а):
Сетка таблицы строится со смешением в пиксель.

Внутри таблицы два разных контрола на уровне системы, и почему идет такое смещение надо спрашивать саму систему.
карма: 22

0
Ответов: 245
Рейтинг: 4
#74: 2022-04-30 13:47:20 ЛС | профиль | цитата
ясно
карма: 1

0
Ответов: 245
Рейтинг: 4
#75: 2022-05-01 17:43:28 ЛС | профиль | цитата
nesco посмотри ошибку, при добавлении столбов нет скрола пока окно не развернешь или растянешь.
таб.jpg

Add(MainForm,2953706,273,98)
{
Height=386
Position=1
link(onCreate,8279789:doTimer,[(317,118)(317,146)(261,146)(261,174)])
}
Add(MST_ColAction,935753,371,168)
{
MSTControl="tab"
}
Add(DoData,5286389,322,168)
{
Data=String(col)
link(onEventData,935753:doColAction,[])
}
Add(MTStrTbl,2452207,357,98)
{
Top=32
Width=384
Height=315
Align=5
Font=[MS Sans Serif,8,1,0,204]
TabOrder=-1
Name="tab"
ColorSp=12639424
ColDelimiter=";"
ColumnWidth=110
ColorItems=0
HeaderDragDrop=0
TextAlign=2
Grid=0
InfoTip=1
SmallIconsManager="ico2"
DrawManager="userE"
Point(Handle)
Point(ItemAtPos)
Point(onDblClick)
Point(doFont)
}
Add(StyleXP,910274,273,133)
{
}
Add(Timer,8279789,273,168)
{
Interval=500
Enable=1
AutoStop=6
link(onTimer,5286389:doData,[])
}

карма: 1

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