Làm việc với bàn phím

Một phần của tài liệu Giáo trình Lập trình nâng cao (Nghề Lập trình máy tính): Phần 1 - Tổng cục dạy nghề (Trang 100 - 106)

Trong đa số trường hợp nhập liệu, chúng ta khó có thể tránh khỏi trường hợp nhập liệu từ bàn phím. C++ Builder cung cấp một loạt các sự kiện để làm việc với bàn phím theo trình tự như sau:

KeyDown--->KeyPress--->KeyUp.

Một sự kiện của bàn phím gồm có các thành phần sau: Sender: Đối tượng phát sinh sự kiện.

Key: Mã của ký tự hay phím.

Shift: Chứa trạng thái các phím Shift, Alt, Ctrl.

Cần phải lưu ý rằng tham số Key thường chứa mã ASCII chẳng hạn như ký tự A là 65, B là 66, … Tuy nhiên, một số phím đặc biệt sẽ có mã qt và được C++ Builder cài đặt trong các tên hằng được liệt kê các phím hay sử trong trong bảng sau đây:

Hằng số Phím tương ứng VK_LBUTTON Nút chuột trái VK_RBUTTON Nút chuột phải

VK_CANCEL Tổ hợp phím Ctrl + Break VK_MBUTTON Nút giữa chuột

VK_BACK Phím BackSpace VK_TAB Phím Tab VK_CLEAR Phím Clear VK_RETURN Phím Enter VK_SHIFT Phím Shift VK_CONTROL Phím Ctrl VK_MENU Phím Alt VK_PAUSE Phím Pause VK_CAPITAL Phím Caps Lock VK_ESCAPE Phím Esc

VK_SPACE Phím Space bar VK_PRIOR Phím Page Up VK_NEXT Phím Page Down VK_END Phím End

VK_LEFT Phím mũi tên trái VK_UP Phím mũi tên lên VK_RIGHT Phím mũi tên phải VK_DOWN Phím mũi tên xuống VK_SELECT Phím Select

VK_PRINT Phím Print VK_EXECUTE Phím Execute VK_SNAPSHOT Phím Print Screen VK_INSERT Phím Insert VK_DELETE Phím Delete VK_HELP Phím Help

VK_LWIN Phím Windows trái VK_RWIN Phím Windows phải VK_APPS Phím Applications VK_NUMPAD0 Phím số 0 (trên bàn phím số) VK_NUMPAD1 Phím số 1 (trên bàn phím số) VK_NUMPAD2 Phím số 2 (trên bàn phím số) VK_NUMPAD3 Phím số 3 (trên bàn phím số) VK_NUMPAD4 Phím số 4 (trên bàn phím số) VK_NUMPAD5 Phím số 5 (trên bàn phím số) VK_NUMPAD6 Phím số 6 (trên bàn phím số) VK_NUMPAD7 Phím số 7 (trên bàn phím số) VK_NUMPAD8 Phím số 8 (trên bàn phím số) VK_NUMPAD9 Phím số 9 (trên bàn phím số) VK_MULTIPLY Phím nhân (trên bàn phím số) VK_ADD Phím cộng (trên bàn phím số)

VK_SUBTRACT Phím trừ (trên bàn phím số)

VK_DECIMAL Phím dấu chấm thập phân (trên bàn phím số) VK_DIVIDE Phím chia (trên bàn phím số)

VK_F1 Phím F1 VK_F2 Phím F2 VK_F3 Phím F3 VK_F4 Phím F4 VK_F5 Phím F5 VK_F6 Phím F6 VK_F7 Phím F7 VK_F8 Phím F8 VK_F9 Phím F9 VK_F10 Phím F10 VK_F11 Phím F11 VK_F12 Phím F12 VK_F13 Phím F13 VK_F14 Phím F14 VK_F15 Phím F15 VK_F16 Phím F16 VK_F17 Phím F17 VK_F18 Phím F18 VK_F19 Phím F19 VK_F20 Phím F20 VK_F21 Phím F21 VK_F22 Phím F22 VK_F23 Phím F23 VK_F24 Phím F24

VK_NUMLOCK Phím Numlock VK_SCROLL Phím Scroll Lock

VK_LSHIFT Phím Shift trái (chỉ sử dụng với hàm GetAsyncKeyState và GetKeyState)

VK_RSHIFT Phím Shift phải (chỉ sử dụng với hàm GetAsyncKeyState và GetKeyState)

VK_LCONTROL Phím Ctrl trái (chỉ sử dụng với hàm GetAsyncKeyState và GetKeyState)

VK_RCONTROL Phím Ctrl phải (chỉ sử dụng với hàm GetAsyncKeyState và GetKeyState)

VK_LMENU Phím Alt trái (chỉ sử dụng với hàm GetAsyncKeyState và GetKeyState)

VK_RMENU Phím Alt phải (chỉ sử dụng với hàm GetAsyncKeyState và GetKeyState)

VK_PROCESSKEY Phím Process VK_ATTN Phím Attn VK_CRSEL Phím CrSel VK_EXSEL Phím ExSel VK_EREOF Phím Erase EOF VK_PLAY Phím Play

VK_ZOOM Phím Zoom VK_PA1 Phím PA1 VK_OEM_CLEAR Phím Clear

Chú ý rằng sự kiện OnKeyPress phát sinh trước khi hiển thị ký tự trên đối tượng, nghĩa là, chỉ các mã có thể hiển thị được ký tự thì mới phát sinh sự kiện OnKeyPress.

Ví dụ: Chương trình sau chỉ cho phép nhập các ký tự và một hộp văn bản và hiển thị tất cả thành chữ hoa. Chúng ta thiết kế chương trình này theo từng bước:

Hình 66- Chương trình Edit UpperCase

Bước 2: Viết mã lệnh cho sự kiện OnKeyPress của đối tượng hộp văn bản để có đoạn mã lệnh như sau:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) {

if (Key>='a' && Key<='z')

Key=Key - 32; //chuyển ký tự sang chữ hoa else if ((Key<'A' || Key>'Z') && Key!=8) {

Key=0;

// khơng phải ký tự hoặc ký tự xố lùi (mã là 8) thì cho mã = 0. Nghĩa là ký tự sẽ bị đổi thành ký tự rỗng để không hiển thị trong Edit1 ký tự gốc

Beep(); //phát tiếng kêu bip }

}

Ví dụ 2: Chương trình sau sử dụng phím Enter như phím Tab để di chuyển chỉ điểm theo thứ tự TabOrder của các đối tượng trên Form.

Chúng ta tiến hành tạo chương trình trên theo ba bước sau:

Bước 1: Tạo Form với các đối tượng TEdit với các thuộc tính mặc định theo hình sau:

Hình 67- Thiết kế chương trình Enter Like As Tab

Bước 2: Viết mã lệnh cho sự kiện OnKeyPress của đối tượng Edit1 như sau: void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

if (Key==VK_RETURN)

this->Perform (CM_DIALOGKEY, VK_TAB, 0); //gởi phím Tab cho Form }

Bước 3: Gắn kết sự kiện OnKeyPress1 cho các đối tượng TEdit còn lại.

Một phần của tài liệu Giáo trình Lập trình nâng cao (Nghề Lập trình máy tính): Phần 1 - Tổng cục dạy nghề (Trang 100 - 106)

Tải bản đầy đủ (PDF)

(133 trang)