Не знаю, понравится ли предложение.
Дополнить эту серию таким компонентом, как Img_Rectangle и Img_Ellipse он должен динамически создавать фигуры:
1. различной геометрии (прямоугольник, эллипс, ромб, (трапецию?)...треугольник, как в примере белая фигура - вывести точку.
Примечание: Часть прямоугольника не входящая в фигуру должна (может) быть прозрачной.
2. фигуру можно перемещать мышкой, как в примере белая фигура.
3. иметь подсказку. Подсказка формируется динамически при создании фигуры, как в примере белая фигура - вывести точку.
4. цвет заливки и контура формируется динамически при создании фигуры, как в примере синяя, или белая фигура - вывести точки.
5. надпись формируется динамически при создании фигуры, как в примере синяя фигура - вывести точку.
Примечание: размеры фигуры формируются сообразно длине и шрифту(размеру) надписи (X,Y). Надпись центрируется (не надо лево-право).
6. координаты формируются динамически при создании фигуры, как в примере синяя фигура - вывести точку.
Пример. http://forum.hiasm.net/forum_serv.php?q=56&id=4053
Add(MainForm,2953706,21,105)
{
Width=770
Height=549
Point(Width)
Point(Height)
Point(Handle)
link(onCreate,78395:doEvent1,[(117,125)(117,209)])
}
Add(Hub,78395,280,203)
{
OutCount=3
link(onEvent1,10658158:doAlign,[(312,209)(312,188)])
link(onEvent2,2997142:doFor,[(306,216)(306,234)(149,234)(149,251)])
}
Add(Img_TextEx,16636350,329,252)
{
Font=[MS Sans Serif,8,0,-16777211,1]
Point(X)
Point(Y)
link(Bitmap,14438375:Var2,[])
link(Text,6579562:Value,[(342,166)(412,166)])
link(Y,5527788:Var2,[(356,240)(293,240)])
}
Add(MathParse,7729257,245,252)
{
DataCount=4
MathStr="((%1 /(%3+ 1))* %4)- (%2/2)"
ResultType=0
link(onResult,253803:doEvent1,[(289,258)(289,244)])
link(X1,2953706:Width,[(251,194)(27,194)])
link(X2,3657703:Var1,[(258,240)(296,240)(296,296)])
link(X3,15305470:Var2,[])
link(X4,2997142:Position,[(272,240)(220,240)(220,289)(167,289)])
}
Add(Memory,3354146,259,133)
{
Default=Integer(7)
}
Add(For,2997142,161,245)
{
Start=1
link(onEvent,816330:doEvent1,[])
link(End,15305470:Var1,[(174,187)])
}
Add(GetDataEx,15305470,259,182)
{
link(Data,3354146:Value,[])
}
Add(PaintBox,10658158,329,168)
{
Top=50
Width=762
Height=472
Align=4
Point(doAlign)
Point(onMouseMove)
Point(MouseX)
Point(MouseY)
Point(Handle)
}
Add(GetDataEx,14438375,329,210)
{
link(Data,10658158:Bitmap,[])
}
Add(Hub,253803,301,238)
{
OutCount=3
link(onEvent1,12634381:doEvent1,[(353,244)(353,139)])
link(onEvent2,11318370:doDraw,[(395,251)(395,356)])
link(onEvent3,16636350:doDraw,[])
}
Add(PointXY,497124,441,231)
{
Y=52
link(X,438429:Result,[])
link(Y,7988523:Result,[])
}
Add(PointXY,631950,497,231)
{
link(X,8930881:Result,[])
link(Y,10915429:Result,[(510,201)(552,201)])
}
Add(GetDataEx,3657703,315,291)
{
Angle=1
link(Data,16636350:TextWidth,[(335,296)])
}
Add(Memory,6579562,406,28)
{
Default=String(qwerty 123456)
}
Add(Img_Ellipse,11318370,476,350)
{
Point2AsOffset=0
UseOffsetFill=1
Style=1
Color=15780518
BgColor=15780518
Point(Point1)
Point(Point2)
Point(BgColor)
link(Bitmap,14438375:Var3,[(482,215)])
link(Point1,497124:Point,[(496,306)(447,306)])
link(Point2,631950:Point,[])
}
Add(Math,438429,441,133)
{
OpType=1
Op2=3
}
Add(Math,8930881,497,140)
{
Op2=8
link(Op1,3657703:Var3,[(503,128)(321,128)])
}
Add(Math,10915429,546,140)
{
Op2=8
link(Op1,5458469:Var1,[(552,128)(349,128)])
}
Add(Hub,12634381,385,133)
{
OutCount=4
link(onEvent1,438429:doOperation,[])
link(onEvent2,8930881:doOperation,[])
link(onEvent3,10915429:doOperation,[(473,153)(473,146)])
link(onEvent4,7988523:doOperation,[(423,160)(423,188)])
}
Add(MathParse,7921612,224,343)
{
MathStr="(%1 * %2) + (%1 * %2)"
link(X2,5458469:Var2,[(237,321)(349,321)])
}
Add(Hub,816330,210,245)
{
OutCount=3
link(onEvent1,5113320:doGetString,[(242,251)(242,69)])
link(onEvent2,7921612:doCalc,[(236,258)(236,304)(212,304)(212,349)])
link(onEvent3,7729257:doCalc,[(234,265)(234,258)])
}
Add(GetDataEx,5527788,287,364)
{
Angle=2
link(Data,7921612:Result,[(293,387)(230,387)])
}
Add(Math,7988523,448,182)
{
OpType=1
Op2=3
link(Op1,5527788:Var3,[(454,170)(375,170)(375,369)])
}
Add(GetDataEx,5458469,343,291)
{
Angle=3
link(Data,16636350:TextHeight,[(342,296)])
}
Add(MoveWindow,9062231,427,532)
{
link(Handle,224405:Handle,[])
}
Add(FlowCharts,224405,427,469)
{
Left=340
Top=180
Width=90
Height=30
Color=-256
Cursor=2
WinStyle=2
Hint="Hint"
PenColor=255
BlockType=3
Point(Handle)
Point(onMouseDown)
Point(onMouseMove)
Point(onMove)
Point(Left)
Point(Top)
Point(PHandle)
Point(doWidth)
Point(doColor)
link(onMouseDown,9062231:doMove,[(471,475)(471,507)(415,507)(415,538)])
}
Add(StrList,5113320,259,21)
{
Strings=#8:qwerty 1|11:asdfghjkl 2|12:zxcvbnm yyyy|10:1234567890|16:lkjhgfds zxcvbmn|14:efghju fgh jkj|9:zxc cvbnm|8:qwerty 1|0:|
Point(doGetString)
Point(onGetString)
link(onGetString,6579562:doValue,[])
}
Компонент для примера (потом удалить). http://forum.hiasm.net/forum_serv.php?q=56&id=4052
Пример возможного применения.
http://forum.hiasm.net/forum_serv.php?q=56&id=4054
Схему парсера не привожу, - много новых компонентов, да и не в тему, можно замутить отдельной темой.