Private Sub Command1_Click()
'单击按钮开始显示动画文字
    Timer1.Enabled = True
End SubPrivate Sub Timer1_Timer()
'移动标签
    If (Form1.Width - Label1.Left) > 100 Then
        Label1.Move Label1.Left + 100  '知道这是条使标签复位的语句
    Else
        Label1.Move 0  '什么意思?
    End If
End Sub
不知道哪条语句使标签右移的?timer能使标签左移么? 

解决方案 »

  1.   


    Move 方法
          用以移动 MDIForm、Form 或控件。不支持命名参数。语法object.Move left, top, width, heightMove 方法的语法包含下列部分:部分 描述 
    object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的窗体缺省为 object。 
    left 必需的。单精度值,指示 object 左边的水平坐标 (x-轴)。 
    top 可选的。单精度值,指示 object 顶边的垂直坐标 (y-轴)。  
    width 可选的。单精度值,指示 object 新的宽度。 
    height 可选的。单精度值,指示 object 新的高度。 
    说明只有 left 参数是必须的。但是,要指定任何其它的参数,必须先指定出现在语法中该参数前面的全部参数。例如,如果不先指定 left 和 top 参数,则无法指定 width 参数。任何没有指定的尾部的参数则保持不变。对于 Frame 控件中的窗体和控件,坐标系统总是用缇 。移动屏幕上的窗体或移动 Frame 中的控件总是相对于左上角的原点 (0,0)。移动 Form 对象或 PictureBox 中的控件(或 MDIForm 对象中的 MDI 子窗体)时,则使用该容器对象的坐标系统。坐标系统或度量单位是在设计时 用 ScaleMode 属性设置。在运行时 使用 Scale 方法可以更改该坐标系统。
      

  2.   

    动态地移动控件
    使用 Visual Basic,在运行时移动控件是最容易取得的效果之一。可以直接改变控件位置定义的属性,也可使用 Move 方法。使用 Left 和 Top 属性
    Left 属性是控件左上角到窗体左边的距离。Top 属性是控件左上角到窗体上边的距离。图 12.10 显示控件的 Left 和 Top 属性。图 12.10 Left 和 Top 属性通过改变 Left 和 Top 属性的设置值移动控件,可使用以下语句:txtField1.Left = txtField1.Left + 200
    txtField1.Top = txtField1.Top – 300移动 Line 控件
    如前面提到的,直线控件没有 Left 和 Top 属性。但是,可使用特殊的属性,对窗体上直线控件的位置进行控制。下表列出这些属性,以及用它们怎样决定直线控件的位置。属性 描述 
    X1 直线起点的 x 坐标。该坐标用当前刻度单位给出。直线的起点是开始画之前创建的端点。 
    Y1 直线起点的 y 坐标。 
    X2 直线终点的 x 坐标。直线终点是停止画时最后创建的端点。 
    Y2 直线终点的 y 坐标。 
    Blanker 应用程序的跳跃直线演示程序,使用以下语句随机地改变 DemoForm 上直线控件的位置:'为第一个直线端点,设置随机的 X 位置值。
    linLineCtl.X1 = Int(DemoForm.Width * Rnd)
    '为第一个直线端点,设置随机的 Y 位置值。
    linLineCtl.Y1 = Int(DemoForm.Height * Rnd)
    '为第二个直线端点,设置随机的 X 位置值。
    linLineCtl.X2 = Int(DemoForm.Width * Rnd)
    '为第二个直线端点,设置随机的 Y 位置值。
    linLineCtl.Y2 = Int(DemoForm.Height * Rnd)
    '清除移动直线遗留像素。
    Cls
    '在下次移动之前使显示暂停。
    Delay使用 Move 方法
    改变 Left 和 Top 或 X 和 Y 属性,会使控件产生先水平移动然后再垂直移动的颠簸效果。Move 方法则能产生更平滑的对角线方向的移动。Move 方法的语法如下:[object.]Move left [, top[, width[, height] ] ]object 是被移动的窗体或控件。如果省略了 object,则移动的是当前窗体。left 和 top 参数是 object 对象的 Left 和 Top 属性的新设置值,而 width 和 height 则是它的 Width 和 Height 属性的新设置值。其中,只有 left 是必须的,但是,若要指定其它参数时,就必须一并指定参数列表中出现在指定参数之前的所有参数。绝对移动
    当对象在其容器中移动到指定坐标处时,就是绝对移动。下述语句是用绝对移动,将名为 txtField1 的控件,移动到坐标(100,200)处:txtField1.Move 100, 200相对移动
    通过指定从当前位置应当移动的距离,使控件移动时,就是相对移动。下述语句是使用相对移动,将 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 方法”。
      

  3.   

    If (Form1.Width - Label1.Left) > 100 Then
        Label1.Move Label1.Left + 100  'left是label的一个属性值是这个控件距离窗体左边                  '的距离+100就离左边远了100象素,形成了右移
                      '如果是-100就形成了左移.
        Else
            Label1.Move 0  '不移动
        End If
      

  4.   

    Private Sub Timer1_Timer()
    '移动标签
        If (Form1.Width - Label1.Left) > 100 Then
            '使Label1右移100个单位
            Label1.Move Label1.Left + 100
        Else
            '使Label1回到最左边
            Label1.Move 0
        End If
    End Sub
      

  5.   

    If (Form11.Width - Label1.Left) > 100 Then
            Label1.Move Label1.Left + 100  '其实这句是Label往右移动
        Else
    '        Label1.Move 0  '什么意思?这句才是让Label复位到最左边
        End If
      

  6.   

    //'的距离+100就离左边远了100象素,形成了右移一般ScaleMode属性是设为vbTwps的,所以是移动100缇
    只有ScaleMode属性为vbPixels时才是100像素