应用题 1. 在考生文件夹下有一个工程文件sjt5.vbp,在其窗体中有一个实心圆。程序运行时,当用鼠标左键单击窗体任何空白位置时,实心圆则向单击位置直线移动;若用鼠标右键单击窗体,则实心圆停止移动。窗体文件中已经给出了全部控件,但程序不完整。
    要求:请去掉程序中的注释符,把程序中的?改为正确的内容,使其能正确运行,不能修改程序的其他部分和控件属性。最后将修改后的文件按原文件名存盘。
【正确答案】【操作步骤】
   步骤1:打开本题工程文件。
   步骤2:打开代码编辑窗口,去掉程序中的注释符,将问号改为正确的内容。
   参考答案(字体加粗部分是需考生填入的内容)
   Dim stepy As Integer    '纵向移动增量
   Dim stepx As Integer    '横向移动增量
   Const LEFT_BUTTON=1
   Private Sub Form_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single)
   Dim x0 As Integer,y0 As Integer,a As Single,radius As_Integer
   radius=Shape1.Width/2    '圆的半径
   If Button=LEFT_BUTTON Then
   '单击鼠标左键移动
   x0=Shape1.Left+radius '圆心的x坐标
   y0=Shape1.Top+radius '圆心的y坐标
   If x=x0 Then '垂直移动
   stepy=Sgn(y-y0)*50
   stepx=0
   Else '倾斜移动
   a=(y-y0)/(x-x0) '斜率
   stepx=Sgn(x-x0)*50
   stepy=a*stepx
   '通过stepx确定stepy的值
   If Abs(stepy)  >Abs (stepx)Then
   stepy=Sgn(y-y0)*50
   stepx=stepy/a
   End If
   End If
   Timer1.Enabled=True '单击鼠标左键则触发Timer事件
   Else
   Timer1.Enabled=False '单击鼠标右键则停止Timer事件
   End If
   End Sub
   Private Sub Timer1_Timer()
   Shape1.Move Shape1.Left+stepx,Shape1.Top+stepy '移动shape1
   End Sub
   步骤3:调试并运行程序,关闭程序后按题目要求存盘。
   【易错提示】语句比较复杂,要耐心地读懂程序,然后再做就很简单了。
   
【答案解析】[考点] 本题考点有:形状控件的Width、Left和Top属性,形状控件的Move方法,Abs()函数,sgn()函数以及坐标变量。
通过鼠标左键单击位置的坐标及圆心的坐标确定一条直线,并沿着这条直线移动,通过计算这条直线的斜率,得知水平位移和竖直位移,再通过形状控件的Move方法、Left和Top属性实现形状控件位置的移动。
   sgn(x)函数返回x的正负号,如果x为正数,返回1;如果为负数,返回-1;如果为0,则返回0。