来个最笨的思路:
Option Explicit
Private Sub Command1_Click()
''设置标签内容
Dim i As Long, k As Long
Lab(0).Caption = "0123456789abcdefghijklmnopqrstuvwxyz"
''计算布满窗体需要几组标签
k = CLng(Me.Width / Lab(0).Width) + 1
If k = 1 Then k = 2 ''保证最少2组
''加载其它标签
For i = 1 To k - 1
Load Lab(i)
Lab(i).Caption = Lab(0).Caption ''设置标签内容
Lab(i).Visible = True ''确保标签可见
Next
''调整标签位置
For i = 0 To k - 1
If i = 0 Then
''设置第一个标签位置
Lab(i).Move Me.Width, 800
Else
Lab(i).Move Lab(i - 1).Left + Lab(i - 1).Width, 800
End If
Next
Lab(0).Tag = "0" ''排在最前面的编号
''设置定时器,开始工作
Timer1.Interval = 100 ''100ms执行一次
Timer1.Enabled = True
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = True
End Sub
Private Sub Lab_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
''鼠标移动到标签上时,停止滚动;离开时又开始滚动(由窗体监测)
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim i As Long, k As Long
For i = 0 To Lab.Count - 1
Lab(i).Left = Lab(i).Left - 100 ''每次向左移动100twips
Next
''判断最前面的是否出了窗体左边界
i = CLng(Lab(0).Tag) ''第一个lab编号
If Lab(i).Left + Lab(i).Width <= 0 Then
''移动到最后
k = i - 1 ''计算当前最后编号
If k < 0 Then k = Lab.Count - 1
Lab(i).Left = Lab(k).Left + Lab(k).Width
k = i + 1 ''计算新的排头编号
If k > Lab.Count - 1 Then k = 0
Lab(0).Tag = CStr(k) ''保存新排头编号
End If
End Sub
Option Explicit
Private Sub Command1_Click()
''设置标签内容
Dim i As Long, k As Long
Lab(0).Caption = "0123456789abcdefghijklmnopqrstuvwxyz"
''计算布满窗体需要几组标签
k = CLng(Me.Width / Lab(0).Width) + 1
If k = 1 Then k = 2 ''保证最少2组
''加载其它标签
For i = 1 To k - 1
Load Lab(i)
Lab(i).Caption = Lab(0).Caption ''设置标签内容
Lab(i).Visible = True ''确保标签可见
Next
''调整标签位置
For i = 0 To k - 1
If i = 0 Then
''设置第一个标签位置
Lab(i).Move Me.Width, 800
Else
Lab(i).Move Lab(i - 1).Left + Lab(i - 1).Width, 800
End If
Next
Lab(0).Tag = "0" ''排在最前面的编号
''设置定时器,开始工作
Timer1.Interval = 100 ''100ms执行一次
Timer1.Enabled = True
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = True
End Sub
Private Sub Lab_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
''鼠标移动到标签上时,停止滚动;离开时又开始滚动(由窗体监测)
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim i As Long, k As Long
For i = 0 To Lab.Count - 1
Lab(i).Left = Lab(i).Left - 100 ''每次向左移动100twips
Next
''判断最前面的是否出了窗体左边界
i = CLng(Lab(0).Tag) ''第一个lab编号
If Lab(i).Left + Lab(i).Width <= 0 Then
''移动到最后
k = i - 1 ''计算当前最后编号
If k < 0 Then k = Lab.Count - 1
Lab(i).Left = Lab(k).Left + Lab(k).Width
k = i + 1 ''计算新的排头编号
If k > Lab.Count - 1 Then k = 0
Lab(0).Tag = CStr(k) ''保存新排头编号
End If
End Sub
大哥,不行啊,我试了建几个lab数组控件,报错。
大哥,不行啊,我试了建几个lab数组控件,报错。界面中只需要一个label,一个command,一个timer共3个控件
其中label需要改名lab,并且将index值设为0
然后运行点command即可