• Không cho gõ tiếng việt có dấu vào textbox
  • RE: Không cho gõ tiếng việt có dấu vào textbox

    ongke0711 > 25-03-21, 11:43 PM

    (25-03-21, 11:05 PM)mrsiro Đã viết: Unikey nó chạy trước cả sự kiện bắt đầu nhấn phím là keydown luôn bạn ơi, không tài nào check được key gì đã ấn

    Sự kiện KeyUp chứ.
    Bên cạnh đó phải tính luôn trường hợp nhập barcode bằng Keyboard (bao gồm gõ bên phần NumLock).
  • RE: Không cho gõ tiếng việt có dấu vào textbox

    mrsiro > 08-04-21, 01:09 AM

    (25-03-21, 11:43 PM)ongke0711 Đã viết: Sự kiện KeyUp chứ.
    Bên cạnh đó phải tính luôn trường hợp nhập barcode bằng Keyboard (bao gồm gõ bên phần NumLock).
    mình có nghiên cứu thử dùng api để bắt sự kiện nhập keycode.
  • 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ì.
  • RE: Không cho gõ tiếng việt có dấu vào textbox

    ongke0711 > 10-04-21, 09:44 AM

    (09-04-21, 11:39 PM)mrsiro Đã viết: Mình làm được rồi các bạn à.

    Thumbs_up Thumbs_up Thumbs_up


    Dùng cách bắt Keycode thì không cần phải tắt bộ gõ tiếng Việt.

    [Hình: scanbarcode.gif]
  • RE: Không cho gõ tiếng việt có dấu vào textbox

    tommy_nguyen > 17-06-21, 06:54 PM

    (09-04-21, 11:39 PM)mrsiro Đã viết: Mình làm được rồi các bạn à.
    Bạn ơi, có thể share mình giải thuật hoặc code được không. Mình đang muốn code như bạn nhưng chưa được.
    Phiền bạn share giúp mình nhé.
    Cảm ơn bạn nhiều