Đánh giá chủ đề:
  • 5 Votes - 4 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Msgbox dùng Unicode Tiếng việt
#11
Bạn Noname ơi post lại cho anh tham khảo với. Link không download được
Chữ ký của khaccuong Xin chào, mình là khaccuong, Tham gia http://thuthuataccess.com/forum từ ngày 20-04 -11.
Reply
Những người đã cảm ơn
#12
Bác NoName ơi !
Tôi đã áp dụng Msgbox tiếng Việt của Bác chạy rất OK. Nhưng hiện nay không biết khai báo lỗi hay con Vi cái Rus nó cắn cai gì của máy mà ko hiển thị trọn vẹn Tiếng Việt trong msgbox được. Một số chữ thì OK, một số chữ thì No OK như: Các chữ đ, ợ ... không hiển thị được.

Bác Noname hay các Pro nào gặp trường hợp này chỉ giúp tmtien cách khắc phục với !
Cảm ơn nhiều !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#13
(11-05-13, 12:40 PM)tmtien261 Đã viết: Bác NoName ơi !
Tôi đã áp dụng Msgbox tiếng Việt của Bác chạy rất OK. Nhưng hiện nay không biết khai báo lỗi hay con Vi cái Rus nó cắn cai gì của máy mà ko hiển thị trọn vẹn Tiếng Việt trong msgbox được. Một số chữ thì OK, một số chữ thì No OK như: Các chữ đ, ợ ... không hiển thị được.

Bác Noname hay các Pro nào gặp trường hợp này chỉ giúp tmtien cách khắc phục với !
Cảm ơn nhiều !

Theo Bợm nghĩ, có thể khi bạn gõ nội dung Message đã chỉnh Unicode tổ hợp trong bộ gõ rồi, chỉnh sang Unicode dựng sẵn và gõ lại thử xem sao nhé!

Thân!024
ღღღღღTài sản của bomnhauag (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên
#14
(11-05-13, 01:02 PM)bomnhauag Đã viết: Theo Bợm nghĩ, có thể khi bạn gõ nội dung Message đã chỉnh Unicode tổ hợp trong bộ gõ rồi, chỉnh sang Unicode dựng sẵn và gõ lại thử xem sao nhé!

Thân!024

Cảm ơn "bomnhauag" nhiều ! Đúng là bị lỗi font Unicode. Nhưng không phải như bạn nói mà là ngược lại. Tức phải chuyển từ Unicode dựng sẳn ---> Unicode tổ hợp thì Msgbox hiển thị OK.
Ko biết các PC khác thế nào. Nhưng PC của mình là thế !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#15
Đây là một phiên bản hiển thị thông điệp bằng tiếng Việt Unicode.
Cách sử dụng như sau: các bạn thêm vào 1 Module và copy đoạn code sau vào Module. Thông điệp hiển thị được với MSGBOX này có thể viết bằng tiếng việt Unicode thông thường (dựng sẵn hoặc tổ hợp).
Khi sử dụng chỉ cần gọi Msgbox như thông thường. Ngoài ra, các bạn có thể làm 1 bảng chưa các thông điệp, sau đó viết 1 hàm để tải ra thông điệp và truyền cho MsgBox. Khi thiết kế thông điệp, chúng ta tránh viết hẳn trong Code (hardCode) mà nên đặt tên chuỗi ứng với thông điệp rồi dùng 1 hàm để lấy giá trị theo chuỗi đó.
Ví dụ Msgbox MSG("MSG_CANCEL_CONTRACT"),VbCritical
Trong đó MSG("MSG_CANCEL_CONTRACT") sẽ trả về 1 giá trị có trong CSDL để nói về việc hủy hợp đồng chẳng hạn.
Bài này tôi cũng đã chia sẻ bên GiaiphapExcel.com.
Xin chia sẻ cùng các bạn.
Mã PHP:
Option Explicit
 
' Hàm này để lấy tham chiếu  hộp thoại MsgBox của Hệ thống
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Hàm này để thiết lập tiếng việt cho hộp thoại 
Private Declare Function SetDlgItemText Lib "user32" _
    Alias 
"SetDlgItemTextW" _
    
(ByVal hDlg As Long_
     ByVal nIDDlgItem 
As Long_
     ByVal lpString 
As String) As Long
' Hàm này để móc vào hàm hệ thống 
Private Declare Function SetWindowsHookEx Lib "user32" _
    Alias "SetWindowsHookExA" _
    (ByVal idHook As Long, _
     ByVal lpfn As Long, _
     ByVal hmod As Long, _
     ByVal dwThreadId As Long) As Long
Hàm này bỏ chế độ câu móc hàm hệ thống 
Private Declare Function UnhookWindowsHookEx Lib "user32" _
    
(ByVal hHook As Long) As Long
 
' Handle to the Hook procedure
Private hHook As Long
 
Hook type
Private Const WH_CBT 5
Private Const HCBT_ACTIVATE 5
 
' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7

Modify this code for English
Private StrYes As String
Private StrNo As String
Private StrOK As String
Private StrCancel As String

' Application title
Private Const xApp_Title = "SEDP Manager"

Function MsgBox(MessageTxt As String, Optional msgStyle As VbMsgBoxStyle) As VbMsgBoxResult
    Beep
    Dim iVal As VbMsgBoxStyle, msgBoxIcon As MsoAlertIconType, msgButton As MsoAlertButtonType
    iVal = msgStyle
    Select Case msgStyle
    Case 20, 19, 17, 16: ' 
Critical case
        
iVal iVal 16
        msgBoxIcon 
msoAlertIconCritical
    
Case 36353332' Question case
        iVal = iVal - 32
        msgBoxIcon = msoAlertIconQuery
    Case 52, 51, 49, 48: ' 
Exclamation case
        
iVal iVal 48
        msgBoxIcon 
msoAlertIconWarning
    
Case 68676564' Information case
        iVal = iVal - 64
        msgBoxIcon = msoAlertIconInfo
    End Select
  
    Select Case iVal
    Case 4:
        msgButton = msoAlertButtonYesNo
    Case 3:
        msgButton = msoAlertButtonYesNoCancel
    Case 1:
        msgButton = msoAlertButtonOKCancel
    Case 0:
        msgButton = msoAlertButtonOK
    End Select
    ' 
Set Hook
    hHook 
SetWindowsHookEx(WH_CBTAddressOf MsgBoxHookProc0GetCurrentThreadId)
    
' Hien thi thong diep...
    MsgBox = Application.Assistant.DoAlert(App_Title, MessageTxt, msgButton, msgBoxIcon, msoAlertDefaultFirst, msoAlertCancelDefault, True)
End Function
 
Private Function MsgBoxHookProc(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If lMsg = HCBT_ACTIVATE Then
        ' 
Sua cac thong diep tren nut bam (nut YesNoOKCancel....
        
StrYes "&C" ChrW(243)
        
StrNo "&Kh" ChrW(244) & "ng"
        'StrOK = ChrW(272) & ChrW(7891) & "&ng " & ChrW(253)
        StrOK = "Ch" & ChrW(7845) & "p nh" & ChrW(7853) & "&n"
        StrCancel = "&H" & ChrW(7911) & "y"
        '
//// Cau vao he thong de dua gia tri tieng Viet
        
SetDlgItemText wParamIDYESStrConv(StrYesvbUnicode)
        
SetDlgItemText wParamIDNOStrConv(StrNovbUnicode)
        
SetDlgItemText wParamIDCANCELStrConv(StrCancelvbUnicode)
        
SetDlgItemText wParamIDOKStrConv(StrOKvbUnicode)
        
' Release the Hook
        UnhookWindowsHookEx hHook
    End If
    MsgBoxHookProc = False
End Function 
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname , Xuân Thanh , Minh Tiên
#16
Cho mình hỏi mình cần dùng thông báo 3 nút yes no cancel thì làm sao?
ví dụ như

If MsgBox ("ban muon dong va luu lai", vbYesNoCancel, "thong bao") = vbYes Then
DoCmd.Close

vb=No với vb=cancel thì khai như thế nào mọi người?
Chữ ký của changkhoonline77 Xin chào, mình là changkhoonline77, Tham gia http://thuthuataccess.com/forum từ ngày 25-06 -12.
Reply
Những người đã cảm ơn
#17
Chào bạn.
Bạn tạo 1 biến strMsg as string
Gán strMsg = Msgbox...
If strMsg=yes then
...
If strMsg=no then
..
Else
...

Chúc thành công
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#18
để mình thử xem. cám ơn bạn trước
Reply
Những người đã cảm ơn
#19
Còn cách 4 nữa. Thiết kế form mô phỏng kiểu msgbox. Vào dùng table lưu trữ câu thông báo. Như trong clip này. http://youtu.be/3Mn9n5h4Ow8
Chữ ký của hanyoungmine Bí ẩn!
Reply
Những người đã cảm ơn
#20
Lâu lắm không vào "THỦ THUẬT ACCESS" bị xóa nick. Đăng ký lại với tên cũ, không ngờ lại được. Trước đây mình cũng tham gia diễn đàn viết vài bài nhưng chắc mất theo nick rồi. Mình có một cách rất cực đơn giản để viết Mgbox Unicode tương thích với mọi Windows mà không phải dùng hàm nào cả. Các bạn chỉ cần sử dụng hàm Msgbox và cú pháp thông thường của nó. Điều quan trọng là các bạn phải thiết đặt vietnamese keyboard cho Windows để đánh các ký tự Unicode (Nhớ tắt tất cả bộ gõ tiếng Việt khác). Đều kỳ cục là nếu các soạn thảo Unicode trong giao diện viết code của Access Con trỏ sẽ chạy bậy, không đúng vị trí của ký tự đang gõ. Vì vậy các bạn cứ soạn thảo dòng lệnh trên word hay notepad rồi dán vào là chắc ăn. Nếu các bạn sử dụng nhiều Msgbox và lưu biến của hàm trên table, các bạn vẫn sử dụng vietnamese keyboard để soạn thảo để không bị lỗi Font
Đây là đoạn mã mình đã soạn thảo bằng cách này các bạn có thể copy để test. Mình cũng thử copy dán trở lại vẫn chạy tốt. nhưng qua mạng thì không biết như thế nào.
Private Sub Command0_Click()
MsgBox "THỦ THUẬT ACCESS là trang web cực kỳ bổ ích", , "Không lỗi Font Unicode"
End Sub
Cũng bằng cách này ta có thể thiết kế các inputbox Unicode
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Thủ Thuật] [Demo-Phần 2] Tạo khóa bản quyền (Có hạn dùng) maidinhdan 13 396 , 12:01 AM
Bài mới nhất: maidinhdan
  [Thủ Thuật] DeMo dùng ADODB để kết nối dữ liệu Excel và Access Xuân Thanh 3 203 15-08-18, 11:30 PM
Bài mới nhất: NguyenDungAnh
  [Thủ Thuật] Demo_Chọn ngày tháng bằng nút (No Calender Tiếng việt) maidinhdan 8 3,355 09-05-17, 05:27 PM
Bài mới nhất: quocbinh77dilang@gmail.com
  [Thủ Thuật] Hỏi_Xác định phiên bản Access đang dùng maidinhdan 2 1,128 10-03-17, 10:11 AM
Bài mới nhất: vulhu06
  Hàm đọc số dùng mã Unicode trong Access Noname 28 16,690 23-03-16, 11:45 PM
Bài mới nhất: thiennamlong

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line