如何控制VB标签在窗口中来回移动
发布网友
发布时间:2023-11-24 06:20
我来回答
共1个回答
热心网友
时间:2024-11-08 19:46
基本上是在你原有基础上做的加工,但避免了窗口缩小时,标签可能看不见的情况,也对标签和窗体边沿之间出现空白的情况做了处理
'在窗体内添加一个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