-
Sửa lỗi tiếng Việt khi quét Barcode/ QR code
ongke0711 > 23-05-21, 01:03 AM
Vô hiệu hoá việc tự động chuyển tiếng Việt khi quét Barcode/ QR code
(Không cần tắt bộ gõ Unikey)
---------------------------------------------------------------------------------------------
Do cũng có nhu cầu thực tế ở một số trường hợp Barcode hay QR code có mã với thư tự ký tư vô tình trùng với cách gõ bỏ dấu tiếng Việt kiểu Telex hay VNI của bộ gõ. Bộ gõ tiếng Việt sẽ tài lanh, tự chuyển barcode sang tiếng Việt có dấu.
Để ngăn vấn đề này, có một giải pháp là viết code để tự động tắt/mở bộ gõ tiếng Việt. Cách này có hạn chế là ứng dụng phải tắt mở liên tục bộ gõ, không hiệu quả cho lắm.
Tôi có bộ code hỗ trợ giải quyết vấn đề trên mà không cần tắt mở bộ gõ, đó là: bắt sự kiện KeyUp khi quét barcode, lưu tạm trên bộ nhớ, sau đó gán thẳng xuống TextBox chứ không chạy từng ký tự để bộ gõ có thời gian can thiệp.
Cách xử lý này, bạn có thể nhập barcode từ bàn phím, bàn phím số cũng được.
Khi quét barcode cũng giống như khi nhập bằng bàn phím, sẽ có 2 sự kiện là KeyDown và KeyUp để bắt KeyCode từ bàn phím. Nếu bạn gõ "A" thì KeyDown ="A" (keycode=65), KeyUp ="A". Nếu bạn bấm phím Shift thì KeyDown = "Shift + "A", KeyUp ="A". Do đó dùng sự kiện KeyDown để bắt phím chức năng (Shift) có bấm không và KeyUp để bắt đúng Keycode của phím. Kết hợp 2 thông số trên tra với bảng "Keycode - Character" để lấy ra ký tự được nhập.
Link file: https://drive.google.com/file/d/1ioGLQaOuQvFIkWEPo7X5mMadFYgzrCaM/view?usp=sharing
-
RE: Sửa lỗi tiếng Việt khi quét Barcode/ QR code
AnNguyen > 14-07-21, 11:35 AM
Chào anh Bảo!
Anh ơi em muốn dùng cái này của anh để sử dụng cho việc gõ mã (không được sử dụng tiếng việt)
nó xảy ra vấn đề như sau: nếu em gõ được chữ "ABC" rồi và em không muốn nữa em sẽ bôi đen và gõ lại chứ "HGJ" thì nó vẫn nhận thêm là "ABCHGJ" anh ạ.
Vậy cần xử lý lại chỗ đoạn code nào anh nhỉ?
Khi bôi đen gõ lại chữ hoặc nhấn Backspace thì nó vẫn ghi giá trị cũ anh ạ.
Em cảm ơn! -
RE: Sửa lỗi tiếng Việt khi quét Barcode/ QR code
AnNguyen > 14-07-21, 04:09 PM
(14-07-21, 12:51 PM)ongke0711 Đã viết:
(14-07-21, 11:35 AM)AnNguyen Đã viết: Anh ơi em muốn dùng cái này của anh để sử dụng cho việc gõ mã (không được sử dụng tiếng việt)
Nhập tay barcode hay chỉ là nhập một mã nào đó?
Em nhập tay anh ạ. các textbox khi tạo mã của em người dùng đều phải nhập tay ̣(em không áp dụng barcode mà chỉ là nhập giá trị vào textbox) -
RE: Sửa lỗi tiếng Việt khi quét Barcode/ QR code
AnNguyen > 14-07-21, 04:47 PM
(14-07-21, 12:51 PM)ongke0711 Đã viết:
(14-07-21, 11:35 AM)AnNguyen Đã viết: Anh ơi em muốn dùng cái này của anh để sử dụng cho việc gõ mã (không được sử dụng tiếng việt)
Nhập tay barcode hay chỉ là nhập một mã nào đó?
Em nhập tay anh ạ. các textbox khi tạo mã của em người dùng đều phải nhập tay ̣(em không áp dụng barcode mà chỉ là nhập giá trị vào textbox) -
RE: Sửa lỗi tiếng Việt khi quét Barcode/ QR code
ongke0711 > 15-07-21, 10:02 PM
(14-07-21, 11:35 AM)AnNguyen Đã viết: Anh ơi em muốn dùng cái này của anh để sử dụng cho việc gõ mã (không được sử dụng tiếng việt)
nó xảy ra vấn đề như sau: nếu em gõ được chữ "ABC" rồi và em không muốn nữa em sẽ bôi đen và gõ lại chứ "HGJ" thì nó vẫn nhận thêm là "ABCHGJ" anh ạ.
Vậy cần xử lý lại chỗ đoạn code nào anh nhỉ?
Khi bôi đen gõ lại chữ hoặc nhấn Backspace thì nó vẫn ghi giá trị cũ anh ạ.
Textbox dùng xử lý không cho bỏ dấu tiếng Việt hiện tại không thể dùng phím Backspace để xoá nhé. Do đó trong code anh vô hiệu hoá phím này.
Nếu muốn xoá hoàn toàn nội dung Textbox thì bấm ESC sẽ xoá. Có thể các bạn lập trình chuyên nghiệp có cách xử lý chứ anh thì bó tay.
Nguyên lý xử lý vô hiệu hoá việc bỏ dấu tiếng Việt là có liên quan đến Keycode = 8 và 231 nó cũng là Keycode của phím Backspace. Các bộ gõ tiếng Việt hiện tại, khi bỏ dấu TV, nó sẽ tự động xoá lui 1 byte rồi chèn byte dấu thanh, khi xoá lui thì keycode =8. Do đó không thể bẫy chỗ keycode = 8 để code xử lý công việc khác ngoại trừ việc dành nó cho xử lý (loại bỏ) dấu thanh.
Tóm lại chỉ có thể xoá toàn bộ bằng phím ESC. -
RE: Sửa lỗi tiếng Việt khi quét Barcode/ QR code
mrsiro > 18-07-21, 12:18 PM
cái này cần can thiệp ở tầng thấp hơn nữa mới được, cách của ongke chỉ mới tầng trên thôi, phải vượt qua cả tầng backspace của unikey. Đang bận quá, hôm nào rãnh mình build ra 1 cái dll cho mọi người dùng. -
RE: Sửa lỗi tiếng Việt khi quét Barcode/ QR code
ongke0711 > 18-07-21, 02:32 PM
(18-07-21, 12:18 PM)mrsiro Đã viết: cái này cần can thiệp ở tầng thấp hơn nữa mới được, cách của ongke chỉ mới tầng trên thôi, phải vượt qua cả tầng backspace của unikey. Đang bận quá, hôm nào rãnh mình build ra 1 cái dll cho mọi người dùng.
Bạn rảnh thì viết cái hook cho mọi người xài trong trường hợp này nhé.