用vb设计字幕滚动程序,要求label先向右移,碰到form1最右边的边框后向左移。请问我的设计哪里错了
2个回答
展开全部
dim x as integer 需要放在代码的最上面 而不是放在过程里 过程里只是局部变量
而且不管label是该向左或向右移动的时候你代码 都是无条件的让x=100
那么你If里的 x=-100 就完全失去意义 条件满足后赋值成功 但是还没执行label1.left=label1.left+x
的时候100又变回100了
我给你正确的 如下
Dim x As Integer
Dim bln As Boolean
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + x
If Label1.Left >= Form1.ScaleWidth - Label1.Width Then bln = True
If Label1.Left <= 0 Then bln = False
If bln = True Then x = -100 Else x = 100
End Sub
而且不管label是该向左或向右移动的时候你代码 都是无条件的让x=100
那么你If里的 x=-100 就完全失去意义 条件满足后赋值成功 但是还没执行label1.left=label1.left+x
的时候100又变回100了
我给你正确的 如下
Dim x As Integer
Dim bln As Boolean
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + x
If Label1.Left >= Form1.ScaleWidth - Label1.Width Then bln = True
If Label1.Left <= 0 Then bln = False
If bln = True Then x = -100 Else x = 100
End Sub
展开全部
'给你重写一下,速度自己调节:
Option Explicit
Dim n As Integer, k As Integer
Private Sub Command1_Click()
Timer1.Interval = 100
End Sub
Private Sub Command2_Click()
Timer1.Interval = 0
End Sub
Private Sub Form_Load()
Label1.AutoSize = True
n = 1000: k = 1
End Sub
Private Sub Timer1_Timer()
With Label1
.Left = .Left + k * n
If .Left <= 0 Then
.Left = 0
k = 1
End If
If .Left + .Width >= Me.ScaleWidth Then
.Left = Me.ScaleWidth - .Width
k = -1
End If
End With
End Sub
Option Explicit
Dim n As Integer, k As Integer
Private Sub Command1_Click()
Timer1.Interval = 100
End Sub
Private Sub Command2_Click()
Timer1.Interval = 0
End Sub
Private Sub Form_Load()
Label1.AutoSize = True
n = 1000: k = 1
End Sub
Private Sub Timer1_Timer()
With Label1
.Left = .Left + k * n
If .Left <= 0 Then
.Left = 0
k = 1
End If
If .Left + .Width >= Me.ScaleWidth Then
.Left = Me.ScaleWidth - .Width
k = -1
End If
End With
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询