Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Как создать бегущую строку?


Автор: Ganibal 16.3.2006, 00:30
Помогите создать бегущую строку! Строга должна двигаться в низу экрана на прозрачном фоне. Заранее спасибо!

Автор: cardinal 16.3.2006, 02:21
Есть вот такой примерчик
Код

' Для того, чтобы изобразить на форме произвольный текст, который с определенной скоростью
' прокручивается снизу вверх нам понадобяться следующие контролы:
'
' Timer1, свойство интервал установите равным 5.
' Picture1, на который наложите Picture2, на который в свою очередь наложите Label1.
' У вас должно в итоге получиться Label1 внутри Picture2, который находится внутри Picture1.
' Если кликнуть мышкой по вершине этого бутерброда, то можно остановить движение текста, или
' вознобновить движение. Приготовления закончены, теперь сам код:

Private Sub Form_Load()
Picture1.ScaleMode = 3
Picture1.BorderStyle = 0
Picture1.Width = Me.ScaleWidth
Picture1.Height = Me.ScaleHeight
Picture1.Left = 0
Picture1.Top = 0
Picture2.BorderStyle = 0
Picture2.Top = Picture1.ScaleHeight
Label1.WordWrap = True
Label1.Left = 0
Label1.Width = Picture2.ScaleWidth
Label1.FontSize = 12
' Здесь можете ввести ваш текст
Label1.Caption = "Спасибо программерам с HiProg.com за этот пример!"
Label1.AutoSize = True
Label1.Top = 0
Picture2.Height = Label1.Height \ Screen.TwipsPerPixelY + 10
Picture2.Left = (Picture1.Width \ Screen.TwipsPerPixelX - Picture2.Width) / 2
End Sub

Private Sub Label1_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub

Private Sub Picture1_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub

Private Sub Timer1_Timer()
Picture2.Top = Picture2.Top - 1
If Picture2.Top <= -Picture2.Height Then Picture2.Top = Picture1.ScaleHeight
End Sub

при помощи какого ты можешь сделать то, что тебе надо.

Но возможно есть и решения по лучше. Я просто даже не смотрел, что написано выше... smile (просто пример у меня завалялся)

Автор: Тутанхамец 16.3.2006, 07:50
Другой вариант (немножко сермяжный, но имхо попроще). Строка бежит справа налево.

Код

Option Explicit
Dim cap As String
Dim i As Long
Dim LeadingSpace As String


Private Sub Form_Load()
LeadingSpace = String(100, " ") 'определяет начальную точку, откуда текст побежит
'чем больше значение, тем правее начальная точка
cap = LeadingSpace + "Это мой текст."
label1.BackColor = 0
label1.AutoSize = True
Timer1.Interval = 100 'чем меньше это значение, тем быстрее бежит текст
End Sub

Private Sub Timer1_Timer()

i = i + 1
label1.Caption = Mid$(cap, i, Len(cap))
If i = Len(cap) Then i = 0
End Sub


cap можно оформить как константу, а i как static в Timer1_Timer.

Автор: Exception 16.3.2006, 09:50
Внизу формы или внизу экрана? Это разные вещи. Внизу экрана - это разве только регионами, морока еще та.

Автор: Тутанхамец 16.3.2006, 10:27
Нда, это я как-то не подумал... Если внизу именно ЭКРАНА, то можно создать форму с бегущей строкой и сделать эту форму прозрачной... Так сходу не смогу накидать, как именно. В WinXP для этого специальные функции API, кажется, есть.

Автор: Ganibal 16.3.2006, 22:45
Спасибо за примеры. Извените что забыл уточнить что строка должна двигаться внизу экрана а не формы. Это я хочу работать на местном телевидении в своем городе, а они посмотрели что молодой и дали такую экзаменационную задачу "Бегущую строку" написать для новостей. Если кто сможет помочь буду рад.

Автор: cardinal 16.3.2006, 23:32
А почему речь о VB?

Автор: Ganibal 16.3.2006, 23:36
На VB по тому что больше я не чего толком и не знаю (вдруг предеться модернизировать) а предыдущая прога была написана на vb4.

Автор: Exception 17.3.2006, 00:25
Встречный вопрос: полупрозрачное окно подойдет? То есть чтобы окно было, но через него все просвечивало. Это гораздо легче, чем маяться с регионами. Просто, например, внизу экрана будет полупрозрачная синяя полоска (форма с BorderStyle = None), по которой и будут двигаться буквы.

Автор: Ganibal 18.3.2006, 21:07
Да полупрозрачное окно подойдет! И еще хотел спросить как сделать чтоб строка запускалась в определенное время, значения я забью например 21:00?

Автор: Ganibal 19.3.2006, 00:12
Выложи пожалуйсто пример с полупрозрачным окном! Заранее больщое спасибо!

Автор: Тутанхамец 19.3.2006, 08:09
Касательно времени.
Прога должна быть запущена постоянно, и каждые, допустим, пять секунд (можешь чаще, можешь реже) срабатывает таймер, получает текущее время (функция Time() и ей подобные). Если время равно 21:00, то показываем форму внизу экрана.
Добавлено @ 08:10
P.S. А можно использовать всякие проги-ежедневники, которые могут запускать другие проги в определенное время.

Автор: cardinal 19.3.2006, 16:34
Цитата(Ganibal @ 18.3.2006, 22:12 Найти цитируемый пост)
Выложи пожалуйсто пример с полупрозрачным окном! Заранее больщое спасибо!

http://www.activevb.de/tipps/vb6tipps/tipp0462.html
Должно работать в 2000 и XP.

Автор: Ganibal 21.3.2006, 22:40
СПАСИБО потцаны, Вы мне сильно помогли. Завтра буду оформляться на работу!!!

Автор: cardinal 22.3.2006, 03:15
Молодец! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)