Вверх ↑
Этот топик читают: Гость
Ответов: 197
Рейтинг: 2
#1: 2021-01-03 17:04:31 ЛС | профиль | цитата
Всех выживших поздравляю С новым 2021 годом!
Сижу я дома 4е сутки и уже не знаю чем себя занять, думаю надо что-нибудь порисовать мозги по тренировать. И тут возникла мысль не знаю откуда, понадобилась мне бегущая строка. Компонента не нашел, а сделать его самому что-то даже не знаю с какого угла подойти. Казалось бы примитивная задача, чет я отупел!
карма: 0

0
Ответов: 2236
Рейтинг: 676
#2: 2021-01-03 17:36:59 ЛС | профиль | цитата
1 Вариант: на PaintBox-е нарисовать. Смешать текст по X.
2 Вариан: в Label текс подавать добавив с перед и сзади пробелов и отнимать по символ спереди.
3 Вариант: поместить Label с текстом в панель и перемещать её по X в панели справа налево.

Как помне так первый вариант лучше.
карма: 11

0
Ответов: 263
Рейтинг: 18
#3: 2021-01-03 17:43:55 ЛС | профиль | цитата
Пример из \HiAsm_AltBuild\Elements\delphi\Example\Draw\demo\ScrollText.sha

Add(ChildPanel,90391,315,56)
{
}
BEGIN_SDK
Add(EditMulti,64458,14,14)
{
WorkCount=2
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="Hello"
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,[])
}
Add(HubEx,7949334,154,56)
{
link(onEvent,43152:doText,[])
}
END_SDK
Add(If_else,99885,245,56)
{
Type=1
Op2=Integer(74)
link(onTrue,90391:doWork1,[])
link(onFalse,90391:doWork2,[])
}
Add(Counter,15443,189,56)
{
Max=74
link(onNext,99885:doCompare,[])
}
Add(MainForm,91370,98,98)
{
Left=21
Top=105
Width=287
Height=236
Caption="ScrollText"
}
Add(InfoTip,4509,231,119)
{
Info=#17:На основе графики|
Font=[Arial,8,0,0,1]
VAlign=2
Width=134
Height=123
}
Add(PaintBox,11079740,252,133)
{
Left=30
Top=130
Width=215
ClearBeforeDraw=0
link(onBeforeDraw,13931:doCalc,[])
}
Add(Timer,54122,98,56)
{
Interval=50
link(onTimer,55567:doEvent1,[])
}
Add(Hub,55567,147,56)
{
link(onEvent1,15443:doNext,[])
link(onEvent2,11079740:doRefresh,[(174,69)(174,139)])
}
Add(Img_Text,12256,252,182)
{
Y=2
Font=[Courier New,8,1,8388608,1]
Text="Hello"
link(Bitmap,11079740:Bitmap,[])
}
Add(MathParse,13931,301,133)
{
DataCount=1
MathStr="(%1 - 10)*3"
ResultType=0
link(onResult,12256:doDraw,[(345,139)(345,225)(242,225)(242,188)])
link(X1,15443:Count,[(307,113)(195,113)])
}
Add(InfoTip,24288,231,21)
{
Info=#17:На основе надписи|
Font=[Arial,8,0,0,1]
Width=134
Height=88
}

карма: 3

0
Ответов: 197
Рейтинг: 2
#4: 2021-01-03 19:39:38 ЛС | профиль | цитата
Спасибо мил человек) то что нужно.
К своему стыду я про них забыл.
карма: 0

0
Ответов: 2236
Рейтинг: 676
#5: 2021-01-04 00:24:40 ЛС | профиль | цитата
Добавил третий вариант:

Add(ChildPanel,90391,476,266)
{
}
BEGIN_SDK
Add(EditMulti,64458,14,14)
{
WorkCount=2
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=50
Width=195
Height=15
Font=[Arial,8,0,0,1]
}
Add(Label,43152,182,56)
{
Left=-25
Width=285
Font=[Arial,8,0,0,1]
Caption="Hello"
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,[])
}
Add(HubEx,7949334,154,56)
{
link(onEvent,43152:doText,[])
}
END_SDK
Add(If_else,99885,406,266)
{
Type=1
Op2=Integer(74)
link(onTrue,90391:doWork1,[])
link(onFalse,90391:doWork2,[])
}
Add(Counter,15443,350,266)
{
Max=74
link(onNext,99885:doCompare,[])
}
Add(MainForm,91370,259,308)
{
Left=21
Top=105
Width=287
Height=236
Caption="ScrollText"
Position=1
}
Add(InfoTip,4509,392,336)
{
Info=#17:На основе графики|
Font=[Arial,8,0,0,1]
VAlign=2
Width=134
Height=123
}
Add(PaintBox,11079740,413,350)
{
Left=30
Top=85
Width=215
ClearBeforeDraw=0
link(onBeforeDraw,13931:doCalc,[])
}
Add(Timer,54122,259,266)
{
Interval=50
link(onTimer,55567:doEvent1,[])
}
Add(Hub,55567,308,266)
{
OutCount=3
link(onEvent1,15443:doNext,[])
link(onEvent2,11079740:doRefresh,[(339,279)(339,356)])
link(onEvent3,12301909:doNext,[(333,286)(333,489)])
}
Add(Img_Text,12256,413,399)
{
Y=2
Font=[Courier New,8,1,8388608,1]
Text="Hello"
link(Bitmap,11079740:Bitmap,[])
}
Add(MathParse,13931,462,350)
{
DataCount=1
MathStr="(%1 - 10)*3"
ResultType=0
link(onResult,12256:doDraw,[(506,356)(506,442)(403,442)(403,405)])
link(X1,15443:Count,[(468,330)(356,330)])
}
Add(InfoTip,24288,392,231)
{
Info=#17:На основе надписи|
Font=[Arial,8,0,0,1]
Width=134
Height=88
}
Add(ChildPanel,1688474,455,483)
{
}
BEGIN_SDK
Add(EditMulti,13452352,14,14)
{
WorkCount=1
Width=230
Height=151
link(doWork1,9109336:doLeft,[(98,20)(98,69)])
}
Add(Panel,10189238,49,98)
{
Left=25
Top=125
Width=195
Height=15
Font=[Arial,8,0,0,1]
BevelInner=0
}
Add(Label,9109336,182,56)
{
Left=-25
Width=285
Font=[Arial,8,0,0,1]
Caption="Hello"
Point(doLeft)
}
END_SDK
Add(Counter,12301909,399,483)
{
Max=270
Step=3
link(onNext,1688474:doWork1,[])
}
карма: 11

0
Разработчик
Ответов: 4698
Рейтинг: 426
#6: 2021-01-11 01:44:04 ЛС | профиль | цитата
Давно делал такой компонент. Держи, может, поможет
https://forum.hiasm.com/topic/51482
карма: 10
0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)