Excel 基础教程:相对移动
通过指定从当前位置应当移动的距离,使控件移动时,就是相对移动。下述语句是使用相对移动,将 txtField1 移动到它当前位置向右和向下 100 缇处:
txtField1.Move txtField1.Left + 100, txtField1.Top _
+ 100
本节显示 Blanker 示例应用程序中控件的移动。回弹演示程序,可使图片框沿着窗体对角线移动,所以图片框看起来象是从窗体边“反弹”回来一样。因为图象控件移动时重画引起抖动,所以该演示程序使用图片框而不用图象控件。
图 12.11 显示了 Blanker 应用程序 (DemoForm) 的主窗体和此例中用到的图片框。
图 12.11 Blanker 应用程序中的图片框 (picBall)
图片框的名称是 picBall。当从“选项”菜单中选定“Rebound”命令,然后单击“Start Demo”按钮后,该控件就开始沿着窗体移动。这个命令按钮的事件过程再调用 CtlMoveDemo 过程。
CtlMoveDemo 过程随机地从以下四个可能中选定一个开始方向:
- 左上方
- 右上方
- 左下方
- 右下方
picBall 图片框一直沿着选定方向移动,直到控件到达窗体四个边缘中的一个为止。然后图片框从它到达的边缘处改变方向;方向由变量Motion
控制。例如, 当图片框正在向左上方移动时,该过程的这一部分,将改变Motion
的值,以指挥代码让 picBall 向另一个方向移动。
下述语句来自于 Blanker 应用程序中的 CtlMoveDemo 过程:
Select Case Motion Case 1 '
若是向左上方运动,则使控件移动' 20
缇。picBall.Move picBall.Left - 20, picBall.Top - 20
'
若控件接触左边缘,则改变运动'
向右下方。If picBall.Left <= 0 Then
Motion = 2
'
若控件接触上边缘,则改变运动'
向左下方。ElseIf picBall.Top <= 0 Then
Motion = 4
End If
应注意的是,使 picBall 移动的代码行,从它的 Left 和 Top 属性的当前值减 20 缇,以便建立控件的新位置。这可保证控件一直相对其当前位置移动。
控件移动的速度和光滑度,决定于 Move 方法中的缇(或其它单位)数。增加缇数,可提高移动的速度,却要降低移动的光滑度。降低缇数,要降低移动的速度,却可提高控件移动的光滑度。
详细信息关于 Move 方法的补充内容,请参阅《语言参考》的“Move 方法”。