Author: | Eric Aling |
Accessed: |
Place a commandbutton on a window. For the commandbutton, create an INTEGER instance variable ii_i and map the pbm_mousemove event to an userevent ue_mousemove.
Code in the ue_mousemove event:
long ll_x, ll_nx, ll_xo
long ll_y, ll_ny, ll_yo
long ll_i long ll_xc,ll_yc
/* display some annoyig text */
ii_i++
CHOOSE CASE ii_i
CASE 100
This.Text = "Haha"
CASE 125
This.Text = "Catch"
CASE 150
This.Text = "me"
CASE 175
This.Text = "if"
CASE 200
This.Text = "you"
CASE 225
This.Text = "can!!"
CASE 300
This.Text = "Close"
CASE 400
This.Text = "Press"
CASE 410
This.Text = "Esc!"
CASE 450
This.Text = "Close"
ii_i = 0
END CHOOSE
/* get current position of pointer */
ll_x = This.PointerX()
ll_y = This.PointerY()
/* move commandbutton based n this position */
IF ll_x < (This.Width / 2) THEN
ll_nx = This.X + 10
ELSE
ll_nx = This.X - 10
END IF
IF ll_y < (This.Height / 2) THEN
ll_ny = This.Y + 10
ELSE
ll_ny = This.Y - 10
END IF
/* if borders are reached, move back to center, else move to new position */
IF ll_nx < 1 OR &
ll_nx > ( Parent.Width - This.Width - 10) OR &
ll_ny < 1 OR &
ll_ny > ( Parent.Height - (This.Height + 100)) THEN
ll_xc = (Parent.Width - This.Width) / 2
ll_yc = (Parent.Height - This.Height) / 2
ll_xo = This.x
ll_yo = This.y
FOR ll_i = 1 TO 100
This.move( ll_xo + (( ll_xc - ll_xo )/100)*ll_i, &
ll_yo + (( ll_yc - ll_yo )/100)*ll_i )
NEXT
ELSE
This.move(ll_nx,ll_ny)
END IF
In the clicked event code Close(parent) and make the commandbutton the 'cancel' button ( by selecting the cancel propery ).