-
RE: Không cho gõ tiếng việt có dấu vào textbox
ongke0711 > 25-03-21, 11:43 PM
-
RE: Không cho gõ tiếng việt có dấu vào textbox
ledangvan > 08-04-21, 10:17 AM
(24-03-21, 05:53 PM)mrsiro Đã viết: Chào mọi người, mình đang tìm giải pháp cho việc cấm người dùng gõ tiếng việt có dấu vào ô textbox. Đa số các giải pháp mình tìm được đều là không cho gõ khi phát hiện đó là tiếng việt có dấu. Ví dụ: Ô textbox đang có dữ liệu là CA gõ tiếp phím F thì không cho phép, nhưng điều mình cần là vẫn hiển thị chữ F, khi đó dữ liệu ô textbox sẽ là CAF.
Mình đang áp dụng việc này vào nghiệp vụ scan mã vạch. Khi mình scan 1 mặt hàng ví dụ CAFE, thì scan nó ra CÀE (telex), hoặc mặt hàng là A1BC thì nó lại thành ÁBC (vni), người dùng phải tắt unikey đi rất là bất tiện và không chuyên nghiệp.
Ai có giải pháp thì giúp mình nhé.
Theo tôi bạn thay vì cấm người ta thì bạn tạo cho tôi thêm một TextBox1 để cho người ta gõ (Gõ thoải mái bằng tiếng việt có dấu hoặc không dấu) Còn cái Textbox mà bạn cần lấy kết quả thì sẽ lấy từ Textbox1 nhưng bỏ dấu đi (Có hàm bỏ dấu tiếng việt)
Còn một cách nữa : Vì Vietkey có 2 cái định nghĩa để tắt bật viết tiếng việt bằng phím tắt : Alt + Z hoặc Ctrl + Shift nên thay vì phải viết code bạn có thể bảo người dùng dùng 2 phím tắt này để gõ.
Cách nữa là bạn tạo ở thủ tục On Got Focus -> Bạn thêm code để nó chạy phím Alt + Z để nó tắt viết chữ Việt đi (Cái này tôi chưa thử) -
RE: Không cho gõ tiếng việt có dấu vào textbox
ongke0711 > 08-04-21, 11:56 AM
(08-04-21, 10:17 AM)ledangvan Đã viết: Theo tôi bạn thay vì cấm người ta thì bạn tạo cho tôi thêm một TextBox1 để cho người ta gõ (Gõ thoải mái bằng tiếng việt có dấu hoặc không dấu) Còn cái Textbox mà bạn cần lấy kết quả thì sẽ lấy từ Textbox1 nhưng bỏ dấu đi (Có hàm bỏ dấu tiếng việt)
Còn một cách nữa : Vì Vietkey có 2 cái định nghĩa để tắt bật viết tiếng việt bằng phím tắt : Alt + Z hoặc Ctrl + Shift nên thay vì phải viết code bạn có thể bảo người dùng dùng 2 phím tắt này để gõ.
Cách nữa là bạn tạo ở thủ tục On Got Focus -> Bạn thêm code để nó chạy phím Alt + Z để nó tắt viết chữ Việt đi (Cái này tôi chưa thử)
Vấn đề này nó khác anh ledangvan.
Đề nghị bạn mrsỉo sửa lại cái tiêu đề cho nó sát với vấn đề bạn khỏi để người khác khỏi hiểu lầm.
Vấn đề ở đây là việc quét Barcode bị lỗi: xuất hiện dấu tiếng Việt sau khi quét mã.
Ví dụ:
- Barcode "HUFNG", "HUNGF" --> Sau khi quét sẽ biến thành "HÙNG" nếu máy tính đang cài bộ gõ TV và ở chế độ gõ Telex, nếu ở chế độ gõ VNI thì không sao.
- Nhưng ngược lại nếu máy tính đang ở gõ VNI thì khi quét barcode có các ký tự sau sẽ bị sai: "HU2NG", "HUNG2" --> sẽ biến thành "HÙNG"
Do đó 1 cách làm thủ công là người ta đóng bộ gõ tiếng Việt hoặc chuyển qua tiếng Anh trước khi quét barcode (có thể dùng code VBA để tắt mở bộ gõ TV) nhưng cách này gây phiền phức khi cần gõ tên tiếng Việt ngay sau đó -> lại phải bật bộ gõ lại, cứ mỗi lần quét là tắt/bật.
Cách em đề xuất ở trên là bắt Keycode ngay khi máy quét, quét mã, bỏ các Keycode không cần thiết, tra với bảng mã ASCII lưu vào biến trước khi gán xuống Textbox trên Form thì sẽ không bị máy tính tài lanh bỏ dấu TV. -
RE: Không cho gõ tiếng việt có dấu vào textbox
tranthanhan1962 > 09-04-21, 07:41 AM
Có một cách đơn giản hơn: Tắt vietkey hoăc unikey khi mở ứng dụng và mở lại khi tắt ứng dụng. -
RE: Không cho gõ tiếng việt có dấu vào textbox
tranthanhan1962 > 09-04-21, 10:31 PM
Code VBA tắt mở một chương trình. Do không biết người sử dụng cài chương trình nào Unikey hay Vietkey nên tôi giới thiệu code chung để tùy trường hợp xử lý.
Ví dụ Với chương trình có tên program. Để biết đúng tên chương trình muốn tắt. Mở Task Manager kiểm tra. Ta sẽ thấy trên tab Processes của Task Manager có tên là program.exe thì code như sau:
Public Sub CloseProgram()
Dim oServ As Object
Dim cProc As Variant
Dim oProc As Object
Set oServ = GetObject("winmgmts:")
Set cProc = oServ.ExecQuery("Select * from Win32_Process")
For Each oProc In cProc
If oProc.Name = "program.exe" Then oProc.Terminate
Next
End Sub
Muốn mở lại chương trình, cần phải chỉ định đúng đường dẫn tập tin khởi động chương trình. Ví dụ đường dẫn là :C:\Program Files\PROGRAM\program.exe
Public Sub OpenProgram()
Dim fso As Object
Dim sfile As String
Set fso = CreateObject("shell.application")
sfile = "C:\Program Files\PROGRAM\program.exe"
fso.Open (sfile)
End Sub
Khi mở giao diện nhập Textbox không dấu. Đưa code CloseProgram (Thay thế program.exe bằng UniKeyNT.exe) vào event Private Sub Form_Load() để tắt Unikey và khi đóng giao diện thì đưa code OpenProgram() vào event Private Sub Form_Unload(Cancel As Integer) để mở lại Unikey đánh chữ có dấu. Vậy là xong -
RE: Không cho gõ tiếng việt có dấu vào textbox
mrsiro > 09-04-21, 11:39 PM
Mình làm được rồi các bạn à.
-
RE: Không cho gõ tiếng việt có dấu vào textbox
ongke0711 > 10-04-21, 09:42 AM
(09-04-21, 10:31 PM)tranthanhan1962 Đã viết: Code VBA tắt mở một chương trình. Do không biết người sử dụng cài chương trình nào Unikey hay Vietkey nên tôi giới thiệu code chung để tùy trường hợp xử lý.
Nếu dùng phương pháp này anh phải thêm code để xác định máy đang dùng bộ gõ nào và tìm đường dẫn lưu chương trình của bộ gõ đó rồi mới chạy cái code tắt/mở được vì mỗi máy mỗi khác, tuỳ người dùng thích dùng bộ gõ gì.