Một số kiến thức sơ cấp về chuột
Trang 108/05/24 Design: NguyÔn HiÒn Du 1
Mét sè sù kiÖn cao cÊp vÒ chuét
Mét sè sù kiÖn cao cÊp vÒ chuét
Néi dung chÝnh:
C¸c thñ tôc sù kiÖn c¬ b¶n C¸c thñ tôc sù kiÖn c¬ b¶n
(MouseDown,
MouseUp, MouseMove,
MouseMove )
Bµn phÝm
Trang 2I C¸c thñ tôc sù kiÖn
A Các thủ tục sự kiện cơ bản
Tªn thñ tôc ý nghÜa
MouseDown Ng êi dïng nh¾p mét trong c¸c nót chuét
- iÒu khiÓn chØ nhËn ra sù kiÖn chuét khi trá ĐiÒu khiÓn chØ nhËn ra sù kiÖn chuét khi trá chuét n»m trong ®iÒu khiÓn, cßn l¹i biÓu mÉu c¬ së nhËn ra sù kiÖn chuét
Có 3 thủ tục sự kiện cơ bản về chuột như sau:
Trang 3C¸c thñ tôc sù kiÖn chuét cã cïng d¹ng vµ cïng tham sè nh sau:
ObjName_MouseEvent (Button As Integer, Shift As Integer, X As Single, Y As Single)
Trong đó:
ObjName: tên đối tượng cần thao tác
MouseEvent: tên thủ tục sự kiện
Button:
Button: Nút chuột nào được nhấn
Shift: Phát hiện xem có dùng tổ hợp phím hay không
X,Y: Toạ độ của trỏ chuột
Trang 4Private Sub Form_MouseDown(button As
Integer, Shift As Integer, X As Single, Y As
Single)
CurrentX = X CurrentY = Y Print “Help Me”
End Sub
B Để hiểu rõ hơn ta xét các ví dụ dưới đây:
Trong ví dụ trên mỗi lần ta nhấn chuột màn hình
sẽ in ra câu “Help Me” tại toạ độ dòng X, cột Y.
Trang 5Private Sub Form_MouseUp(Button As Integer,
Shift As Integer, X As Single, Y As Single)
Randomize
X = Int(2000 * Rnd)
Y = Int(2000 * Rnd)
CurrentX = X
CurrentY = Y
Print “Help me"
End Sub
Ví dụ dưới đây in ra màn hình dòng “Help me”
tại toạ độ X, Y thuộc khoản [0,2000] mỗi khi ta thả nút chuột ra
Trang 6Private Sub Form_MouseMove(Button As Integer,
Shift As Integer, X As Single, Y As Single)
Dim A, B
A = CurrentX
B = CurrentY
CurrentX = X
CurrentY = Y
Line (A, B)-(X, Y)
End Sub
Ví dụ trên vẽ ra màn hình mỗi khi ta di chuyển chuột
Trang 7Lưu ý: nếu đối tượng là thành phần của một
mảng điều khiển thì Index là tham số tuỳ chọn đầu tiên như sau:
ObjControlArray_MouseEvent(Index As
Integer, Button As Integer, Shift As Integer, X
As Single, Y As Single)
Trang 8C Các tham số Button của chuột
Giả sử ta muốn vẽ một đường thẳng từ toạ độ hiện tại đến ví trí trỏ chuột khi ta kích chuột phải còn khi kích các nút chuột khác sẽ không thực hiên để thực hiện được điều này ta phải điều khiển được các nút chuột
Bảng tham số nút chuột
Trang 9Private Sub Form_MouseDown(Button As Integer,
Shift As Integer, X As Single, Y As Single)
Dim A, B As Integer
A = CurrentX
B = CurrentY
If Button = 1 Then
CurrentX = X
CurrentY = Y
Line (A, B)-(X, Y)
End If
End Sub
Ví dụ
Trang 10II Tổ hợp phớm và chuột
có thể phát hiện xem ng ời dùng đã nhấn
Điều khiển chỉ nhận ra sự kiện chuột khi trỏ ể có thể phát hiện xem người dùng đã nhấn
một trong các phím SHIFT, CTRL, ALT trong khi ấn hoặc nhấn chuột Mu n phát hiện ốn phát hiện
hành động này ta sử dụng tham số Shift trong
thủ tục sự kiện MouseUp hay MouseDown
D ới đây là b ng nêu các giá trị hằng của tham ảng nêu các giá trị hằng của tham
số Shift cho phép ta phát hiện các phím đặc biệt:
Trang 11Hành động Hằng
Nhấn đè
SHIFT+CTRL+ALT
vbShiftMask+vbCtrlMask+vbAltM ask
Trang 12Ví dụ dưới đây sẽ vẽ đường thẳng từ vị trí hiện tại đến
vị trí chuột khi ta ấn phím CTRL và kích phải chuột
Private Sub Form_MouseDown(Button As Integer, shift
As Integer, X As Single, Y As Single)
Dim A, B As Integer
A = CurrentX
B = CurrentY
Select Case shift
Case vbCtrlMask
If Button =vbLeftbutton Then
CurrentX = X
CurrentY = Y
Line (A, B)-(X, Y)
End If
End Select
Trang 13III Một số sự kiện khỏc
a Kộo thả cỏc điều khiển
ể dời một điều khiển khi đang thiết kế, ta nhấn đè nút
Điều khiển chỉ nhận ra sự kiện chuột khi trỏ
trái chuột, rồi dời trỏ chuột đến nơi muốn đặt điều khiển Ta gọi quá trỡnh này là kéo (dragging)
Các điều khiển cho phép dùng hai kiểu kéo t ơng ứng với hai giá trị khác nhau của tính chất DragMode Ngầm
định là không cho phép ta kéo ứng với DragMode=0, đ
ợc phép kéo ứng với DragMode=1 Sự kiện kéo th đ ợc ảng nêu các giá trị hằng của tham gọi là sự kiện DragDrop
Trang 14Vớ dụ: đặt lờn form một nỳt command1 và ta dựng thủ tục kộo thả nỳt lệnh trờn form như sau:
Private Sub Form_DragDrop(Source As Control, X
As Single, Y As Single)
Command1.Move X, Y End Sub
L u ý: - Ta ph i ấn định tính chất DragMode=1 của ưu ý: - Ta phải ấn định tính chất DragMode=1 của ảng nêu các giá trị hằng của tham
điều khiển vào thời gian thiết kế bằng cách lựa tính chất DragMode từ hộp Properties
- N u mu n tr chu t bi n hếu muốn trỏ chuột biến h ốn phát hiện ỏ chuột biến h ột biến h ếu muốn trỏ chuột biến h ỡnh khi ta kộo thả, ta cú thể
sử dụng thuộc tớnh DragIcon trong cửa sổ Properties
Trang 15b Sự kiện DragOver
Sự kiện DragOver để tạo thêm kh n ng linh hoạt cho ảng nêu các giá trị hằng của tham ăng linh hoạt cho các đề án Sự kiện này cho phép ta giám sát đ ờng dẫn của
điều khiển trong khi đang kéo Dạng thủ tục sự kiện với Form là:
Private Sub Form_DragOver(Source As Control, X
As Single, Y As Single, State As Integer)
Với các điều khiển, thủ tục sự kiện này có dạng nh sau:
Private Sub CtrlName_DragOver([Index As Integer, ] Source As Control, X As Single, Y As Single, State As Integer)
Trang 16Trong đú: Source là điều khiển đang đ ợc kéo, nh ng thủ tục sự kiện đ ợc kết hợp với điều khiển đang đ ợc rê trên
nó Các tham số X và Y cho ta giá trị CurrentX và CurrentY Tham số State có ba giá trị:
Giá trị của tham số
State
Mô tả
0 Nguồn giờ đây nằm trong
đích
1 Nguồn nằm ngay bên trái đích
2 Nguồn đ ợc dời vào trong đích
Trang 17B ng d ới đây tóm tắt các sự kiện, ph ơng pháp và tính chất ảng nêu các giá trị hằng của tham dùng cho kỹ thuật kéo và th ảng nêu các giá trị hằng của tham
Tính chất
DragMode
Cho phép kéo tự động (giá trị = 1) hoặc kéo thủ công (giá trị = 0)
Tính chất
DragIcon
ấn định tính chất này để thay đổi từ hỡnh
ch nhật xám sang biểu t ợng tuỳ biến khi ữ nhật xám sang biểu tượng tuỳ biến khi kéo
khiển nguồn di chuyển lên trên đó trong khi kéo
ấn định là thủ công
Trang 18Private Sub Form_MouseMove(Button As Integer, Shift
As Integer, X As Single, Y As Single)
Text1.Move X, Y
End Sub
Private Sub Picture1_DragOver(Source As Control, X
As Single, Y As Single, State As Integer)
Select Case State
Case vbEnter
Source.DragIcon = LoadPicture("D:\
Books04.ICO")
Case vbLeave
Source.DragIcon = LoadPicture()
End Select
Trang 19Private Sub Picture1_DragDrop(Source As Control, X
As Single, Y As Single)
Source.DragIcon = LoadPicture() ' Unload icon
End Sub