Вверх ↑
Этот топик читают: Гость
Ответов: 153
Рейтинг: 0
#1: 2025-04-13 08:59:46 ЛС | профиль | цитата
Помогите сделать бегущую строку текста в панели.
На основе стандартного компонента начал разбираться, но ничего не пойму, текст бежит слева направо, а не наоборот по логике, и если длинную строку вводишь то она полностью не выводится

Add(ChildPanel,90391,609,287)
{
link(Data1,8285413:Var3,[(615,201)])
}
BEGIN_SDK
Add(EditMulti,64458,14,14)
{
WorkCount=2
DataCount=1
Width=230
Height=151
link(doWork1,95803:doStrCat,[(95,20)(95,111)])
link(doWork2,25950:doData,[(32,27)(32,62)])
}
Add(Panel,80731,49,98)
{
Left=30
Top=100
Width=195
Height=15
Font=[Arial,8,0,0,1]
Point(doColor)
}
Add(Label,43152,182,56)
{
Left=-25
Width=285
Font=[Arial,8,0,0,1]
Caption=""
AutoSize=1
}
Add(StrCat,95803,175,105)
{
Str1=" "
link(onStrCat,7949334:doWork1,[(221,111)(221,46)(158,46)])
link(Str2,43152:Caption,[])
}
Add(DoData,25950,49,56)
{
Data=String(Hello)
link(onEventData,7949334:doWork2,[])
link(Data,64458:Data1,[(55,35)(20,35)])
}
Add(HubEx,7949334,154,56)
{
link(onEvent,43152:doText,[])
}
END_SDK
Add(If_else,99885,539,287)
{
Type=1
Op2=Integer(74)
link(onTrue,90391:doWork1,[])
link(onFalse,90391:doWork2,[])
}
Add(Counter,15443,483,287)
{
Max=74
link(onNext,99885:doCompare,[])
}
Add(MainForm,91370,392,378)
{
Left=21
Top=105
Width=287
Height=236
Caption="ScrollText"
}
Add(InfoTip,4509,525,350)
{
Info=#17:На основе графики|
Font=[Arial,8,0,0,1]
VAlign=2
Width=134
Height=123
}
Add(PaintBox,11079740,546,364)
{
Left=30
Top=130
Width=215
ClearBeforeDraw=0
link(onBeforeDraw,13931:doCalc,[])
}
Add(Timer,54122,392,287)
{
Interval=50
link(onTimer,55567:doEvent1,[])
}
Add(Hub,55567,441,287)
{
link(onEvent1,15443:doNext,[])
link(onEvent2,11079740:doRefresh,[(468,300)(468,370)])
}
Add(Img_Text,12256,546,413)
{
Y=2
Font=[Courier New,8,1,8388608,1]
link(Bitmap,11079740:Bitmap,[])
link(Text,8285413:Var2,[])
}
Add(MathParse,13931,595,364)
{
DataCount=1
MathStr="(%1 - 10)*3"
ResultType=0
link(onResult,12256:doDraw,[(639,370)(639,456)(536,456)(536,419)])
link(X1,15443:Count,[(601,344)(489,344)])
}
Add(InfoTip,24288,525,252)
{
Info=#17:На основе надписи|
Font=[Arial,8,0,0,1]
Width=134
Height=88
}
Add(Edit,3085393,553,140)
{
Left=375
Top=145
Text="НАЧАЛО sdfgdsgsdfgsdfgfgdfsgsdfgsdfgsdfgsdfgdfgsdgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdf КОНЕЦ "
}
Add(GetDataEx,8285413,553,196)
{
link(Data,3085393:Text,[])
}

карма: 0

0
Ответов: 2370
Рейтинг: 683
#2: 2025-04-13 10:18:22 ЛС | профиль | цитата
Gitarist, есть же тема Бегущая строка, судя по схеме от туда её и взяли. Зачем лишнюю тему создавать? Не делайте так!
Проще задействовать элемент трансформации (вкладка Графика\Трансформация)

 Add(Counter,15443,602,308)
{
Min=-215
Max=215
Step=3
Default=215
link(onNext,11079740:doRefresh,[(669,314)(669,462)(505,462)(505,363)])
}
Add(MainForm,91370,385,371)
{
Left=21
Top=105
Width=287
Height=236
Caption="ScrollText"
}
Add(PaintBox,11079740,539,357)
{
Left=30
Top=130
Width=215
ClearBeforeDraw=0
link(onBeforeDraw,12256:doDraw,[(583,363)(583,395)(527,395)(527,426)])
}
Add(Img_Text,12256,539,420)
{
Y=2
Font=[Courier New,8,1,8388608,1]
Point(Transform)
link(Bitmap,11079740:Bitmap,[])
link(Text,3085393:Text,[])
link(Transform,14958697:Transform,[(559,408)(601,408)])
}
Add(Edit,3085393,546,266)
{
Left=375
Top=145
Text="НАЧАЛО sdfgdsgsdfgsdfgfgdfsgsdfgsdfgsdfgsdfgdfgsdgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdf КОНЕЦ "
}
Add(Img_UseOffset,14958697,595,357)
{
Y=0
link(X,15443:Count,[])
}
Add(Timer,54122,455,315)
{
Interval=50
link(onTimer,15443:doPrev,[])
}


В вашей схеме достаточно в другую сторону счетчик проматывать:

Add(ChildPanel,90391,679,224)
{
link(Data1,8285413:Var3,[(685,138)])
}
BEGIN_SDK
Add(EditMulti,64458,14,14)
{
WorkCount=2
DataCount=1
Width=230
Height=151
link(doWork1,95803:doStrCat,[(95,20)(95,111)])
link(doWork2,25950:doData,[(32,27)(32,62)])
}
Add(Panel,80731,49,98)
{
Left=30
Top=100
Width=195
Height=15
Font=[Arial,8,0,0,1]
Point(doColor)
}
Add(Label,43152,182,56)
{
Left=-25
Width=285
Font=[Arial,8,0,0,1]
Caption=""
AutoSize=1
}
Add(StrCat,95803,175,105)
{
Str1=" "
link(onStrCat,7949334:doWork1,[(221,111)(221,46)(158,46)])
link(Str2,43152:Caption,[])
}
Add(DoData,25950,49,56)
{
Data=String(Hello)
link(onEventData,7949334:doWork2,[])
link(Data,64458:Data1,[(55,35)(20,35)])
}
Add(HubEx,7949334,154,56)
{
link(onEvent,43152:doText,[])
}
END_SDK
Add(If_else,99885,609,224)
{
Type=1
Op2=Integer(74)
link(onTrue,90391:doWork1,[])
link(onFalse,90391:doWork2,[])
}
Add(Counter,15443,553,224)
{
Max=74
link(onNext,99885:doCompare,[])
}
Add(MainForm,91370,462,315)
{
Left=21
Top=105
Width=287
Height=236
Caption="ScrollText"
}
Add(InfoTip,4509,595,287)
{
Info=#17:На основе графики|
Font=[Arial,8,0,0,1]
VAlign=2
Width=134
Height=123
}
Add(PaintBox,11079740,616,301)
{
Left=30
Top=130
Width=215
ClearBeforeDraw=0
link(onBeforeDraw,13931:doCalc,[])
}
Add(Timer,54122,462,231)
{
Interval=50
link(onTimer,55567:doEvent1,[])
}
Add(Hub,55567,511,231)
{
link(onEvent1,15443:doPrev,[])
link(onEvent2,11079740:doRefresh,[(538,244)(538,307)])
}
Add(Img_Text,12256,616,350)
{
Y=2
Font=[Courier New,8,1,8388608,1]
link(Bitmap,11079740:Bitmap,[])
link(Text,8285413:Var2,[])
}
Add(MathParse,13931,665,301)
{
DataCount=1
MathStr="(%1 - 10)*3"
ResultType=0
link(onResult,12256:doDraw,[(709,307)(709,393)(606,393)(606,356)])
link(X1,15443:Count,[(671,281)(559,281)])
}
Add(InfoTip,24288,595,189)
{
Info=#17:На основе надписи|
Font=[Arial,8,0,0,1]
Width=134
Height=88
}
Add(Edit,3085393,623,77)
{
Left=375
Top=145
Text="НАЧАЛО sdfgdsgsdfgsdfgfgdfsgsdfgsdfgsdfgsdfgdfgsdgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdf КОНЕЦ "
}
Add(GetDataEx,8285413,623,133)
{
link(Data,3085393:Text,[])
}

карма: 11

0
Ответов: 153
Рейтинг: 0
#3: 2025-04-13 11:34:35 ЛС | профиль | цитата
Поиск по форуму не работает. Пример с бегущей строкой брал из стандартных примеров.
В вашей схеме тоже не полностью текст пробегает. Обратите внимание что в строке написано "НАЧАЛО" и "КОНЕЦ"

Вроде сделал проще некуда
Add(Counter,15443,378,161)
{
Min=-1000
Max=300
Step=5
Default=215
link(onNext,6243861:doLeft,[])
}
Add(MainForm,91370,238,154)
{
Left=21
Top=105
Width=287
Height=236
Caption="ScrollText"
}
Add(Timer,54122,308,168)
{
Interval=50
link(onTimer,15443:doPrev,[])
}
Add(Label,6243861,448,154)
{
Top=50
Width=1000
Caption="НАЧАЛО sdfgdsgsdfgsdfgfgdfsgsdfgsdfgsdfgsdfgdfgsdgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdf КОНЕЦ "
Point(doLeft)
Point(Width)
}


Но мерцает мерзко, в глазах рябит.

Редактировалось 2 раз(а), последний 2025-04-13 11:47:39
карма: 0

0
Ответов: 2370
Рейтинг: 683
#4: 2025-04-13 11:54:05 ЛС | профиль | цитата
Gitarist писал(а):
В вашей схеме тоже не полностью текст пробегает. Обратите внимание что в строке написано "НАЧАЛО" и "КОНЕЦ"

Это уже математика уровня начальных классов.
Add(Counter,15443,763,252)
{
Min=-215
Max=215
Step=3
Default=215
Point(doMin)
Point(doMax)
Point(doValue)
link(onNext,11079740:doRefresh,[(822,258)(822,441)(582,441)(582,342)])
}
Add(MainForm,91370,322,455)
{
Left=21
Top=105
Width=287
Height=236
Caption="ScrollText"
link(onCreate,15777022:doEvent1,[])
}
Add(PaintBox,11079740,616,336)
{
Left=30
Top=130
Width=215
Color=12639424
ClearBeforeDraw=0
Point(Width)
link(onBeforeDraw,12256:doDraw,[(660,342)(660,374)(604,374)(604,405)])
}
Add(Img_Text,12256,616,399)
{
Y=2
Font=[Courier New,8,1,8388608,1]
Point(Transform)
link(Bitmap,11079740:Bitmap,[])
link(Text,3085393:Text,[(629,388)(664,388)])
link(Transform,14958697:Transform,[(636,392)(762,392)])
}
Add(Edit,3085393,658,294)
{
Left=375
Top=145
Text="НАЧАЛО sdfgdsgsdfgsdfgfgdfsgsdfgsdfgsdfgsdfgdfgsdgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdf КОНЕЦ "
}
Add(Img_UseOffset,14958697,756,343)
{
Y=0
link(X,15443:Count,[])
}
Add(Timer,54122,385,259)
{
Interval=50
link(onTimer,15443:doPrev,[])
}
Add(Hub,15777022,441,469)
{
link(onEvent1,13784086:doData,[])
link(onEvent2,4018260:doOperation,[])
}
Add(DoData,13784086,469,469)
{
link(onEventData,12566358:doEvent1,[(531,475)(531,286)])
link(Data,11079740:Width,[(475,379)(629,379)])
}
Add(Hub,12566358,560,280)
{
link(onEvent1,15443:doMax,[])
link(onEvent2,15443:doValue,[])
}
Add(Math,4018260,616,476)
{
OpType=2
Op2=-1
link(onResult,12916649:doEvent,[])
link(Op1,12256:TextWidth,[])
AddHint(9,-23,33,13,Op2)
}
Add(Debug,12916649,672,476)
{
link(onEvent,15443:doMin,[(720,482)(720,279)])
}
Gitarist писал(а):
Поиск по форуму не работает.

Можно пользоваться поисковиками: Бегущая строка

Редактировалось 2 раз(а), последний 2025-04-13 11:54:25
карма: 11

0
Ответов: 153
Рейтинг: 0
#5: 2025-04-13 21:25:54 ЛС | профиль | цитата
Всё же остановился на таком варианте, в нем автоматически все подстраивается под размер строки и элемента. но мерцает как то при проходе текста... Кто нибудь знает, как побороть мерцание?


Add(Counter,15443,301,287)
{
Max=0
Default=215
Point(doMax)
Point(doMin)
link(onNext,6243861:doLeft,[])
}
Add(MainForm,91370,196,189)
{
Left=21
Top=105
Width=663
Height=466
Caption="ScrollText"
Point(Width)
}
Add(Timer,54122,56,287)
{
Interval=1
link(onTimer,5987440:doEvent1,[])
}
Add(Label,6243861,399,280)
{
Top=50
Width=1000
Caption="НАЧАЛО sdfgdsgsdfgsdfgfgdfsgsdfgsdfgsdfgsdfgdfgsdgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdf КОНЕЦ "
Point(doLeft)
Point(Width)
}
Add(Edit,8764512,280,189)
{
Left=35
Top=140
Width=420
Text="НАЧАЛО sdfgdsgsdfgsdfgfgdfsgsdfgsdfgsdfgsdfgdfgsdgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdfgsdf КОНЕЦ "
link(onChange,6243861:doText,[(364,195)(364,286)])
}
Add(Hub,5987440,105,287)
{
OutCount=3
link(onEvent1,1871751:doData,[(129,293)(129,244)])
link(onEvent2,15443:doPrev,[])
link(onEvent3,16089184:doOperation,[(168,307)(168,377)])
}
Add(DoData,1871751,196,238)
{
link(onEventData,15443:doMax,[(268,244)(268,314)])
link(Data,91370:Width,[])
}
Add(Math,16089184,196,371)
{
OpType=2
Op2=-1
link(onResult,15443:doMin,[(268,377)(268,321)])
link(Op1,6243861:Width,[(202,349)(412,349)])
}

карма: 0

0
Ответов: 2370
Рейтинг: 683
#6: 2025-04-13 22:01:44 ЛС | профиль | цитата
Gitarist писал(а):
Кто нибудь знает, как побороть мерцание?
Очень легко, нужно не использовать такой вариант. О как бы "неправильный".
карма: 11

0
Ответов: 8946
Рейтинг: 824
#7: 2025-04-13 23:04:33 ЛС | профиль | цитата
Когда-то на картинке графики рисовал, как самопишущий прибор, ещё вариант


Add(MainForm,2953706,70,49)
{
Left=200
Top=100
}
Add(Button,10957715,119,91)
{
Left=15
Top=40
Caption=">>>"
link(onClick,11928225:doEvent1,[])
}
Add(Button,10272437,119,126)
{
Left=105
Top=40
Caption="II"
link(onClick,6651937:doEvent1,[])
}
Add(Edit,7019418,119,49)
{
Left=15
Top=5
Width=355
Font=[MS Sans Serif,10,0,0,1]
Text=" Да здравствует КПСС! (Нажать ENYER) "
ClearAfterEnter=1
link(onEnter,4436159:doEvent1,[])
}
Add(Image,2303820,266,84)
{
Left=10
Top=105
Width=365
ViewStyle=4
Point(doHeight)
}
Add(MultiElementEx,4199835,217,84)
{
link(onDrav,2303820:doLoad,[])
}
BEGIN_SDK
Add(EditMultiEx,8785457,21,21)
{
WorkCount=#6:doText|7:doStart|6:doStop|
EventCount=#6:onDrav|
Width=398
Height=228
link(doText,5891625:doValue,[(123,27)(123,55)])
link(doStart,4080300:doTimer,[(46,34)(46,181)])
link(doStop,4080300:doStop,[(39,41)(39,188)])
}
Add(Counter,1610300,140,175)
{
Point(Max)
Point(doMax)
link(onNext,7690878:doCopy,[(186,181)(186,174)])
link(Max,11698636:Result,[])
}
Add(Timer,4080300,56,175)
{
Interval=30
Enable=1
link(onTimer,1610300:doNext,[])
}
Add(Img_Text,6052688,238,49)
{
Font=[MS Sans Serif,12,1,0,1]
link(Bitmap,15973739:Var1,[(244,40)(230,40)(230,145)])
link(Text,5891625:Value,[(251,33)(209,33)(209,89)(146,89)])
}
Add(Bitmap,5170888,238,105)
{
FillColor=12639424
Point(doCreate)
Point(HWidth)
Point(HHeight)
Point(onCreate)
link(HWidth,592507:Var2,[])
link(HHeight,9324045:Var2,[])
}
Add(Hub,5964147,189,119)
{
OutCount=3
link(onEvent1,5170888:doCreate,[])
link(onEvent2,6052688:doDraw,[(214,132)(214,55)])
link(onEvent3,11698636:doOperation,[(214,139)(214,153)(130,153)(130,132)])
}
Add(GetDataEx,15973739,238,140)
{
link(Data,5170888:Bitmap,[])
}
Add(GetDataEx,592507,238,91)
{
link(Data,6052688:TextWidth,[])
}
Add(Math,11698636,140,126)
{
OpType=1
Op2=1
link(onResult,3585140:doEvent1,[(179,132)(179,167)(102,167)(102,195)])
link(Op1,592507:Var1,[(146,96)])
}
Add(Hub,3585140,112,189)
{
link(onEvent1,1610300:doReset,[])
link(onEvent2,1610300:doMax,[])
}
Add(Img_Shift,16144418,315,168)
{
DirectShift=1
Pixels=5
Point(Result)
link(onResult,495433:doEvent1,[])
link(Bitmap,15973739:Var3,[(321,145)])
link(ToShiftBmp,7690878:Result,[(328,159)(272,159)(272,215)(244,215)])
link(Pixels,12787943:Value,[(335,145)(356,145)])
}
Add(Img_Copy,7690878,238,168)
{
Width=1
Point(Height)
Point(Result)
link(onCopy,8555209:doEvent1,[])
link(Source,15973739:Var2,[])
link(X,11924462:Var1,[(251,154)])
link(Y,11924462:Var2,[])
link(Height,9324045:Var3,[(265,96)])
}
Add(GetDataEx,9324045,245,91)
{
link(Data,6052688:TextHeight,[])
}
Add(Memory,10571437,301,105)
{
Default=Integer(0)
}
Add(GetDataEx,11924462,252,149)
{
Angle=1
link(Data,10571437:Value,[(307,154)])
}
Add(Memory,12787943,350,105)
{
Default=Integer(1)
}
Add(Hub,495433,357,168)
{
link(onEvent1,5170888:doLoad,[(375,174)(375,90)(221,90)(221,111)])
link(onEvent2,8785457:onDrav,[(389,181)(389,27)])
}
Add(Hub,8555209,287,168)
{
link(onEvent1,16144418:doLoad,[])
link(onEvent2,16144418:doShift,[])
}
Add(Memory,5891625,140,49)
{
link(onData,5964147:doEvent1,[(179,55)(179,125)])
}
END_SDK
Add(Hub,4436159,161,56)
{
link(onEvent1,4199835:doText,[(205,62)(205,90)])
link(onEvent2,3441136:doText,[(200,69)(200,153)])
}
Add(Hub,11928225,161,91)
{
link(onEvent1,4199835:doStart,[])
link(onEvent2,3441136:doStart,[(193,104)(193,160)])
}
Add(Hub,6651937,161,126)
{
link(onEvent1,4199835:doStop,[(206,132)(206,104)])
link(onEvent2,3441136:doStop,[(186,139)(186,167)])
}
Add(Label,16421950,259,147)
{
Left=5
Top=145
Width=365
Height=25
Color=12639424
Font=[MS Sans Serif,12,1,0,1]
Caption=""
}
Add(MultiElementEx,3441136,210,147)
{
link(onDrav,16421950:doText,[])
}
BEGIN_SDK
Add(EditMultiEx,5868047,21,21)
{
WorkCount=#6:doText|7:doStart|6:doStop|
EventCount=#6:onDrav|
Width=349
Height=186
link(doText,7949374:doEvent1,[(46,27)(46,62)])
link(doStart,6192951:doTimer,[(39,34)(39,139)])
link(doStop,6192951:doStop,[(32,41)(32,146)])
}
Add(Timer,6192951,70,133)
{
Interval=270
Enable=1
link(onTimer,15068750:doCopy,[])
}
Add(Memory,2448467,147,63)
{
}
Add(Length,16009060,91,28)
{
}
Add(Copy,15068750,147,133)
{
Position=1
Count=1
link(onCopy,11929802:doValue,[])
link(Str,15947554:Var2,[])
}
Add(Insert,13225670,273,133)
{
link(onInsert,8421411:doEvent1,[])
link(SubStr,11929802:Value,[(286,124)(266,124)(266,175)(195,175)])
link(Position,16009060:Result,[(293,110)(97,110)])
}
Add(Delete,10540689,231,133)
{
Count=1
link(onDelete,13225670:doInsert,[])
link(Str,15947554:Var3,[(237,117)])
}
Add(Memory,11929802,189,133)
{
link(onData,10540689:doDelete,[])
}
Add(Hub,7949374,56,56)
{
link(onEvent1,16009060:doLength,[(74,62)(74,34)])
link(onEvent2,8306124:doWork2,[])
}
Add(GetDataEx,15947554,147,112)
{
link(Data,2448467:Value,[])
}
Add(HubEx,8306124,133,63)
{
link(onEvent,2448467:doValue,[])
}
Add(Hub,8421411,315,133)
{
link(onEvent1,8306124:doWork3,[(340,139)(340,104)(137,104)])
link(onEvent2,5868047:onDrav,[(347,146)(347,27)])
}
END_SDK

карма: 19

0
Ответов: 882
Рейтинг: 188
#8: 2025-04-14 18:25:29 ЛС | профиль | цитата
И я свои пять копеек вставлю.
https://forum.hiasm.com/getfile/40559
карма: 18

0
файлы: 1Бегущая строка WebBrowser.zip [791B] [59]
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)