Вверх ↑
Этот топик читают: Гость
Ответов: 26
Рейтинг: 1
#1: 2012-10-05 19:29:00 ЛС | профиль | цитата
Смысл в том что мне нужно сделать так, чтобы данные можно было редактировать только в одной колонке. Никак не могу разобраться.
code_29244.txt
карма: 0

0
файлы: 1code_29244.txt [556B] [106]
Разработчик
Ответов: 26324
Рейтинг: 2148
#2: 2012-10-05 19:36:25 ЛС | профиль | цитата
hajikov писал(а):
Смысл в том что мне нужно сделать так, чтобы данные можно было редактировать только в одной колонке. Никак не могу разобраться.

Это не получится сделать, не предусмотрена такая фича в этом контроле.
В расширеyной таблице можно сделать при помощи наложения контрола Edit на ячейку. Юзай пример %HiAsm%ElementsDelphiExampleFormsMTStrTblWith_EditCtrl.sha, если очень надо
карма: 22

1
Голосовали:hajikov
Ответов: 26
Рейтинг: 1
#3: 2012-10-06 12:50:12 ЛС | профиль | цитата
Спасибо, сейчас попробую.
------------ Дoбавленo в 12.49:
Как организовать, чтобы при редактирование ячейки, при клике на другую ячейку, отредактированные данные все равно сохранялись?

Add(MainForm,2953706,56,126)
{
Width=556
Height=510
link(onCreate,10041622:doEnum,[])
}
Add(MST_UseEditCtrl,9109853,84,294)
{
MSTControl="table"
link(onCellSize,3691724:doValue,[(129,300)(129,279)])
link(onEnterCell,2280621:doCompare,[(128,307)(128,384)])
link(onEscCell,726664:doWork1,[(473,314)])
}
Add(MT_MultiData,1918024,259,378)
{
Count=4
Point(Data)
link(onData1,8436583:doLeft,[])
link(onData2,8436583:doTop,[])
link(onData3,8436583:doWidth,[])
link(onData4,8436583:doHeight,[])
link(Data,3691724:Value,[(265,320)(146,320)])
}
Add(Edit,8436583,385,364)
{
Left=740
Top=210
Color=16711935
Visible=1
Text=""
DataType=2
MaxLenField=3
Point(doLeft)
Point(doTop)
Point(doWidth)
Point(doHeight)
Point(doVisible)
Point(doSetFocus)
Point(doBringToFront)
Point(doSelectAll)
link(onEnter,4703836:doEvent1,[])
link(Str,9109853:Cell,[(391,340)(111,340)])
}
Add(Hub,12169075,189,378)
{
OutCount=6
link(onEvent1,1918024:doSeparateMT,[])
link(onEvent2,2190689:doWork2,[(247,391)(247,412)])
link(onEvent3,8436583:doText2,[(216,398)(216,367)(303,367)(303,377)])
link(onEvent4,8436583:doSetFocus,[(239,405)(239,419)])
link(onEvent5,8436583:doBringToFront,[(232,412)(232,426)])
link(onEvent6,8436583:doSelectAll,[(223,419)(223,433)])
}
Add(MT_Memory,3691724,140,273)
{
}
Add(Hub,4703836,441,371)
{
link(onEvent1,9109853:doSetData,[(463,377)(463,268)(73,268)(73,300)])
link(onEvent2,726664:doWork2,[])
}
Add(DoData,6992380,497,378)
{
Data=Integer(0)
link(onEventData,2190689:doWork1,[(539,384)(539,351)(340,351)])
}
Add(HubEx,2190689,336,406)
{
link(onEvent,8436583:doVisible,[])
}
Add(If_else,2280621,140,378)
{
Op2=Integer(3)
link(onTrue,12169075:doEvent1,[])
link(Op1,9109853:SubItem,[(146,355)(97,355)])
}
Add(HubEx,726664,469,378)
{
link(onEvent,6992380:doData,[])
}
Add(MTStrTbl,4376548,469,119)
{
Left=5
Top=5
Width=535
Height=460
Color=-16777194
Font=[MS Sans Serif,10,1,128,1]
Name="table"
HintManager="mtst_hint"
Layout="horiz_1"
WidthScale=100
HeightScale=100
DoubleBuffered=0
Columns=#1:1|1:2|1:3|1:4|0:|
ColumnClick=1
DrawManager="mtst_draw"
}
Add(StrList,15034837,112,84)
{
Strings=#27:sdfsdf utyuyt popo;aaaaa;;0|15:fzsdfzs;bbbb;;3|14:sdfszz;cccc;;2|15:sdfszz;ddddd;;0|15:sdfszz;eeeee;;1|15:sdfszz;fffff;;3|15:fzsdfzs;gggg;;2|14:sdfszz;hhhh;;0|16:fzsdfzs;iiiii;;3|16:sdfszz;jjjjjj;;1|
}
Add(ArrayEnum,10041622,126,140)
{
link(onItem,922736:doMTString,[])
link(Array,15034837:Array,[])
}
Add(MT_String,922736,203,126)
{
link(onResult,2904434:doRowAction,[])
}
Add(MST_RowAction,2904434,259,126)
{
MSTControl="table"
}


Как я понимаю нужно из onEscCell MST_UseEditCtrl в doSetData MST_UseEditCtrl передать MT поток с новым текстом, SumItem, Index, но это не получается сделать(
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2148
#4: 2012-10-06 14:02:15 ЛС | профиль | цитата
Вот так можно попробовать сделать через матрицу строк



Add(MainForm,1048914,196,182)
{
Width=556
Height=510
link(onCreate,10041622:doEnum,[])
}
Add(MST_UseEditCtrl,9109853,84,294)
{
MSTControl="table"
link(onCellSize,1918024:doSeparateMT,[(380,300)(380,440)])
link(onEnterCell,2280621:doCompare,[(176,307)(176,440)])
link(onEscCell,11374795:doEvent1,[])
}
Add(MT_MultiData,1918024,399,434)
{
Count=4
Point(Data)
link(onData1,8436583:doLeft,[])
link(onData2,8436583:doTop,[])
link(onData3,8436583:doWidth,[])
link(onData4,8436583:doHeight,[])
}
Add(Edit,8436583,525,420)
{
Left=740
Top=210
Color=16711935
Visible=1
Text=""
DataType=2
MaxLenField=3
Point(doLeft)
Point(doTop)
Point(doWidth)
Point(doHeight)
Point(doVisible)
Point(doSetFocus)
Point(doBringToFront)
Point(doSelectAll)
link(onEnter,4703836:doEvent1,[])
link(Str,9109853:Cell,[(531,373)(111,373)])
}
Add(Hub,12169075,238,434)
{
OutCount=7
link(onEvent1,16124291:doValue,[(280,440)(280,391)])
link(onEvent2,2190689:doWork2,[(387,447)(387,468)])
link(onEvent3,8436583:doText2,[(327,454)(327,433)])
link(onEvent4,8436583:doSetFocus,[(379,461)(379,475)])
link(onEvent5,8436583:doBringToFront,[(372,468)(372,482)])
link(onEvent6,8436583:doSelectAll,[(358,475)(358,489)])
link(onEvent7,7599286:doOn,[(270,482)(270,524)])
}
Add(Hub,4703836,581,427)
{
link(onEvent1,9109853:doSetData,[(604,433)(604,264)(70,264)(70,300)])
link(onEvent2,726664:doWork2,[])
}
Add(DoData,6992380,637,434)
{
Data=Integer(0)
link(onEventData,2190689:doWork1,[(679,440)(679,407)(480,407)])
}
Add(HubEx,2190689,476,462)
{
link(onEvent,8436583:doVisible,[])
}
Add(If_else,2280621,189,434)
{
Op2=Integer(3)
link(onTrue,12169075:doEvent1,[])
link(Op1,54763:Var2,[])
}
Add(HubEx,726664,609,434)
{
link(onEvent,6992380:doData,[])
}
Add(MTStrTbl,4376548,462,182)
{
Left=5
Top=5
Width=535
Height=460
Color=-16777194
Font=[MS Sans Serif,10,1,128,1]
Name="table"
HintManager="mtst_hint"
Layout="horiz_1"
WidthScale=100
HeightScale=100
DoubleBuffered=0
Columns=#1:1|1:2|1:3|1:4|0:|
ColumnClick=1
DrawManager="table_dw"
}
Add(StrList,15034837,252,140)
{
Strings=#27:sdfsdf utyuyt popo;aaaaa;;0|15:fzsdfzs;bbbb;;3|14:sdfszz;cccc;;2|15:sdfszz;ddddd;;0|15:sdfszz;eeeee;;1|15:sdfszz;fffff;;3|15:fzsdfzs;gggg;;2|14:sdfszz;hhhh;;0|16:fzsdfzs;iiiii;;3|16:sdfszz;jjjjjj;;1|
}
Add(ArrayEnum,10041622,266,196)
{
link(onItem,922736:doMTString,[])
link(Array,15034837:Array,[])
}
Add(MT_String,922736,343,182)
{
link(onResult,2904434:doRowAction,[])
}
Add(MST_RowAction,2904434,399,182)
{
MSTControl="table"
}
Add(MST_Matrix,8128272,343,532)
{
MSTControl="table"
}
Add(Memory,14219503,364,385)
{
Point(Data)
link(Data,9109853:Index,[(370,353)(104,353)])
}
Add(Memory,16124291,308,385)
{
Point(Data)
link(onData,14219503:doValue,[])
link(Data,54763:Var1,[(314,361)(195,361)])
}
Add(GetDataEx,54763,189,403)
{
Angle=3
link(Data,9109853:SubItem,[(97,408)])
}
Add(MatrixRW,10413523,343,588)
{
link(Matrix,8128272:Matrix,[])
link(Value,8436583:Text,[(356,579)(531,579)])
link(X,16124291:Value,[(363,495)(314,495)])
link(Y,14219503:Value,[])
}
Add(Switch,7599286,287,504)
{
DataOn=Integer(1)
DataOff=Integer(0)
Point(doOn)
Point(State)
}
Add(IndexToChanel,7763723,287,588)
{
Point(Index)
link(onEvent2,10413523:doWrite,[])
link(Index,7599286:State,[])
}
Add(Hub,11374795,147,308)
{
OutCount=3
link(onEvent1,726664:doWork1,[(613,314)])
link(onEvent2,7763723:doEvent,[(224,321)(224,594)])
link(onEvent3,7599286:doReset,[(232,328)(232,517)])
}

карма: 22

0
Ответов: 26
Рейтинг: 1
#5: 2012-10-06 15:37:33 ЛС | профиль | цитата
Есть одно маленькое НО. Теперь если отредактировать ячейку, нажать Enter, а затем выбрать другую ячейку, то текст в только что отредактированной затирается.
------------ Дoбавленo в 15.36:
Исправленная схема

Add(MainForm,1048914,280,133)
{
Width=556
Height=510
link(onCreate,10041622:doEnum,[])
}
Add(MST_UseEditCtrl,9109853,168,245)
{
MSTControl="table"
link(onCellSize,1918024:doSeparateMT,[(464,251)(464,391)])
link(onEnterCell,2280621:doCompare,[(260,258)(260,391)])
link(onEscCell,11374795:doEvent1,[])
}
Add(MT_MultiData,1918024,483,385)
{
Count=4
Point(Data)
link(onData1,8436583:doLeft,[])
link(onData2,8436583:doTop,[])
link(onData3,8436583:doWidth,[])
link(onData4,8436583:doHeight,[])
}
Add(Edit,8436583,609,371)
{
Left=740
Top=210
Color=16711935
Visible=1
Text=""
DataType=2
MaxLenField=3
Point(doLeft)
Point(doTop)
Point(doWidth)
Point(doHeight)
Point(doVisible)
Point(doSetFocus)
Point(doBringToFront)
Point(doSelectAll)
link(onEnter,4703836:doEvent1,[])
link(Str,9109853:Cell,[(615,324)(195,324)])
}
Add(Hub,12169075,322,385)
{
OutCount=7
link(onEvent1,16124291:doValue,[(364,391)(364,342)])
link(onEvent2,2190689:doWork2,[(471,398)(471,419)])
link(onEvent3,8436583:doText2,[(411,405)(411,384)])
link(onEvent4,8436583:doSetFocus,[(463,412)(463,426)])
link(onEvent5,8436583:doBringToFront,[(456,419)(456,433)])
link(onEvent6,8436583:doSelectAll,[(442,426)(442,440)])
link(onEvent7,7599286:doOn,[(354,433)(354,475)])
}
Add(Hub,4703836,665,378)
{
OutCount=3
link(onEvent1,9109853:doSetData,[(688,384)(688,215)(154,215)(154,251)])
link(onEvent2,726664:doWork2,[])
link(onEvent3,15126158:doWork3,[(705,398)(705,279)])
}
Add(DoData,6992380,721,385)
{
Data=Integer(0)
link(onEventData,2190689:doWork1,[(763,391)(763,358)(564,358)])
}
Add(HubEx,2190689,560,413)
{
link(onEvent,8436583:doVisible,[])
}
Add(If_else,2280621,273,385)
{
Op2=Integer(3)
link(onTrue,12169075:doEvent1,[])
link(Op1,54763:Var2,[])
}
Add(HubEx,726664,693,385)
{
link(onEvent,6992380:doData,[])
}
Add(MTStrTbl,4376548,546,133)
{
Left=5
Top=5
Width=535
Height=460
Color=-16777194
Font=[MS Sans Serif,10,1,128,1]
Name="table"
HintManager="mtst_hint"
Layout="horiz_1"
WidthScale=100
HeightScale=100
DoubleBuffered=0
Columns=#1:1|1:2|1:3|1:4|0:|
ColumnClick=1
DrawManager="table_dw"
}
Add(StrList,15034837,336,91)
{
Strings=#27:sdfsdf utyuyt popo;aaaaa;;0|15:fzsdfzs;bbbb;;3|14:sdfszz;cccc;;2|15:sdfszz;ddddd;;0|15:sdfszz;eeeee;;1|15:sdfszz;fffff;;3|15:fzsdfzs;gggg;;2|14:sdfszz;hhhh;;0|16:fzsdfzs;iiiii;;3|16:sdfszz;jjjjjj;;1|
}
Add(ArrayEnum,10041622,350,147)
{
link(onItem,922736:doMTString,[])
link(Array,15034837:Array,[])
}
Add(MT_String,922736,427,133)
{
link(onResult,2904434:doRowAction,[])
}
Add(MST_RowAction,2904434,483,133)
{
MSTControl="table"
}
Add(MST_Matrix,8128272,399,497)
{
MSTControl="table"
}
Add(Memory,14219503,448,336)
{
Point(Data)
link(Data,9109853:Index,[(454,304)(188,304)])
}
Add(Memory,16124291,392,336)
{
Point(Data)
link(onData,14219503:doValue,[])
link(Data,54763:Var1,[(398,312)(279,312)])
}
Add(GetDataEx,54763,273,354)
{
Angle=3
link(Data,9109853:SubItem,[(181,359)])
}
Add(MatrixRW,10413523,427,539)
{
link(Matrix,8128272:Matrix,[(433,534)(405,534)])
link(Value,8436583:Text,[(440,530)(615,530)])
link(X,16124291:Value,[(447,446)(398,446)])
link(Y,14219503:Value,[])
}
Add(Switch,7599286,371,455)
{
DataOn=Integer(1)
DataOff=Integer(0)
Point(doOn)
Point(State)
}
Add(IndexToChanel,7763723,371,539)
{
Point(Index)
link(onEvent2,10413523:doWrite,[])
link(Index,7599286:State,[])
}
Add(Hub,11374795,231,259)
{
OutCount=3
link(onEvent1,726664:doWork1,[(697,265)])
link(onEvent2,7763723:doEvent,[(308,272)(308,545)])
link(onEvent3,15126158:doWork2,[])
}
Add(HubEx,15126158,312,273)
{
Angle=1
link(onEvent,7599286:doReset,[(316,468)])
}

карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2148
#6: 2012-10-06 15:39:21 ЛС | профиль | цитата
Ну решил же задачу сам, че сразу вопросами-то кидаться
карма: 22

0
Ответов: 26
Рейтинг: 1
#7: 2012-10-06 16:28:02 ЛС | профиль | цитата
Ну основной то вопрос не сам решил, а на основе примера. А отредактированная схема может кому и пригодится.
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2148
#8: 2012-10-06 16:43:57 ЛС | профиль | цитата
hajikov писал(а):
Ну основной то вопрос не сам решил, а на основе примера

Я про последний вопрос, а не про первый -- там где про "маленькое НО"
карма: 22

0
Ответов: 26
Рейтинг: 1
#9: 2012-10-06 17:14:25 ЛС | профиль | цитата
Привычка сначала сообщить о баге, а затем его пытаться исправить, а то некоторые берут кусок и без полного теста к себе в программы засовывают.
карма: 0

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