--- Добавлено в 2024-12-09 03:49:24
Кстати, я немного подкорректировал твою схему. Там убрал коррекцию размера, тк ее можно сейчас сделать в элементе. Добавил выход по ESC, тк внутренний код ESC не работает, те форма таблице тупо не посылает код ESC. И замкнул выход приемника координат на перерисвку панели, чтобы корректно отрабатывалось слежение за изменением размера таблицы. Таблицу для теста раздвинул на всю форму.
Схема
Add(MainForm,10809136,98,140)
{
Width=778
Height=582
Position=1
Point(onKeyDown)
link(onCreate,10041622:doEnum,[])
link(onKeyDown,3462281:doCase,[(172,167)(172,300)])
}
Add(MST_UseEditCtrl,5561109,357,294)
{
MSTControl="testTable"
link(onCellSize,12756869:doRect,[(396,300)(396,286)(585,286)(585,300)])
link(onEnterCell,5484721:doValue,[])
link(onEscCell,7922413:doEvent1,[(417,314)(417,433)])
}
Add(Memory,5484721,518,301)
{
Point(Data)
link(onData,15587215:doEvent1,[])
link(Data,5561109:Cell,[(524,292)(510,292)(510,334)(384,334)])
}
Add(Memory,10271330,301,266)
{
}
Add(If_else,16568077,511,441)
{
@Hint=#52:Проверка на разницу данных до редактирования и после|
link(onTrue,14792882:doString,[])
link(onFalse,3558215:doString,[(760,454)(760,552)])
link(Op1,10271330:Value,[(517,362)(307,362)])
link(Op2,5484721:Value,[])
}
Add(MTStrTbl,5133893,315,140)
{
Width=762
Height=543
Align=5
Font=[MS Sans Serif,12,0,0,1]
WinStyle=4
Name="testTable"
Columns=#4:№=40|9:Фильм=200|9:Год=60==2|11:Жанр=200==2|12:Описание=300|0:|
Grid=0
}
Add(StrList,15034837,168,98)
{
Strings=#49:1;Звездные войны;1980;фантастика;Фильм о войнах )|32:2;1+1;2003;комедия;Фильм о двух |39:3;Убить Билла;1990;боевик;Убивают Билла|53:4;Крепкий орешик 2;1999;боевик;Встретил жену с работы|52:5;Куб;1993;фантастика;Для любителей трехмерных фигур|48:6;Аватар;2004;фантастика;Управляют синими телами|
}
Add(MT_String,922736,231,140)
{
link(onResult,2904434:doRowAction,[])
}
Add(ArrayEnum,10041622,182,154)
{
link(onItem,922736:doMTString,[])
link(Array,15034837:Array,[])
}
Add(MST_RowAction,2904434,273,140)
{
MSTControl="testTable"
}
Add(ChildPanelEx,12756869,616,294)
{
link(onChange,3117519:doEvent1,[(656,300)(656,227)(244,227)(244,272)])
link(onKillFocus,15319488:doWork,[])
link(Index,8653266:getVar,[])
}
BEGIN_SDK
Add(EditMultiEx,14376481,21,21)
{
WorkCount=#6:doRect|7:doStart|6:doStop|
EventCount=#8:onChange|11:onKillFocus|
DataCount=#5:Index|
Width=818
Height=613
link(doRect,14215607:doValue,[])
link(doStart,10318564:doCompare,[(42,34)(42,223)])
link(doStop,1059799:doEvent1,[(34,41)(34,433)])
}
Add(Panel,5130657,609,63)
{
Left=35
Top=105
Visible=1
BevelInner=0
Point(doLeft)
Point(doTop)
Point(doWidth)
Point(doHeight)
Point(doVisible)
}
Add(IndexToChanel,981480,147,224)
{
Count=5
Point(Index)
link(onEvent2,2554451:doWork1,[(259,237)])
link(onEvent3,3747397:doEvent1,[(219,244)(219,468)])
link(onEvent4,3299747:doEvent1,[])
link(onEvent5,2554451:doWork2,[])
link(Index,11075478:Var3,[(153,182)])
}
Add(MT_MultiData,13383753,329,70)
{
Count=4
Point(Data)
link(onData1,5130657:doLeft,[])
link(onData2,5130657:doTop,[])
link(onData3,5130657:doWidth,[])
link(onData4,4482135:doWork2,[])
link(Data,14215607:Value,[])
}
Add(Hub,3299747,273,245)
{
OutCount=5
link(onEvent1,10874155:doWork2,[(308,251)(308,307)])
link(onEvent2,12973147:doBringToFront,[])
link(onEvent3,12973147:doSelectString,[])
link(onEvent4,12973147:doSetFocus,[])
link(onEvent5,6349023:doCalc,[(406,279)(406,335)])
}
Add(MT_Memory,14215607,329,21)
{
link(onData,7516697:doWork1,[(368,27)(368,62)(277,62)])
}
Add(ChanelToIndex,10874155,322,294)
{
link(onIndex,12973147:doVisible,[(412,300)(412,279)])
}
Add(Edit,11196193,420,378)
{
Left=1155
Top=1175
Align=5
Color=8421631
Font=[MS Sans Serif,12,0,0,1]
Visible=1
WinStyle=1
Text=""
Point(doBringToFront)
Point(doSetFocus)
Point(doVisible)
Point(onKillFocus)
link(onChange,6115875:doWork2,[])
link(onEnter,11308046:doWork2,[])
link(onKillFocus,7354813:doWork2,[])
}
Add(Hub,5035439,266,364)
{
OutCount=4
link(onEvent1,11308528:doWork2,[(294,370)(294,419)])
link(onEvent2,11196193:doBringToFront,[(385,377)(385,398)])
link(onEvent3,11196193:doSetFocus,[(376,384)(376,405)])
link(onEvent4,11196193:doText2,[])
}
Add(ChanelToIndex,11308528,322,406)
{
link(onIndex,11196193:doVisible,[])
}
Add(Hub,1059799,70,427)
{
InCount=2
link(onEvent1,3963705:doEvent,[(94,433)(94,384)])
link(onEvent2,5685364:doWork1,[(237,440)(237,111)])
}
Add(Edit,6525929,420,476)
{
Left=1155
Top=1175
Align=5
Color=8421631
Font=[MS Sans Serif,12,0,0,1]
Visible=1
WinStyle=1
Text=""
Alignment=2
DataType=1
MaxLenField=4
Point(doBringToFront)
Point(doSetFocus)
Point(doVisible)
Point(onKillFocus)
link(onChange,6115875:doWork3,[(660,482)])
link(onEnter,15760508:doWork2,[])
link(onKillFocus,15760508:doWork3,[(689,496)])
}
Add(Hub,3747397,259,462)
{
OutCount=4
link(onEvent1,5790774:doWork2,[(280,468)(280,517)])
link(onEvent2,6525929:doBringToFront,[(385,475)(385,496)])
link(onEvent3,6525929:doSetFocus,[(376,482)(376,503)])
link(onEvent4,6525929:doText2,[])
}
Add(ChanelToIndex,5790774,322,504)
{
link(onIndex,6525929:doVisible,[])
}
Add(Hub,7068085,105,217)
{
OutCount=3
link(onEvent1,7516697:doWork2,[(131,223)(131,76)])
link(onEvent2,981480:doEvent,[])
link(onEvent3,5685364:doWork2,[(143,237)(143,118)])
}
Add(ChanelToIndex,5685364,329,105)
{
link(onIndex,5130657:doVisible,[(383,111)(383,104)])
}
Add(HubEx,2554451,255,252)
{
Angle=1
link(onEvent,5035439:doEvent1,[(259,370)])
}
Add(HubEx,7029855,656,217)
{
Angle=3
link(onEvent,14376481:onChange,[(660,27)])
}
Add(HubEx,6115875,656,378)
{
Angle=3
link(onEvent,7029855:doWork3,[])
}
Add(If_else,10318564,63,217)
{
Type=5
Op2=Integer(0)
link(onTrue,7068085:doEvent1,[])
link(Op1,10602446:Var2,[])
AddHint(6,-25,21,13,Op2)
}
Add(GetDataEx,10602446,63,177)
{
Angle=3
link(Data,14376481:Index,[(27,182)])
}
Add(ListBox,12973147,469,224)
{
Left=465
Top=255
Align=5
Color=8421631
Font=[MS Sans Serif,12,0,0,1]
Visible=1
Strings=#6:боевик|7:комедия|10:фантастика|
DataType=1
Point(doBringToFront)
Point(doSelectString)
Point(onKillFocus)
Point(doSetFocus)
Point(doVisible)
link(onClick,2883110:doEvent1,[(513,237)(513,223)])
link(onKillFocus,5573420:doWork2,[])
}
Add(MathParse,6349023,476,329)
{
DataCount=1
MathStr="%1 * 22 "
link(onResult,4482135:doWork3,[(571,335)])
link(X1,12973147:Count,[])
}
Add(HubEx,4482135,567,91)
{
link(onEvent,5130657:doHeight,[])
}
Add(Hub,2883110,525,217)
{
link(onEvent1,7029855:doWork2,[])
link(onEvent2,5785315:doWork2,[])
}
Add(IndexToChanel,3963705,105,378)
{
Count=5
Point(Index)
link(onEvent2,1512234:doWork1,[(171,391)])
link(onEvent3,5790774:doWork1,[(154,398)(154,510)])
link(onEvent4,10874155:doWork1,[(147,405)(147,300)])
link(onEvent5,1512234:doWork2,[])
link(Index,11075478:Var2,[])
}
Add(HubEx,1512234,167,406)
{
link(onEvent,11308528:doWork1,[])
}
Add(GetDataEx,11075478,105,177)
{
Angle=3
link(Data,10602446:Var3,[])
}
Add(HubEx,5785315,685,224)
{
Angle=3
link(onEvent,14376481:onKillFocus,[(689,34)])
}
Add(HubEx,5573420,685,238)
{
Angle=3
link(onEvent,5785315:doWork3,[])
}
Add(HubEx,11308046,685,385)
{
Angle=3
link(onEvent,5573420:doWork3,[])
}
Add(HubEx,7354813,685,392)
{
Angle=3
link(onEvent,11308046:doWork3,[])
}
Add(HubEx,15760508,685,483)
{
Angle=3
link(onEvent,7354813:doWork3,[])
}
Add(HubEx,7516697,273,70)
{
link(onEvent,13383753:doSeparateMT,[])
}
END_SDK
Add(Hub,7922413,427,427)
{
link(onEvent1,12756869:doStop,[(596,433)(596,314)])
link(onEvent2,4332492:doCalc,[(459,440)(459,447)])
}
Add(Hub,3117519,266,266)
{
link(onEvent1,1993221:doWork2,[])
link(onEvent2,5561109:doSetData,[(291,279)(291,300)])
}
Add(HubEx,1993221,287,266)
{
link(onEvent,10271330:doValue,[])
}
Add(Hub,15587215,567,301)
{
link(onEvent1,12756869:doStart,[])
link(onEvent2,1993221:doWork1,[(592,314)(592,258)(291,258)])
}
Add(LineBreakEx,7209891,329,378)
{
Caption="col"
Type=3
link(_Data,5561109:SubItem,[(335,334)(370,334)])
}
Add(LineBreakEx,15433687,371,378)
{
Caption="row"
Type=3
link(_Data,5561109:Index,[])
}
Add(LineBreakEx,5725187,770,406)
{
Caption="col"
Type=2
}
Add(LineBreakEx,12280975,812,406)
{
Caption="row"
Type=2
}
Add(LineBreakEx,8653266,616,266)
{
Caption="col"
Type=2
}
Add(FormatStr,14792882,805,441)
{
DataCount=3
Mask="[событие %3] Данные в %1 колонке %2 строке остались без изменения"
link(onFString,13421160:doWork2,[])
link(Str1,5725187:getVar,[(811,432)(776,432)])
link(Str2,12280975:getVar,[])
AddHint(-92,-80,199,26,Mask)
}
Add(LineBreakEx,11450873,770,511)
{
Caption="col"
Type=2
}
Add(LineBreakEx,7881424,812,511)
{
Caption="row"
Type=2
}
Add(FormatStr,3558215,805,546)
{
DataCount=3
Mask="[событие %3] Данные в %1 колонке %2 строке поменялись!!!"
link(onFString,13421160:doWork3,[(858,552)])
link(Str1,11450873:getVar,[(811,537)(776,537)])
link(Str2,7881424:getVar,[])
AddHint(-71,51,199,26,Mask)
}
Add(MathParse,4332492,469,441)
{
DataCount=0
MathStr="%0 + 1"
link(onResult,16568077:doCompare,[])
}
Add(HubEx,13421160,854,441)
{
link(onEvent,6997827:doAdd,[])
}
Add(ListBox,6997827,875,441)
{
Left=10
Top=430
Width=745
Height=105
AddType=1
}
Add(InfoTip,10305296,784,28)
{
Info=#54:Это должно обрабатываться при doStop в MST_UseEditCtrl|0:|57:И если еще не закончено редактирование (было onEnterCell)|0:|33:Сделать onStop и после onEscCell |
Font=[MS Sans Serif,12,0,0,1]
Frame=2
HAlign=0
Width=288
Height=312
Margin=5
}
Add(Check,15319488,672,301)
{
Caption="doStop"
link(onEvent,3346197:doWork1,[(732,307)(732,223)(235,223)])
}
Add(StyleXP,12602425,56,140)
{
}
Add(Case,3462281,182,294)
{
Value=Integer(27)
link(onTrue,3346197:doWork2,[])
}
Add(HubEx,3346197,231,301)
{
link(onEvent,5561109:doStop,[])
}
Редактировалось 3 раз(а), последний 2024-12-09 03:51:59