Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / бегущая строка / 9 сообщений из 9, страница 1 из 1
16.12.2004, 07:55:23
    #32829511
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
как ее сделать. мне надо, что label прокручивался, как бегущая строка. вод код на Delphi, тут я не знаю, как делать. помогите его правильно переделать.

var b:string; i:integer;
b := 'Вас всех приветствует Windows';
for i := 1 to (Length(b) - 1) do
b := label8.caption[i + 1];
b[Length(b)] := label8.caption[1];
...
Рейтинг: 0 / 0
16.12.2004, 10:57:43
    #32829807
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
вот на скорую руку. Только лучше поискать ocx который это умеет делать.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private f As Boolean

Private Sub Command1_Click()
    Dim b As String
    Dim i As Integer
    b = "Вас всех приветствует Windows"
    
    Do While f = False
        Label1.Caption = b
        For i =  1  To Len(b) -  1 
            For j =  0  To  50000 
                DoEvents    ' Передает управление другим процессам.
                If f = True Then Exit Sub
            Next
            Label1.Caption = Right(Label1.Caption, Len(Label1.Caption) -  1 )
        Next
    Loop
End Sub

Private Sub Command2_Click()
    f = True
End Sub

Private Sub Form_Load()
    f = False
End Sub
...
Рейтинг: 0 / 0
16.12.2004, 11:01:18
    #32829814
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
Вообще то для бегущей строки лучше ActiveX подыскать, но если хочется написать свое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim k As Long, w As Long
Private Sub Form_Load()
    k = Screen.TwipsPerPixelX
    Do While Me.lblString.Width < Me.picString.Width
        Me.lblString.Caption = Me.lblString.Caption & " "
    Loop
    Me.lblString.Caption = Me.lblString.Caption & Me.lblString.Caption
    Me.lblString.Left = k *  10 
    w = Me.lblString.Width \  2 
    Timer1.Interval =  20 
    Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
    If Me.lblString.Left > -(w) Then
        Me.lblString.Left = Me.lblString.Left - k
    Else
        Me.lblString.Left = -k
    End If
End Sub
На фомре лежит Timer, picString (picturepox), на нем lblString с надписью (свойство Atuosize = True, wordWrap = false)
...
Рейтинг: 0 / 0
16.12.2004, 11:18:00
    #32829855
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
не, это не то. мне бы хотелось точь-в-точь видеть мой тот код на Delphi, но переделанный на Basic (я имею ввиду синтаксис). тот код идеально работает и очень маленький
...
Рейтинг: 0 / 0
16.12.2004, 11:28:36
    #32829883
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
Настенькатот код идеально работает и очень маленький
нифига он не работает.
...
Рейтинг: 0 / 0
16.12.2004, 11:29:34
    #32829892
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
Ну если просто потренироваться, то вот это все
Код: plaintext
1.
2.
for i :=  1  to (Length(b) -  1 ) do
b := label8.caption[i +  1 ];
b[Length(b)] := label8.caption[ 1 ];
Заменится на одну строку:
Код: plaintext
label8 = mid(label8, 2 ) & mid(label8, 1 , 1 )
и не надо переменных: VB очень силен в строках

А все таки зачем такая бегушка, где она "скачет" по символам а не по пикселам?
...
Рейтинг: 0 / 0
16.12.2004, 11:55:37
    #32829956
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
у меня получилось!!!

Private Sub Timer1_Timer()
Dim i As Byte, c As String
For i = 1 To (Len(b) - 1)
b = Right(Label3.Caption, (Len(Label3.Caption) - 1))
c = Left(Label3.Caption, 1)
Next i
Label3.Caption = b + c
End Sub

вот теперь все работает идеально. спасибо всем!!!
...
Рейтинг: 0 / 0
16.12.2004, 15:31:46
    #32830595
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
НастенькаDim i As Byte, c As String
For i = 1 To (Len(b) - 1)
b = Right(Label3.Caption, (Len(Label3.Caption) - 1))
c = Left(Label3.Caption, 1)
Next i
Label3.Caption = b + cПоосторожнее с типом Byte!
Длина строки может превысить 255!
Лучше integer или long.
...
Рейтинг: 0 / 0
16.12.2004, 15:44:42
    #32830633
Один
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бегущая строка
WorobjoffПоосторожнее с типом Byte!
Длина строки может превысить 255!
Лучше integer или long. Да.
Знаю случай, когда система сошла с ума 13 сентября из-за типа Byte
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / бегущая строка / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]