感悟网 导航

标签沿窗口移动 VB代码 VB程序运行后,如果单击窗体,如何编写代码可是标签移至窗体的...

作者&投稿:实侍 (若有异议请与网页底部的电邮联系)
VB中,如何让标签在窗体中反复的左右移动.~

在窗体上添加一个Timer控件,Interval属性设置为100

Dim flag As Boolean

Private Sub Form_Load()
flag = False
End Sub

Private Sub Timer1_Timer()
If Not flag And Label1.Left + Label1.Width <= Me.ScaleWidth Then
Label1.Left = Label1.Left + 200
If Label1.Left + Label1.Width >= Me.ScaleWidth Then flag = True
Else
Label1.Left = Label1.Left - 200
If Label1.Left <= 0 Then flag = False
End If
End Sub

Private Sub Form_Click()
Label1.Left = Form1.Width - Label1.Width
Label1.Top = 0
End Sub

基本上是在你原有基础上做的加工,但避免了窗口缩小时,标签可能看不见的情况,也对标签和窗体边沿之间出现空白的情况做了处理

'在窗体内添加一个Label控件,一个Command控件,和一个Timer控件
Dim zt As Integer, flag As Boolean
Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub

Private Sub Form_Activate()
Timer1.Interval = 100 '计时器时间间隔设定
Timer1.Enabled=True
Label1.Appearance = 0
Label1.Left = 0
Label1.Top = 0
Me.Caption = Me.Width & "_" & Me.Height
zt = 0
End Sub

Private Sub Form_Paint()
Me.Caption = Me.Width & "_" & Me.Height
End Sub

Private Sub Form_Resize() '保证窗口改变时,仍然能沿着窗口边缘移动
Select Case zt
Case 3
Label1.Left = 0
Case 0
Label1.Top = 0
Case 1
Label1.Left = Me.ScaleWidth - Label1.Width
Case 2
Label1.Top = Me.ScaleHeight - Label1.Height
Case Else
Label1.Left = 0
Label1.Top = 0
End Select
End Sub
'zt=0,1,2,3时,分别表示上沿,右侧,下沿,左侧
Private Sub Timer1_Timer()
foot = 100'循环步长设定
a = Me.ScaleWidth
b = Me.ScaleHeight
x = Label1.Width / 2
y = Label1.Height / 2

If flag = True Then '顺时针

If zt = 0 Then
Label1.Left = Label1.Left + foot
Label1.Top = 0
If Label1.Left > a - 2 * x - foot Then zt = 1

ElseIf zt = 1 Then
Label1.Top = Label1.Top + foot
Label1.Left = a - 2 * x
If Label1.Top > b - 2 * y - foot Then zt = 2

ElseIf zt = 2 Then
Label1.Left = Label1.Left - foot
Label1.Top = b - 2 * y
If Label1.Left < foot Then zt = 3

ElseIf zt = 3 Then
Label1.Top = Label1.Top - foot
Label1.Left = 0
If Label1.Top < foot Then flag = False
End If

Else '逆时针

If zt = 3 Then
Label1.Top = Label1.Top + foot
Label1.Left = 0
If Label1.Top > b - 2 * y - foot Then zt = 2

ElseIf zt = 2 Then
Label1.Left = Label1.Left + foot
Label1.Top = b - 2 * y
If Label1.Left > a - 2 * x - foot Then zt = 1

ElseIf zt = 1 Then
Label1.Top = Label1.Top - foot
Label1.Left = a - 2 * x
If Label1.Top < foot Then zt = 0

ElseIf zt = 0 Then
Label1.Left = Label1.Left - foot
Label1.Top = 0
If Label1.Left < foot Then flag = True
End If

End If
End Sub

在窗体画上个标签和一个timer控件,用如下代码:
Dim m As Long, n As Long
Private Sub Form_Load()
m = Me.Width: n = Me.Height
Timer1.Interval = 100
Label1.Left = 0
Label1.Top = 0
Label1.BackColor = vbGreen
End Sub

Private Sub Timer1_Timer()
Static a As Long, b As Long
a = Label1.Left: b = Label1.Top
If a = 0 And b < Me.Height - Label1.Height - 500 Then
Label1.Top = Label1.Top + 100
ElseIf a < Me.Width - Label1.Width And b >= Me.Height - Label1.Height - 500 Then
Label1.Left = Label1.Left + 100
ElseIf a > Me.Width - Label1.Width And b > 0 Then
Label1.Top = Label1.Top - 100
ElseIf a > 0 And b <= 0 Then
Label1.Left = Label1.Left - 100
Else
If Me.Height > n Then
If b < Me.Height - Label1.Height - 500 Then
Label1.Top = Label1.Top + 100
Else
n = Me.Height
End If
End If
If Me.Width > m Then
If a < Me.Width - Label1.Width Then
Label1.Left = Label1.Left + 100
Else
n = Me.Width
End If
End If

End If
End Sub

新建一个窗体,上面放一个标签控件,再放一个timer控件。
已经过测试,保证通过。

Dim flag As String
Private Sub Form_Load()
flag = "lefttop"
Timer1.Interval = 50
Label1.Top = 0
Label1.Left = 0

End Sub

Private Sub Timer1_Timer()

Select Case flag
Case "lefttop"
If Label1.Left + Label1.Width + 250 > Form1.Width Then
Label1.Left = Form1.Width - Label1.Width - 250
flag = "righttop"
Else
Label1.Left = Label1.Left + 100
End If
Case "righttop"
If Label1.Top + Label1.Height + 550 > Form1.Height Then
Label1.Top = Form1.Height - Label1.Height - 550
flag = "rightbottom"
Else
Label1.Top = Label1.Top + 100
End If
Case "rightbottom"
If Label1.Left - 100 < 0 Then
Label1.Left = 0
flag = "leftbottom"
Else
Label1.Left = Label1.Left - 100
End If
Case "leftbottom"
If Label1.Top - 100 < 0 Then
Label1.Top = 0
flag = "lefttop"
Else
Label1.Top = Label1.Top - 100
End If
End Select
End Sub

窗口大小也改变?

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网