Вверх ↑
Этот топик читают: Гость
Ответов: 322
Рейтинг: 8
#1: 2021-03-18 16:32:17 ЛС | профиль | цитата
Привет всем.
Набросал программу, вот только не получается автоматически закрасить разные строки в таблице разными цветами.
Даже если сделать поочерёдно кнопкой (вручную), после если выделяешь строку она красится в последний цвет.
12.jpg
Add(MainForm,12272402,182,105)
{
Width=531
Height=419
Position=1
link(onCreate,5210249:doEnum,[])
}
Add(MST_RowAction,10435767,329,112)
{
MSTControl="myTable"
}
Add(StrList,3112473,217,63)
{
Strings=#20:1;Стол;12,3;1;123;12|21:2;Диван;34,7;1;200;20|19:3;Ваза;3,4;1;221;15|21:4;Тарелка;0,3;1;31;12|19:5;Стул;7,4;1;150;23|22:6;Цветок;0,45;5;225;15|20:7;Ковер;12,2;1;12;12|
}
Add(ArrayEnum,5210249,231,119)
{
link(onItem,1965424:doMT,[])
link(Array,3112473:Array,[])
}
Add(MT_String,1965424,280,112)
{
link(onResult,10435767:doRowAction,[])
}
Add(MTStrTbl,2767388,189,245)
{
Width=515
Height=315
Align=2
Name="myTable"
Columns=#8:ID=30==2|8:Название|3:Вес|10:Количество|9:Позиция Х|9:Позиция Y|
ColorItems=0
Grid=0
link(FormatCell,10425368:GetData,[])
}
Add(EventFromData,10425368,203,196)
{
link(onEvent,8769614:doSeparateMT,[])
}
Add(MT_MultiData,8769614,245,196)
{
link(onData1,2480107:doCase,[])
}
Add(Case,2480107,287,196)
{
Value=String(12)
DataOnTrue=String(65280,255,MS Sans Serif,8,1)
link(onNextCase,13607988:doData,[])
link(onTrue,3848631:doWork3,[(326,209)(326,237)(382,237)])
}
Add(DoData,13607988,336,196)
{
link(onEventData,3848631:doWork2,[])
}
Add(HubEx,3848631,378,196)
{
Angle=3
link(onEvent,10425368:doData,[(382,186)(194,186)(194,202)])
}
Add(MST_SetColors,16542452,378,385)
{
MSTControl="myTable"
Point(doTextBkColor)
}
Add(Button,3693301,105,315)
{
Left=110
Top=330
Data=Integer(0)
link(onClick,4247746:doNext,[])
}
Add(MST_SelectRow,5160862,273,406)
{
AutoMakeVisible=1
MSTControl="myTable"
Point(IndexSelect)
link(onSelectRow,3090824:doGetString,[])
link(IndexSelect,14532040:Var2,[(279,379)(160,379)])
}
Add(StrList,3090824,322,378)
{
Strings=#8:15204094|8:16777215|8:15007458|8:15657982|8:16777215|8:16771809|8:12381161|8:15007458|8:15657982|
Point(doGetString)
Point(onGetString)
Point(IdxToSelect)
link(onGetString,16542452:doTextBkColor,[])
link(IdxToSelect,14532040:Var3,[(342,362)])
}
Add(GetDataEx,14532040,154,357)
{
link(Data,4247746:Count,[])
}
Add(CounterEx,4247746,154,315)
{
link(onNext,13012467:doCompare,[])
}
Add(If_else,13012467,196,315)
{
Type=4
link(onFalse,5160862:doSelect,[(250,328)(250,412)])
link(Op2,2767388:Count,[])
}
В этой схеме сделал подачу кода цвета попроще, а вообще код цвета сохраняется и берётся из базы SQlite.
После формирования таблицы (полностью раскрашеной) далее при выделении строки не должны менять цвет. У меня это не получается.
Большое спасибо за помошь и критику.

Редактировалось 1 раз(а), последний 2021-03-18 16:34:47
карма: 0

0
Ответов: 793
Рейтинг: 168
#2: 2021-03-18 17:53:10 ЛС | профиль | цитата
Dad2016, Пример закраски строк.

Add(MainForm,14470345,210,385)
{
Width=868
Height=427
link(onCreate,1512985:doEnum,[])
}
Add(EventFromData,13332854,238,161)
{
link(onEvent,8769614:doSeparateMT,[])
}
Add(MT_MultiData,8769614,287,161)
{
Count=3
link(onData2,8819242:doOperation,[])
}
Add(Math,8819242,336,168)
{
OpType=41
link(onResult,15516131:doEvent,[])
}
Add(IndexToChanel,15516131,392,168)
{
link(onEvent1,14132548:doData,[])
link(onEvent2,6221311:doData,[(438,181)(438,223)])
}
Add(DoData,14132548,448,168)
{
link(onEventData,13423211:doWork2,[])
}
Add(DoData,6221311,448,217)
{
Data=String(12639424)
link(onEventData,13423211:doWork3,[(494,223)])
}
Add(HubEx,13423211,490,168)
{
Angle=3
link(onEvent,13332854:doData,[(494,145)(228,145)(228,167)])
}
Add(MTStrTbl,5816951,224,217)
{
Width=852
Height=388
Align=5
Name="excel"
Columns=#7:Артикул|8:Название|6:Кол-во|7:Ед.изм.|4:Цена|5:Сумма|0:|
ColorItems=0
Redaction=0
link(FormatCell,13332854:GetData,[])
}
Add(StrList,13732325,259,350)
{
Strings=#56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|56:23544122;Carbon disc ?44,7/38,3x5,8mm;10;PC;16,92;169,20|54:23544122;Carbon disc ?44,7/38,3x5,8mm;2;PC;16,92;33,84|64:21200159;Top part UNIFL3/4 for steel bot.part;25;PC;30,09;752,25|57:24400111;Hose f. pump compl. UNIWASH;153;PC;10,58;1618,74|58:13225;Piston complete for valve UNIWASH3;4;PC;27,09;108,36|60:12200105;Vacuumgauge glycerine ?100mm 3/8";5;PC;40,57;202,85|54:21200141;Thread bush UNIFLOW3 steel;130;PC;1,93;250,90|45:25100146;O-ring ?16,1x1,6mm;175;PC;0,36;63,00|57:21200127;Holder rocking lever, UNIFLOW3;170;PC;0,26;44,20|50:21200131;Rocking lever UNIFLOW3;150;PC;0,89;133,50|65:25200132;Valve button inside UNIFLOW3 steel FA;225;PC;0,72;162,00|61:21200129;Bar closing device UNIFLOW3 steel;225;PC;1,09;245,25|55:25200124;Valve flap outside UNIFLOW3;225;PC;1,56;351,00|60:14400212;Solenoid valve sgl. invensys 230vac;5;PC;8,50;42,50|62:14400213;Solenoid valve dobb. invensys 230vac;5;PC;14,13;70,65|48:21200131;Rocking lever UNIFLOW3;20;PC;0,89;17,80|63:25200132;Valve button inside UNIFLOW3 steel FA;20;PC;0,72;14,40|43:25100146;O-ring ?16,1x1,6mm;20;PC;0,36;7,20|55:21200127;Holder rocking lever, UNIFLOW3;20;PC;0,26;5,20|58:21200130;Bar closing device UNIFLOW3 steel;20;PC;0,34;6,80|58:25200119;Guard bracket UNIFLOW3 steel SBS;20;PC;3,38;67,60|55:13474;Valve flap exterior UNIFLOW3 SBS;20;PC;1,56;31,20|59:26400104;Terminal wheel for lock guide str;20;PC;1,12;22,40|67:25215022;Rubber liner UNIFL. 15022-?22 UNIFLEX FA;96;PC;2,39;229,44|55:14800695;Hose guide f. SAC115 complete;10;PC;9,17;91,70|36:14306;Filter for IDC;20;PC;0,40;8,00|51:25515435;Rubber hose ?27/16 mm - FA;15;M;5,24;78,60|63:13930;Double-action Quickstart II rem. L=740mm;1;PC;98,66;98,66|54:13100201;Spray gun for udder washer;20;PC;17,77;355,40|0:|
}
Add(ArrayEnum,1512985,273,399)
{
link(onItem,7011876:doMTString,[])
link(onEndEnum,4139610:doColAction,[(326,412)(326,440)])
link(Array,13732325:Array,[])
}
Add(MT_String,7011876,336,385)
{
link(onResult,3501424:doRowAction,[])
}
Add(MST_RowAction,3501424,385,385)
{
MSTControl="excel"
}
Add(MST_ColAction,4139610,385,434)
{
Action=9
Index=-2
MSTControl="excel"
}

карма: 16

0
Ответов: 322
Рейтинг: 8
#3: 2021-03-19 06:27:44 ЛС | профиль | цитата
Gunta писал(а):
Пример закраски строк.

Этот пример я видел.
Мне нужно закрашивать строки по моим данным которые в базе, а верхняя часть у меня выделяет ячейки с определёнными данными. (как в примере на скрине)
С обычными таблицами (StringTableMT) получается вот такой результат по моим данным из базы
2.jpg
3.jpg
Я решил перейти на MTStrTbl таблицы. (больше возможностей)
карма: 0

0
Ответов: 793
Рейтинг: 168
#4: 2021-03-19 06:58:00 ЛС | профиль | цитата
Dad2016 писал(а):
решил перейти на MTStrTbl таблицы

Правильно

Add(MainForm,12272402,399,126)
{
Width=531
Height=419
Position=1
link(onCreate,5210249:doEnum,[])
}
Add(MST_RowAction,10435767,546,133)
{
MSTControl="myTable"
}
Add(ArrayEnum,5210249,448,140)
{
link(onItem,1965424:doMT,[])
link(Array,3090824:Array,[])
}
Add(MT_String,1965424,497,133)
{
Delimeter="\t"
link(onResult,10435767:doRowAction,[])
}
Add(MTStrTbl,2767388,406,266)
{
Width=515
Height=315
Align=2
Name="myTable"
Columns=#8:ID=30==2|8:Название|3:Вес|10:Количество|9:Позиция Х|9:Позиция Y|
ColorItems=0
Grid=0
link(FormatCell,10425368:GetData,[])
}
Add(EventFromData,10425368,420,217)
{
link(onEvent,8769614:doSeparateMT,[])
}
Add(MT_MultiData,8769614,462,217)
{
link(onData1,2480107:doCase,[])
}
Add(Case,2480107,504,217)
{
Value=String(12)
DataOnTrue=String(65280,255,MS Sans Serif,8,1)
link(onNextCase,13607988:doData,[])
link(onTrue,3848631:doWork3,[(543,230)(543,258)(599,258)])
}
Add(DoData,13607988,553,217)
{
link(onEventData,3848631:doWork2,[])
}
Add(HubEx,3848631,595,217)
{
Angle=3
link(onEvent,10425368:doData,[(599,207)(411,207)(411,223)])
}
Add(StrList,3090824,434,63)
{
Strings=#29:1 Стол 12,3 1 123 12 15204094|30:2 Диван 34,7 1 200 20 16777215|28:3 Ваза 3,4 1 221 15 15007458|30:4 Тарелка 0,3 1 31 12 15657982|28:5 Стул 7,4 1 150 23 16777215|31:6 Цветок 0,45 5 225 15 16771809|29:7 Ковер 12,2 1 12 12 12381161|27:8 Стол 0,85 2 14 2 15007458|25:9 Диван 3 3 21 1 15657982|0:|
Point(doGetString)
Point(onGetString)
Point(IdxToSelect)
}

карма: 16

0
Ответов: 2267
Рейтинг: 676
#5: 2021-03-19 19:58:36 ЛС | профиль | цитата
Dad2016,
1. Смотрите свойство NColorRow у таблицы. Оно равно -1, что значит что данные о цвете строки должны быть после всех данных для столбцов.
2. Свойство ColorItems у таблицы должно быть true.
3. После изменения цвета строки (MST_RowAction Action = ColorsRow) сделать перерисовку (doRedraw RedrawManage).
4. В справке к MST_RowAction смотрите Аргументы для ColorsRow и пример.
Add(MainForm,12272402,427,189)
{
Width=622
Height=478
Position=1
link(onCreate,5210249:doEnum,[])
}
Add(MST_RowAction,10435767,574,196)
{
MSTControl="myTable"
}
Add(ArrayEnum,5210249,476,203)
{
link(onItem,1965424:doMT,[])
link(Array,10249837:Array,[])
}
Add(MT_String,1965424,525,196)
{
link(onResult,10435767:doRowAction,[])
}
Add(MTStrTbl,2767388,378,182)
{
Width=614
Height=315
Align=2
Name="myTable"
Columns=#8:ID=30==2|8:Название|3:Вес|10:Количество|9:Позиция Х|9:Позиция Y|
ColorItems=0
Grid=0
}
Add(Button,3693301,343,350)
{
Left=280
Top=420
Data=Integer(0)
link(onClick,4247746:doNext,[])
}
Add(StrList,3090824,441,322)
{
Strings=#3:255|6:233435|3:456|6:456545|5:43578|5:65767|5:76756|
Point(doGetString)
Point(onGetString)
Point(IdxToSelect)
link(onGetString,15643651:doAdd,[])
}
Add(CounterEx,4247746,392,350)
{
Default=-1
link(onNext,3090824:doGetString,[])
}
Add(MST_RowAction,10547525,567,329)
{
Action=5
MSTControl="myTable"
Point(Index)
link(onChange,13664548:doRedraw,[])
link(Index,4247746:Count,[(573,317)(680,317)(680,411)(398,411)])
}
Add(RedrawManager,13664548,623,329)
{
ControlManager="myTable"
}
Add(StrList,10249837,462,140)
{
Strings=#22:1;Стол;12,3;1;123;12;0|23:2;Диван;34,7;1;200;20;0|26:3;Ваза;3,4;1;221;15;456545|23:4;Тарелка;0,3;1;31;12;0|23:5;Стул;7,4;1;150;23;255|29:6;Цветок;0,45;5;225;15;456545|22:7;Ковер;12,2;1;12;12;0|
}
Add(MT_Add,15643651,497,329)
{
Data=Integer(0)
InputMT=1
link(onAdd,8705482:doEvent,[])
}
Add(Debug,8705482,546,329)
{
link(onEvent,10547525:doRowAction,[])
}

Редактировалось 2 раз(а), последний 2021-03-19 19:59:25
карма: 11

0
Ответов: 322
Рейтинг: 8
#6: 2021-03-22 06:51:13 ЛС | профиль | цитата
sla8a писал(а):

Спасибо за пример.
карма: 0

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