Вверх ↑
Ответов: 2265
Рейтинг: 676
#1: 2019-06-28 13:03:15 ЛС | профиль | цитата
fox-video, чуть вашу схему подтесал топориком, надеюсь поможет в понимании некоторых вопросах.
схема


Add(MTStrTbl,1220665,791,168)
{
Top=32
Width=685
Height=133
Align=5
Name="табл"
Layout="1"
HeightScale=100
TextAlign=2
Style=4
Grid=0
DrawManager="draw"
}
Add(MainForm,13502296,196,168)
{
Width=701
Height=204
Position=1
}
Add(StrList,14940135,378,119)
{
Strings=#12:№ п.п.=40==2|12:Адрес=100==0|14:Телефон=100==0|
}
Add(Hub,10281980,308,182)
{
OutCount=4
link(onEvent1,78252:doEvent1,[(597,188)(597,216)])
link(onEvent2,3278472:doEnum,[])
link(onEvent3,13501104:doEnum,[])
link(onEvent4,2227269:doEvent1,[(382,209)(382,237)])
}
Add(ArrayEnum,3278472,392,189)
{
link(onItem,14792321:doEvent1,[(446,195)(446,181)])
link(Array,14940135:Array,[])
}
Add(StrList,1078822,448,119)
{
Strings=#21:1;Ленина, 140;7-52-36|22:2;Гагарина, 18;7-17-44|22:3;Пушкина, 29Б;5-56-21|
}
Add(ArrayEnum,13501104,462,196)
{
link(onItem,5004350:doWork2,[(506,202)(506,216)])
link(Array,1078822:Array,[])
}
Add(MT_String,7629212,546,196)
{
link(onResult,6916704:doAddRow,[(606,202)(606,174)])
}
Add(StyleXP,4951727,196,119)
{
}
Add(ChildPanel,10794649,791,217)
{
@Hint=#26:Самодельныая шапка таблицы|
link(onEvent1,10515223:doSort,[])
AddHint(-73,60,173,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,12543744,21,21)
{
EventCount=1
WorkCount=3
Width=398
Height=193
link(doWork1,12924194:##clear,[(72,27)(72,41)])
link(doWork2,12924194:##add,[(63,34)(63,48)])
link(doWork3,12693430:doHeight,[(45,41)(45,160)])
}
Add(Panel,12693430,105,147)
{
Width=685
Height=1
Align=2
Color=16777215
ModeSp=3
SizeSp=2
BevelInner=0
Point(doHeight)
}
Add(ChildPanelEx,12924194,105,35)
{
Mode=1
link(onEventData,12543744:onEvent1,[(155,41)(155,27)])
link(индекс,12924194:##eventIndex,[(111,23)(93,23)(93,74)(111,74)])
}
BEGIN_SDK
Add(EditMultiEx,6203688,21,21)
{
WorkCount=#7:##clear|5:##add|
EventCount=#11:onEventData|
VarCount=#12:##eventIndex|
DataCount=#6:индекс|0:|
Width=671
Height=249
Point(##clear)
Point(##add)
Point(##eventIndex)
link(##add,15060814:doSplit,[(42,34)(42,55)])
}
Add(Panel,12581313,266,56)
{
Left=35
Top=105
Width=1920
Height=1080
Align=1
Color=16777215
ModeSp=3
SizeSp=2
ColorSp=15790320
BevelInner=0
Point(doWidth)
Point(onResize)
Point(Width)
Point(doColor)
link(onResize,2008545:doCompare,[])
}
Add(IndexToChanel,8744723,546,98)
{
Count=1
Point(Data)
link(onEvent1,6203688:onEventData,[(611,104)(611,27)])
link(Data,10450616:Var3,[(552,26)])
}
Add(GetDataEx,10450616,455,21)
{
Angle=3
link(Data,12739849:Var3,[])
}
Add(MultiElementEx,2303422,210,105)
{
@Hint=#15:Изменение цвета|
link(onColor1,12581313:doColor,[(254,111)(254,76)])
link(onColor2,5030271:doEvent1,[(250,118)(250,246)(51,246)(51,104)])
AddHint(68,18,105,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,10027322,21,21)
{
WorkCount=#8:doEvent1|9:doEvent11|
EventCount=#8:onColor1|8:onColor2|
Width=510
Height=214
link(doEvent1,8553288:doEvent1,[(39,27)(39,125)])
link(doEvent11,9701472:doEvent1,[(30,34)(30,48)])
}
Add(Memory,11849292,315,42)
{
Default=Integer(100)
link(onData,13506573:doEvent1,[])
}
Add(MMTimer,2344419,126,42)
{
Interval=20
Enable=1
@IsLib=True
link(onTimer,1443830:doOperation,[])
}
Add(Hub,9701472,56,42)
{
link(onEvent1,2344419:doTimer,[])
link(onEvent2,6590036:doWork1,[(81,55)])
}
Add(Hub,8553288,56,119)
{
link(onEvent1,12999749:doTimer,[])
link(onEvent2,14164394:doWork2,[(88,132)(88,55)])
}
Add(Math,1443830,189,42)
{
Op2=5
link(onResult,3786256:doCompare,[])
link(Op1,9271514:Var3,[(195,30)(181,30)])
}
Add(If_else,3786256,238,42)
{
Type=3
Op2=Integer(100)
link(onTrue,12991967:doWork2,[])
link(onFalse,14164394:doWork3,[(282,55)(282,86)(109,86)])
}
Add(Math,2973136,175,119)
{
OpType=1
Op2=5
link(onResult,12173902:doCompare,[])
link(Op1,9271514:Var2,[])
}
Add(If_else,12173902,238,119)
{
Type=4
Op2=Integer(0)
link(onTrue,12991967:doWork3,[(305,125)])
link(onFalse,6590036:doWork2,[(282,132)(282,164)(72,164)(72,139)])
}
Add(GetDataEx,9271514,175,92)
{
Angle=1
link(Data,11849292:Value,[(321,97)])
}
Add(ColorShade,8825518,399,42)
{
Color=15780518
Mode=0
link(onResult,10027322:onColor1,[(481,48)(481,27)])
}
Add(ColorShade,3690173,399,84)
{
Color=16771802
Mode=0
link(onResult,10027322:onColor2,[(499,90)(499,34)])
}
Add(Hub,13506573,364,42)
{
link(onEvent1,8825518:doShade,[])
link(onEvent2,3690173:doShade,[(388,55)(388,90)])
}
Add(MMTimer,12999749,126,119)
{
elink(2344419)
link(onTimer,2973136:doOperation,[])
}
Add(HubEx,12991967,301,42)
{
link(onEvent,11849292:doValue,[])
}
Add(HubEx,14164394,105,49)
{
link(onEvent,2344419:doStop,[])
}
Add(HubEx,6590036,77,133)
{
link(onEvent,12999749:doStop,[(105,139)(105,132)])
}
END_SDK
Add(Hub,5030271,77,98)
{
link(onEvent1,7841714:doColor,[])
link(onEvent2,10694098:doWork3,[(104,111)])
}
Add(PaintBox,7841714,147,84)
{
Width=1920
Height=1080
Align=5
Color=16777215
ClearBeforeDraw=0
Point(Width)
Point(Height)
Point(onResize)
Point(doColor)
Point(onMouseDown)
Point(onMouseEnter)
Point(onMouseLeave)
link(onBeforeDraw,8847184:doDraw,[(197,90)(197,234)(125,234)(125,195)])
link(onResize,10694098:doWork1,[(191,97)(191,79)(104,79)])
link(onMouseDown,8744723:doEvent,[])
link(onMouseEnter,2303422:doEvent1,[])
link(onMouseLeave,2303422:doEvent11,[])
}
Add(Img_TextInRect,8847184,133,189)
{
Point1=65537
Point2AsOffset=0
OffsetRight=2
AlignHorizon=2
Alignvertical=2
Point(doAlignHorizon)
link(Bitmap,7841714:Bitmap,[(139,155)(153,155)])
link(Text,15060814:RemaindStr,[(146,180)(69,180)])
link(Point2,10999290:Point,[])
}
Add(PointXY,10999290,154,133)
{
link(X,7841714:Width,[])
link(Y,7841714:Height,[])
}
Add(HubEx,10694098,100,84)
{
link(onEvent,7841714:doRefresh,[])
}
Add(MultiStrData,15060814,63,49)
{
Char="="
Count=3
Direct=1
link(onPart1,8847184:doAlignHorizon,[(118,55)(118,202)])
link(onPart3,12581313:doWidth,[])
}
Add(If_else,2008545,308,63)
{
Op2=Integer(0)
link(onTrue,3284586:doData,[])
link(onFalse,10977285:doOperation,[])
link(Op1,12739849:Var2,[])
}
Add(Math,10977285,357,70)
{
Op2=4
link(onResult,15471223:doWork3,[(445,76)])
link(Op1,1090971:Var2,[])
}
Add(DoData,3284586,399,63)
{
link(onEventData,15471223:doWork2,[])
link(Data,1090971:Var3,[(405,47)])
}
Add(GetDataEx,1090971,357,42)
{
Angle=3
link(Data,12581313:Width,[(350,47)(350,100)(272,100)])
}
Add(HubEx,15471223,441,63)
{
link(onEvent,1913287:doAdd,[])
}
Add(GetDataEx,12739849,308,21)
{
Angle=3
link(Data,6203688:индекс,[(27,26)])
}
Add(MST_ColAction,2547399,504,63)
{
Action=6
MSTControl="parent.parent.табл"
}
Add(MT_Add,1913287,455,63)
{
InputMT=1
link(onAdd,2547399:doColAction,[])
link(Data,10450616:Var2,[])
}
END_SDK
END_SDK
Add(Hub,14792321,644,175)
{
InCount=3
link(onEvent1,6916704:doAddCols,[])
link(onEvent2,10794649:doWork2,[(709,188)(709,230)])
}
Add(MST_SortInCol,10515223,854,217)
{
MSTControl="табл"
}
Add(MST_DrawManager,10020943,854,168)
{
Name="draw"
SingleString=0
TabGrid=0
TabGridFrame=0
StyleGrid3D=1
Gradient=0
GradientColor=16766387
FrameColor=16684946
BkFrameColor=16774376
ShadowColor=536870912
LightTxtColor=-16777209
GutterColor=16777215
}
Add(MST_DB,6916704,728,168)
{
MSTControl="табл"
Point(doClearAll)
}
Add(Button,7611304,259,182)
{
Left=10
Top=140
Caption="1"
Data=Integer(18)
link(onClick,10281980:doEvent1,[])
}
Add(Button,1313184,259,322)
{
Left=75
Top=140
Caption="2"
Data=Integer(32)
link(onClick,6349046:doEvent1,[])
}
Add(Button,5397854,259,462)
{
Left=140
Top=140
Caption="3"
Data=Integer(48)
link(onClick,6395279:doEvent1,[])
}
Add(StrList,8098602,378,259)
{
Strings=#12:№ п.п.=30==2|21:Адрес магазина=100==0|25:Телефон для заявок=100==2|
}
Add(Hub,6349046,308,322)
{
OutCount=4
link(onEvent1,78252:doEvent2,[(636,328)(636,223)])
link(onEvent2,8786698:doEnum,[])
link(onEvent3,11673750:doEnum,[])
link(onEvent4,2227269:doEvent2,[(653,349)(653,244)])
}
Add(ArrayEnum,8786698,392,329)
{
link(onItem,14792321:doEvent2,[(616,335)(616,188)])
link(Array,8098602:Array,[])
}
Add(StrList,7585486,448,259)
{
Strings=#21:1;Ленина, 140;7-52-36|22:2;Гагарина, 18;7-17-44|22:3;Пушкина, 29Б;5-56-21|0:|
}
Add(ArrayEnum,11673750,462,336)
{
link(onItem,11202939:doWork2,[])
link(Array,7585486:Array,[])
}
Add(HubEx,5004350,525,210)
{
link(onEvent,7629212:doMTString,[])
}
Add(StrList,11417168,385,399)
{
Strings=#12:№ п.п.=30==2|21:Адрес магазина=100==0|25:Телефон для заявок=100==2|45:Сотовый номер дежурного администратора=100==2|
}
Add(Hub,6395279,315,462)
{
OutCount=4
link(onEvent1,78252:doEvent3,[(644,468)(644,230)])
link(onEvent2,14324283:doEnum,[])
link(onEvent3,5515100:doEnum,[])
link(onEvent4,2227269:doEvent3,[(662,489)(662,251)])
}
Add(ArrayEnum,14324283,399,469)
{
link(onItem,14792321:doEvent3,[(626,475)(626,195)])
link(Array,11417168:Array,[])
}
Add(StrList,7074781,455,399)
{
Strings=#33:1;Ленина, 140;7-52-36;8-ХХХ-ХХ-ХХ|34:2;Гагарина, 18;7-17-44;8-ХХХ-ХХ-ХХ|34:3;Пушкина, 29Б;5-56-21;8-ХХХ-ХХ-ХХ|0:|
}
Add(ArrayEnum,5515100,469,476)
{
link(onItem,11202939:doWork3,[(529,482)])
link(Array,7074781:Array,[])
}
Add(HubEx,11202939,525,336)
{
Angle=3
link(onEvent,5004350:doWork3,[])
}
Add(Hub,78252,658,210)
{
InCount=3
link(onEvent1,6916704:doClearAll,[(696,216)(696,188)])
link(onEvent2,10794649:doWork1,[])
}
Add(Hub,2227269,679,231)
{
InCount=3
OutCount=1
link(onEvent1,10794649:doWork3,[])
}
Что исправил:
1. Нет смысла формировать строку (название, выравнивание, ширина) для столбца и использовать MST_ArrayCols если нужно просто изменить ширину столбца. MST_ColAction с свойством WidthCol достаточно.
2. Незачем запоминать индекс ##index, его всегда можно получить ##eventIndex.
3. Отрисовку текста на PaintBox можно организовать задействовав doRefresh. При таком подходе рисования нет смысла использовать doClear, свойство ClearBeforDraw = True очистит.
4. Незачем постоянно получать данные Top и Left от PaintBox-а для Point1 если они постоянные.
5. Ставить DoData после IndexToChanel нет необходимости есть точка Data.
карма: 11

1
Голосовали:Poputchik