(28-08-15, 09:17 PM)thanhquyt Đã viết: ....
Cho mình hỏi thêm- gán phím tắt cho button như thế nào . Vd muốn gán Ctrl+P là print
Về việc gắn phím tắt, có 2 dạng:
1. Phím tắt kiểu nhấn nút Alt + nút ký tự đặc biệt nào đó để thực hiện cho nhanh ví dụ:
Khi sử dụng Excel, ta hay bấm Alt+E+S để gọi chức năng dán đặc biệt.
Cái này gọi là phím tắt để đi cho nhanh.
Với Access, bạn chỉ cần đặt thêm dấu & vào ký tự muốn gọi ở phần Caption của nút bấm hoặc Nhãn (Label) thì
- sẽ truy cập trực tiếp vào nút bấm (thay cho việc nhấn chuột), nếu có 2 nút hoặc nhãn cùng có gán chữ giống nhau thì việc nhấn Alt+ký tự liên quan sẽ cho phép chuyển lựa chọn vào các đối tượng có gán cùng ký tự tắt đó.
Ví dụ Nhãn của Textbox txtHovaten là lblHovaten có Caption là Họ và tên, tôi gán kỹ tự & vào chữ h bằng việc đặt thuộc tính Caption của lblHovaten là &Họ và tên.
Trong khi đó tôi lại có một nút bấm có nhãn là Hủy, tôi cũng đặt caption là &Hủy thì nếu nhấn Alt+H nó sẽ chuyển lựa chọn vào Nút bấm hoặc txtHovaten. Để nhấn nút thì phải nhấn Alt+H cho đến khi Nút bấm Hủy được lựa chọn sau đó gõ Enter.
Với dạng này bạn chỉ cần đặt thêm ký tự & vào ký tự muốn đặt phím tắt là được.
&Chấp thuận >> nhấn Alt+C sẽ chuyển đến điều khiển tương ứng.
2. Phím nóng
Tức là chỉ cần nhấn Ctrl+P để in chẳng hạn hoặc F2 để thêm/ sửa/ xóa ...vv. Cái này thì lằng nhằng hơn chút. Bạn cần làm 2 bước
+ Đặt thuộc tính KeyPreview của Form thành Yes.
+ Thiết lập sự kiện KeyDown (tốt nhất là KeyDown) của Form để kích hoạt các lệnh cần thiết khi bạn nhấn phím này.
Hãy thử nhé.
>Tạo 1 form ví dụ, đặt thuộc tính KeyPreview là Yes
>Kích hoạt sự kiện Form_KeyDown bằng cách chọn thuộc tính của form (Property), chọn mục Event, chọn KeyDown và chọn [Event Procedure]
Mã:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF6
'Thực hiện lệnh khi bấm F6
DatabaseCleanup
Case vbKeyControl and vbKeyP
'Thực hiện lệnh khi bấm Ctrl+P
FetchMEData
Case Else
End Select
End Sub
Và để lập trình chỗ này một cách thành thạo, bạn nên dùng phím F1 đọc trợ giúp về danh sách các nút bấm. Đa phần thì vbKey[ký tự] = phím điều khiển tương ứng ví dụ vbKeyA = phím A.
Nhưng có những phím đặc biệt khác mà tôi không nói hết được.
Còn về 3 sự kiện KeyDown, KeyUp và KeyPress thì xin nói vắn tắt thế này:
Thứ tự kích hoạt các sự kiện khi nhấn một phím là KeyDown>KeyPress>KeyUp vì vậy khi muốn bẫy phím nào đó người ta thường chọn KeyDown để dễ bề kiểm soát ứng xử của ứng dụng. Rất nhiều khi sự kiện KeyPress sẽ không được kích hoạt khi mà chưa tạo ra ký tự nào.
Nói khác hơn, dùng KeyDown để bẫy phím bấm; KeyPress để bẫy việc nhập liệu một cách đơn giản, ví dụ cấm nhập số thì KeyPress là lựa chọn phù hợp nhất.
Xin phép lãng đãng vào lời như vậy.
Chúc bạn vui vẻ.