Вверх ↑
Этот топик читают: Гость
Ответов: 62
Рейтинг: 0
#1: 2011-01-01 22:10:28 ЛС | профиль | цитата
С Новым годом !Есть рабочая схема(взял с нашего форума)[url=load.php?a=21985]code_21984.txt[/url] Рисует сетку на PaintBox.При размещении схемы в MultiElementEx[url=load.php?a=21986]code_21985.txt[/url]сетка рисуеться на доли секунды и пропадает . В чем ошибка ?Схему в MultiElementEx размещал по образу другой ,взятой на форуме счемы

Add(MainForm,5476612,308,161)
{
Left=20
Top=105
Width=539
Height=368
Font=[Arial,8,0,0,1]
}
Add(Timer,3556552,385,140)
{
Interval=10
link(onTimer,9244294:doRefresh,[])
}
Add(PaintBox,9244294,434,140)
{
Left=135
Top=55
Width=210
Height=210
Color=12639424
ClearBeforeDraw=0
link(onBeforeDraw,9184855:doFor,[])
}
Add(Button,331381,371,189)
{
Left=200
Top=30
Width=65
Font=[Arial,8,0,0,1]
Caption="Add"
link(onClick,14227323:##add,[])
}
Add(MultiElementEx,14227323,434,189)
{
Mode=1
link(Handle,9244294:Bitmap,[])
}
BEGIN_SDK
Add(EditMultiEx,10129213,3,3)
{
WorkCount=#5:##add|8:##select|
VarCount=#7:##count|
DataCount=#6:Handle|
Width=440
Height=319
Point(##add)
Point(##select)
Point(##count)
link(##add,2149117:doRandom,[(19,9)(19,55)])
link(##select,10271306:doDraw,[(14,16)(14,251)])
}
Add(Img_Ellipse,10271306,84,245)
{
Point2AsOffset=0
Point(Point1)
Point(Point2)
link(onDraw,2658985:doOperation,[])
link(Bitmap,10129213:Handle,[(90,34)(9,34)])
link(Point1,4655807:Point,[])
link(Point2,5914282:Point,[(111,233)(139,233)])
}
Add(PointXY,5914282,133,189)
{
X=10
Y=10
}
Add(Memory,7646524,126,49)
{
link(onData,2559567:doWork1,[(169,55)(169,167)])
}
Add(Memory,10908804,189,49)
{
link(onData,2196150:doWork1,[(268,55)(268,167)])
}
Add(PointXY,4655807,98,140)
{
link(X,6591336:Var1,[(104,114)])
link(Y,13022105:Var1,[(111,121)])
}
Add(MultiElement,2559567,210,161)
{
}
BEGIN_SDK
Add(EditMulti,2784491,3,3)
{
WorkCount=1
VarCount=1
Height=102
link(doWork1,13198225:doCompare,[(26,9)(26,41)])
link(Var1,115467:Value,[(9,86)(272,86)])
}
Add(If_else,13198225,49,35)
{
Type=1
Op2=Integer(1)
link(onTrue,1277010:doWork2,[])
link(onFalse,4875620:doCompare,[])
}
Add(Switch,8043746,203,35)
{
DataOn=Integer(-2)
DataOff=Integer(2)
link(onSwitch,115467:doValue,[])
}
Add(If_else,4875620,112,42)
{
Type=2
Op2=Integer(200)
link(onTrue,1277010:doWork3,[(179,48)])
}
Add(HubEx,1277010,175,35)
{
link(onEvent,8043746:doSwitch,[])
}
Add(Memory,115467,266,35)
{
Default=Integer(1)
}
END_SDK
Add(Hub,3093429,252,245)
{
link(onEvent1,11790344:doOperation,[])
link(onEvent2,2811565:doWork3,[(294,258)(294,283)(81,283)])
}
Add(Math,2658985,203,245)
{
link(onResult,3093429:doEvent1,[])
link(Op1,6591336:Var3,[(209,114)])
link(Op2,2559567:Var1,[])
}
Add(GetDataEx,6591336,126,109)
{
link(Data,7646524:Value,[])
}
Add(Math,11790344,308,245)
{
link(onResult,10908804:doValue,[(394,251)(394,26)(174,26)(174,55)])
link(Op1,13022105:Var3,[(314,121)])
link(Op2,2196150:Var1,[])
}
Add(GetDataEx,13022105,189,116)
{
link(Data,10908804:Value,[])
}
Add(MultiElement,2196150,315,161)
{
}
BEGIN_SDK
Add(EditMulti,2784491,3,3)
{
WorkCount=1
VarCount=1
Height=102
link(doWork1,13198225:doCompare,[(26,9)(26,41)])
link(Var1,115467:Value,[(9,86)(272,86)])
}
Add(If_else,13198225,49,35)
{
Type=1
Op2=Integer(1)
link(onTrue,1277010:doWork2,[])
link(onFalse,4875620:doCompare,[])
}
Add(Switch,8043746,203,35)
{
DataOn=Integer(-1)
DataOff=Integer(1)
link(onSwitch,115467:doValue,[])
}
Add(If_else,4875620,112,42)
{
Type=2
Op2=Integer(200)
link(onTrue,1277010:doWork3,[(179,48)])
}
Add(HubEx,1277010,175,35)
{
link(onEvent,8043746:doSwitch,[])
}
Add(Memory,115467,266,35)
{
Default=Integer(1)
}
END_SDK
Add(Random,2149117,35,49)
{
Min=1
link(onRandom,2811565:doWork2,[])
}
Add(HubEx,2811565,77,49)
{
link(onEvent,7646524:doValue,[])
}
END_SDK
Add(For,9184855,490,140)
{
IncludeEnd=1
link(onEvent,14227323:##select,[(545,146)(545,242)(424,242)(424,202)])
link(End,14227323:##count,[(503,130)(478,130)(478,231)(440,231)])
}
Add(Label,12293726,245,161)
{
Left=135
Top=10
Width=53
Height=18
Font=[Arial,8,0,0,1]
Caption="Example 2"
}


карма: 0

0
файлы: 2code_21984.txt [1.7KB] [116], code_21985.txt [2.6KB] [133]
Ответов: 8961
Рейтинг: 824
#2: 2011-01-01 22:35:59 ЛС | профиль | цитата
buchkov, а прочитать комментарии к точкам слабо? (не говоря уж о назначении всяких панелей) code_21986.txt
карма: 19

0
файлы: 1code_21986.txt [2.7KB] [205]
Ответов: 301
Рейтинг: 11
#3: 2011-01-01 22:41:39 ЛС | профиль | цитата
deleted
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#4: 2011-01-02 09:40:03 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2025-02-25 16:46:24
карма: 0

0
Ответов: 8961
Рейтинг: 824
#5: 2011-01-02 10:19:12 ЛС | профиль | цитата
buchkov, можно и так, конечно, но создавать на каждый вид сетки свою отрисовку не совсем рационально, все мзменяемые параметры проще передавать на одну схему.
карма: 19

0
Ответов: 62
Рейтинг: 0
#6: 2011-01-02 11:13:16 ЛС | профиль | цитата
Леонид писал(а):
buchkov, можно и так, конечно,
Я извиняюсь ,что не обьяснил, зачем все это. На форуме не приветствуеться , когда кто-то просит "Сделайте за меня тото и тото" или "Нарисуйте за меня схему" И это правильно ,надо самому головой подумать.А задача стоит такая: Рисуеться на форме сетка( с определенными характеристиками)и при перемещении курсора по форме сравниваються координаты линии ,из которой состоит сетка, и координаты курсора. При совпадении , например , линия принимает другой цвет.Координаты курсора получить не проблема. Координаты линий для меня проблематично. Хотел рисовать сетку при помощи Shape фигуры линия. У нее есть хорошее событие onMouseMove, но на схеме размещаеться слишком много фигур и управлять ими сложно. Если можно подскажите куда мне двигаться дальше.Спасибо
карма: 0

0
Ответов: 5446
Рейтинг: 323
#7: 2011-01-02 13:24:03 ЛС | профиль | цитата
buchkov, применяй компонент Math. Для равномерной (т.е. все ячейки одного размера) прямоугольной сетки поиск пересекаемой(-ых) линии(-ий) - раз плюнуть (хинт: на каждую координату один Math с Mode=- и один - с Mode=mod). Для других сеток задачка посложнее будет, но всё равно - если есть математическое описание линий сетки, то просчитать пересечение просто (по кр. мере для того, кто закончил 11 классов средней школы).
карма: 1

0
Ответов: 8961
Рейтинг: 824
#8: 2011-01-02 13:34:22 ЛС | профиль | цитата
buchkov, узнать "Мышь на линии" просто code_21993.txt , но чтобы менять цвет части или всей линии лучше отказаться от отрисовки в цикле (надо в этих циклах ловить нужный кусок и менять цвет), а формировать Список координат линий, в этом списке менять нужныу параметры и уже по нему проводить отрисовку.
карма: 19

0
файлы: 1code_21993.txt [6.4KB] [167]
Ответов: 62
Рейтинг: 0
#9: 2011-01-02 15:44:36 ЛС | профиль | цитата
Спасибо буду думать
------------ Дoбавленo в 15.44:
[quote=Леонид]buchkov, узнать "Мышь на линии" просто [/quote]Подскажи , почему я ставлю Step=10 или 100 , а на Label отображаются координаты до соприкасновиния с линией, непосредственно при соприкосновении и после него, т.е. отображаються координаты -1,= и +1


Add(MainForm,15539971,350,140)
{
Width=763
Height=576
Point(onPaint)
link(onCreate,10068432:doWork2,[])
link(onPaint,10068432:doWork3,[(424,167)])
}
Add(Button,10228946,350,98)
{
Left=5
Top=10
Width=65
Font=[Arial,8,0,0,1]
Caption="Draw"
link(onClick,10068432:doWork1,[(424,104)])
}
Add(MultiElementEx,389042,763,161)
{
link(onStop,3675009:doLoad,[])
link(Handle,16616973:Var2,[])
}
BEGIN_SDK
Add(EditMultiEx,10129213,3,3)
{
WorkCount=#6:doDraw|
EventCount=#6:onStop|
DataCount=#6:Handle|
Width=559
Height=396
VOffset=5
HOffset=5
link(doDraw,11353629:doEvent1,[(12,14)(12,55)])
}
Add(For,11539709,126,154)
{
link(onEvent,3758150:doOperation,[])
link(onStop,10129213:onStop,[(167,167)(167,14)])
link(End,7709930:Var2,[])
}
Add(For,13636613,217,154)
{
link(onEvent,8323190:doOperation,[])
link(End,7709930:Var3,[(230,131)])
}
Add(Img_Line,14492676,378,154)
{
Point(Point1)
Point(Point2)
Point(Color)
Point(Size)
link(Bitmap,7350663:Var2,[])
link(Point1,10300451:Point,[])
link(Point2,15301999:Point,[(398,139)(426,139)])
link(Color,6113895:Var1,[(405,142)])
link(Size,615002:Var1,[(412,145)])
}
Add(PointXY,10300451,385,98)
{
link(X,2817300:Var1,[(391,82)])
}
Add(PointXY,15301999,420,98)
{
link(X,2817300:Var3,[(426,82)])
link(Y,12007115:Var3,[(433,93)(306,93)(306,194)])
}
Add(PointXY,10190775,357,294)
{
link(Y,8543980:Var2,[])
}
Add(Hub,3465493,315,154)
{
link(onEvent1,14492676:doDraw,[])
link(onEvent2,12160883:doDraw,[(339,167)(339,356)])
}
Add(PointXY,11527007,392,294)
{
link(X,12007115:Var2,[(398,246)(286,246)])
link(Y,8543980:Var3,[(405,271)])
}
Add(Img_Line,12160883,350,350)
{
Point(Point1)
Point(Point2)
Point(Color)
Point(Size)
link(Bitmap,7350663:Var1,[(356,138)])
link(Point1,10190775:Point,[])
link(Point2,11527007:Point,[(370,335)(398,335)])
link(Color,6113895:Var2,[(377,340)(468,340)])
link(Size,615002:Var2,[(384,344)(517,344)])
}
Add(GetDataEx,7350663,378,133)
{
link(Data,10129213:Handle,[(384,11)(14,11)])
}
Add(GetDataEx,541126,175,203)
{
link(Data,3758150:Result,[])
}
Add(GetDataEx,8543980,364,266)
{
link(Data,541126:Var2,[(370,258)(181,258)])
}
Add(GetDataEx,12007115,280,189)
{
Angle=3
link(Data,8323190:Result,[(265,194)])
}
Add(Memory,12047199,462,56)
{
Default=Integer(255)
}
Add(GetDataEx,6113895,462,137)
{
link(Data,12047199:Value,[])
}
Add(Memory,15282169,511,49)
{
Default=Integer(1)
}
Add(GetDataEx,615002,511,140)
{
link(Data,15282169:Value,[])
}
Add(Math,3758150,175,154)
{
OpType=2
ResultType=0
link(onResult,13636613:doFor,[])
link(Op2,8084287:Var1,[(188,138)])
}
Add(Math,8323190,259,154)
{
OpType=2
ResultType=0
link(onResult,3465493:doEvent1,[])
link(Op2,8084287:Var2,[])
}
Add(Memory,14474826,266,63)
{
Default=Integer(20)
}
Add(Memory,10464229,133,70)
{
Default=Integer(10)
}
Add(MultiStrData,13425197,49,49)
{
Count=4
link(onPart1,15282169:doValue,[])
link(onPart2,12047199:doValue,[])
link(onPart3,14474826:doValue,[])
link(onPart4,10464229:doValue,[])
}
Add(GetDataEx,7709930,133,126)
{
link(Data,10464229:Value,[])
}
Add(GetDataEx,8084287,266,133)
{
link(Data,14474826:Value,[])
}
Add(GetDataEx,2817300,392,77)
{
link(Data,541126:Var1,[(398,71)(172,71)(172,208)])
}
Add(Hub,11353629,21,49)
{
link(onEvent1,13425197:doSplit,[])
link(onEvent2,11539709:doFor,[(44,62)(44,160)])
}
END_SDK
Add(HubEx,10068432,420,154)
{
link(onEvent,9968758:doString,[])
}
Add(FormatStr,9968758,588,154)
{
DataCount=4
Mask="%1;%2;%3;%4"
link(onFString,8161251:doEvent1,[])
link(Str1,15787786:Var3,[(594,138)])
link(Str2,16371500:Value,[])
link(Str3,10641976:Var1,[(608,131)])
link(Str4,9993144:Text,[(615,142)(713,142)])
}
Add(Edit,2183354,434,98)
{
Left=5
Top=45
Width=60
Text="1"
DataType=2
}
Add(Edit,11213325,665,98)
{
Left=5
Top=105
Width=60
Text="10"
DataType=2
}
Add(Edit,9993144,707,98)
{
Left=5
Top=135
Width=60
Text="100"
DataType=2
}
Add(Label,9908835,1064,357)
{
Left=220
Top=515
Height=20
Caption="X , mm"
AutoSize=1
Alignment=2
}
Add(Label,6232925,581,14)
{
Left=65
Top=75
Width=28
Height=17
Caption="Color"
}
Add(Label,10415731,665,14)
{
Left=65
Top=105
Width=26
Height=17
Caption="Step"
}
Add(Label,6962403,707,14)
{
Left=65
Top=140
Width=41
Height=17
Caption="Number"
}
Add(Hub,8161251,721,154)
{
link(onEvent1,5756507:doCreate,[(744,160)(744,118)])
link(onEvent2,389042:doDraw,[])
}
Add(Image,3675009,812,161)
{
Left=135
Top=5
Width=600
Height=500
Point(Handle)
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
link(Bitmap,16616973:Var3,[(818,152)])
link(onMouseMove,11732346:doEvent1,[])
}
Add(Bitmap,5756507,763,98)
{
HWidth=600
HHeight=500
FillColor=16777215
Point(doCreate)
}
Add(GetDataEx,16616973,763,147)
{
link(Data,5756507:Bitmap,[])
}
Add(LED,13523678,1001,308)
{
Left=15
Top=170
link(onChange,14618225:doText,[])
}
Add(MathParse,8773874,903,315)
{
DataCount=3
MathStr="((%1 mod %3)<=%2/2)+((%3-(%1 mod %3))<=%2/2)"
ResultType=0
link(onResult,14754448:doEvent,[])
link(X1,6676381:getVar,[])
link(X2,5686078:Var2,[])
link(X3,7184392:Var2,[])
}
Add(GetDataEx,10641976,665,126)
{
link(Data,11213325:Text,[])
}
Add(GetDataEx,15787786,434,133)
{
link(Data,2183354:Text,[])
}
Add(IndexToChanel,14754448,952,315)
{
link(onEvent1,13523678:doOff,[])
link(onEvent2,13523678:doOn,[])
}
Add(LED,9541887,1211,308)
{
Left=65
Top=170
link(onChange,9980819:doText,[])
}
Add(MathParse,15884892,1113,315)
{
DataCount=3
MathStr="((%1 mod %3)<=%2/2)+((%3-(%1 mod %3))<=%2/2)"
ResultType=0
link(onResult,10321715:doEvent,[])
link(X1,9878504:getVar,[])
link(X2,5686078:Var3,[(1126,299)])
link(X3,7184392:Var3,[(1133,292)])
}
Add(IndexToChanel,10321715,1162,315)
{
link(onEvent1,9541887:doOff,[])
link(onEvent2,9541887:doOn,[])
}
Add(Hub,11732346,854,168)
{
link(onEvent1,15884892:doCalc,[(1023,174)(1023,321)])
link(onEvent2,8773874:doCalc,[(886,181)(886,321)])
}
Add(GetDataEx,5686078,910,294)
{
Angle=3
link(Data,15787786:Var2,[(440,299)])
}
Add(GetDataEx,7184392,917,287)
{
Angle=3
link(Data,10641976:Var2,[(671,292)])
}
Add(ColorDialog,461136,546,98)
{
link(onSelect,16371500:doValue,[])
}
Add(Memory,16371500,595,98)
{
Default=Integer(15395562)
Point(Data)
link(onData,4439081:doCaption,[(636,104)(636,78)(485,78)(485,104)])
}
Add(BitBtn,4439081,497,98)
{
Left=5
Top=75
Width=60
Color=16777215
Flat=1
link(onClick,461136:doOpen,[])
}
Add(Edit,14618225,1064,308)
{
Left=150
Top=515
Width=60
Text="1"
DataType=2
link(Str,1629638:getVar,[])
}
Add(Label,13871414,1267,357)
{
Left=415
Top=515
Height=20
Caption="Y , mm"
AutoSize=1
Alignment=2
}
Add(Edit,9980819,1267,308)
{
Left=340
Top=515
Width=60
Text="1"
DataType=2
link(Str,15591222:getVar,[])
}
Add(LineBreakEx,6676381,903,273)
{
Caption="X"
Type=2
}
Add(LineBreakEx,1629638,1064,273)
{
Caption="X"
Type=2
}
Add(LineBreakEx,9878504,1113,273)
{
Caption="Y"
Type=2
}
Add(LineBreakEx,15591222,1267,273)
{
Caption="Y"
Type=2
}
Add(LineBreakEx,13596401,826,224)
{
Caption="X"
Type=3
link(_Data,3675009:MouseX,[])
}
Add(LineBreakEx,3320219,833,203)
{
Caption="Y"
Type=3
link(_Data,3675009:MouseY,[])
}

мне кажеться это гдето в алгоритме MathParse Да и потом, толщину линии можно не варьировать , она будет постоянной =1 пиксел
карма: 0

0
Ответов: 8961
Рейтинг: 824
#10: 2011-01-02 17:25:26 ЛС | профиль | цитата
buchkov, внимательно и вдумчиво читаем примечания к точкам:
LED писал(а):
onChange=Событие происходит при смене состояния...
именно по событию Вы записываете в Edit координаты мыши, а смена состояния происходит при наезжании мыши на линию и уходе с неё
Если толщина линий 1 пиксель и не будет изменяться, то формулу MathParse можно (и нужно) облегчить (%1 mod %3)=0[b]
карма: 19

0
Гость
Ответов: 17029
Рейтинг: 0
#11: 2011-01-03 12:37:52 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2025-02-25 16:46:25
карма: 0

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