Chuyên đề: Tiếng Việt Unicode trong lập trình Visual Basic 6.0

Thảo luận trong 'Lập trình' bắt đầu bởi bboy_nonoyes, 20 Tháng 7 2012.

  1. (Lượt xem: 16,751)

    GIỚI THIỆU CHUYÊN ĐỀ

    Visual Basic 6.0 là gì?

    Visual Basic 6.0 (VB6) là một ngôn ngữ lập trình bậc cao trên nền tảng hệ điều hành Windows. VB6 cung cấp cho bạn một bộ công cụ hoàn chỉnh để đơn giản hóa việc triển khai lập trình ứng dụng trên Windows.
    - Phần "Visual" đề cập đến phương pháp được sử dụng để tạo giao diện đồ họa người dùng (Graphical User Interface hay viết tắt là GUI). Nếu bạn đã từng sử dụng chương trình vẽ chẳng hạn như Paint thì bạn đã có sẵn các kỹ năng cần thiết để tạo một GUI cho VB6.
    - Phần "Basic" đề cập đến ngôn ngữ BASIC (Beginners All-Purpose Symbolic Instruction Code), một ngôn ngữ lập trình đơn giản, dễ học, được chế ra cho các khoa học gia dùng (những người không có thì giờ để học lập trình điện toán).

    Visual Basic đã được ra từ MSBasic, do Bill Gates viết từ thời dùng cho máy tính 8 bits 8080 hay Z80. Hiện nay nó chứa đến hàng ngàn câu lệnh (commands), hàm (functions) và từ khóa (keywords). Rất nhiều commands, functions liên hệ trực tiếp đến MSWindows GUI. Những người mới bắt đầu có thể viết chương trình bằng cách học chỉ một vài commands, functions và keywords. Khả năng của ngôn ngữ này cho phép những người chuyên nghiệp hoàn thành bất kỳ điều gì nhờ sử dụng ngôn ngữ lập trình MSWindows nào khác.

    Visual Basic còn có hai dạng khác: Visual Basic for Application (VBA) và VBScript. VBA là ngôn ngữ nằm phía sau các chương trình Word, Excel, MSAccess, MSProject, .v.v.. còn gọi là Macros. Dùng VBA trong MSOffice, ta có thể làm tăng chức năng bằng cách tự động hóa các chương trình. VBScript được dùng trên hệ điều hành Windows & cho ứng dụng Web.

    Dù cho mục đích của bạn là tạo một tiện ích nhỏ cho riêng bạn, trong một nhóm làm việc của bạn, trong một công ty lớn, hay cần phân bố chương trình ứng dụng rộng rãi trên thế giới qua Internet, VB6 cũng sẽ có các công cụ lập trình mà bạn cần thiết.

    Trong giao diện GUI, VB6 hỗ trợ hầu hết các bảng mã, tức là bạn có thể dễ dàng sử dụng các bảng mã khác nhau cho các đối tượng trên VB6. Tuy nhiên, VB6 vẫn chưa hỗ trợ bảng mã Unicode hoàn chỉnh. Chính vì thế, việc sử dụng Unicode trong lập trình VB6 còn gặp nhiều khó khăn mà thực tế hơn cả là khó khăn trong việc nhập xuất tiếng Việt Unicode trong VB6.

    Đến với chuyên đề này, tôi sẽ mang đến cho các bạn những giải pháp để có thể sử dụng tiếng Việt Unicode hiệu quả trong VB6.

    Nguyễn Như Ý thực hiện

    SỬ DỤNG TIẾNG VIỆT TRONG VISUAL BASIC 6.0

    Có 2 trường hợp sử dụng tiếng Việt khác nhau trong Visual Basic 6.0:
    1. Sử dụng bảng mã tiếng Việt khác Unicode:
    Nếu bạn dùng bảng mã tiếng Việt khác bảng mã Unicode (VNI, BK, TCVN, Vietware...) thì việc hiển thị chuỗi tiếng Việt trong các phần tử giao diện như hộp thoại, menu... gồm các bước thao tác điển hình như sau:
    - Cài các font chữ hỗ trợ bảng mã tiếng Việt mà bạn dự định dùng vào Windows, thiết lập font chữ cho các đối tượng giao diện về font chữ hỗ trợ bảng mã của bạn (VD: Bạn dùng bảng mã VNI thì bạn có thể thiết lập font cho đối tượng giao diện là VNI-Times, VNI-Tekon…). Bạn có thể tự động hóa việc thiết lập sơ đồ font chữ cho các đối tượng giao diện bằng đoạn code trong ứng dụng của bạn.
    - Cài đặt và chạy tiện ích gõ phím tiếng Việt hỗ trợ nhập chuỗi tiếng Việt theo bảng mã mà bạn dự định dùng (VD: Thiết lập bảng mã VNI Windows trong Unikey nếu bạn dùng bảng mã VNI cho các đối tượng giao diện trong VB6).
    - Thiết kế từng đối tượng giao diện cần dùng cho ứng dụng (menu, toolbar, dialog...). Khi tạo mới đối tượng giao diện nào có thuộc tính font chữ thì hãy thiết lập lại thuộc tính này về font chữ hỗ trợ bảng mã tiếng Việt của bạn. Bạn sẽ thấy trực quan các chuỗi tiếng Việt khi chúng mới được nhập vào tại thời điểm thiết kế trực quan. Khi ứng dụng chạy, chúng cũng sẽ được hiển thị đúng y như lúc thiết kế.

    (Cách này có thể áp dụng cho các ngôn ngữ lập trình trên Windows GUI khác như: Delphi, Foxpro, VC++, AutoIT…)

    2. Sử dụng bảng mã tiếng Việt Unicode:
    Nếu bạn dùng bảng mã tiếng Việt Unicode (mỗi ký tự chiếm 2 byte ô nhớ) thì việc hiển thị chuỗi tiếng Việt trong các phần tử giao diện như hộp thoại, menu... sẽ khó khăn hơn. Lý do là môi trường thiết kế của VB6 chưa hỗ trợ việc nhập và hiển thị chuỗi văn bản tiếng Việt Unicode (mặc dù ngôn ngữ VB.NET thì hỗ trợ do có sẵn trong .NET Framework). Chuyên đề này sẽ tập trung vào trường hợp sử dụng bảng mã tiếng Việt Unicode.
    Bạn có thể sử dụng tiếng Việt Unicode trong VB6 với những cách sau:
    Cách 1:
    Dùng Microsoft Form 2.0 Object Library để xây dựng nền tảng Unicode cho chương trình (Bạn có thể viết Modules hỗ trợ sử dụng thư viện này dễ dàng hơn).
    Cách 2:
    Viết Modules chuyển đổi bảng mã khác sang bảng mã Unicode.
    Cách 3:
    Sử dụng các ActiveX Control được viết sẵn hỗ trợ Unicode (Là chương trình tổng hợp các module được biên dịch thành thư viện động *.dll hoặc dạng component *.ocx).

    Ngoài 3 cách trên còn nhiều cách khác không được đề cập sâu vì chỉ sử dụng font Unicode chứ không sử dụng bảng mã Unicode. Ví dụ: Sử dụng các bảng mã: Unicode tổ hợp, Vietnamese locale CP 1258, UTF-8 và viết Modules khai báo các hàm giả lập hệ thống sử dụng Font tiếng Việt khác khi chạy chương trình & trả về ban đầu khi đóng chương trình.

    Quy trình xây dựng giao diện hiển thị đúng chuỗi tiếng Việt Unicode gồm các bước thao tác điển hình như sau:
    • Windows đã có sẵn một ít font chữ hỗ trợ được bảng mã tiếng Việt Unicode như Arial, Times New Roman, Tahoma... Ở chế độ mặc định, bản thân Windows XP đã dùng các font chữ hỗ trợ mã Unicode tiếng Việt, tuy nhiên nếu muốn thiết lập lại các font chữ của bạn, bạn hãy thiết lập font chữ cho các đối tượng giao diện về font chữ hỗ trợ mã Unicode. Lưu ý bạn có thể tự động hóa việc thiết lập sơ đồ font chữ cho các đối tượng giao diện bằng đoạn code trong ứng dụng của bạn.
    • Cài đặt và chạy tiện ích gõ phím tiếng Việt hỗ trợ nhập chuỗi tiếng Việt Unicode. (VD: Trong Unikey bạn thiết lập bảng mã Unicode, UTF-8 Literal, X UTF-8, Vietnamese Locale 1258…).
    • Mở lại/tạo mới Project VB6 chứa ứng dụng của bạn, thiết kế từng đối tượng giao diện cần dùng cho ứng dụng (menu, toolbar, dialog...). Khi tạo mới đối tượng giao diện nào có thuộc tính font chữ thì hãy thiết lập lại thuộc tính này về font chữ hỗ trợ mã tiếng Việt Unicode. (Lưu ý: Bạn sẽ không thể nhập/hiển thị trực quan các chuỗi tiếng Việt trong lúc thiết kế hay trong khi viết code trong môi trường VB6.
    • Thêm vào chương trình Module hoặc User Control hỗ trợ tiếng Việt Unicode (Có đính kèm theo trong nội dung) và sử dụng chúng để hiển thị tiếng Việt Unicode trên các đối tượng sau khi biên dịch.

    MINH HỌA SỬ DỤNG TIẾNG VIỆT UNICODE TRONG VISUAL BASIC 6.0

    1. Dùng Microsoft Form 2.0 Object Library để xây dựng nền tảng Unicode cho chương trình:
    Tạo Project mới, thêm vào Components Microsoft Windows Forms 2.0 Object Library bằng cách chọn menu Projects => Components => Chọn Microsoft Windows Forms 2.0 Object Library => Apply => OK.
    [IMG]

    Tại màn hình thiết kế chọn đối tượng thuộc Components Microsoft Windows Forms 2.0 Object Library vừa thêm vào như Label, CommandButton… để sử dụng.
    [IMG]

    Tại màn hình View Code bạn Viết code để chuyển mã Unicode cho các đối tượng. Code có dạng TênĐốiTượng.Caption = CharW$(“&H<Mã Unicode>”.
    Bạn có thể tra mã Unicode bằng cách vào Start => Run => CharMap => Chọn kí tự cần tra, bạn sẽ thấy mã của chữ này ở góc dưới bên trái cửa sổ có dạng U+xxxx, bạn chỉ cần lấy 4 kí tự cuối xxxx, bạn có thể bỏ số 0 ở kí tự 1,2 nếu có.
    Code được đặt trong Form_Load()
    [IMG]
    Nhấn F5 để chạy thử chương trình
    [IMG]

    Tra cứu mã Unicode tiếng Việt với CharMap của Windows rất khó khăn. Vì vậy, để việc tra cứu mã Unicode thuận lợi hơn tôi có viết một chương trình hỗ trợ tra cứu mã Unicode đơn giản. Với chương trình này bạn thao tác các bước như trên nhưng bạn cần khai báo trong Form hàm sau:
    PHP:
    Function UnicodeChar(UniCharCode As String) As String
    Dim str
    Dim desStr 
    As String
    Dim i
    If Mid(UniCharCode11) = ";" Then
        UniCharCode 
    Mid(UniCharCode2)
    End If
    If 
    Right(UniCharCode1) = ";" Then
        UniCharCode 
    Mid(UniCharCode1Len(UniCharCode) - 1)
    End If
    str UniCharCode
    str 
    Split(str";")
    For 
    LBound(strTo UBound(str)
        
    desStr desStr ChrW$("&H" str(i))
    Next
        UnicodeChar 
    desStr
    End 
    Function
    Với các đối tượng bạn chỉ việc thay tất cả các hàm CharW$(“”) bằng hàm UnicodeChar("Toàn bộ đoạn mã Unicode từ chương trình.")
    VD: Label1.Caption = UnicodeChar (“;43;1EA3;6D;A0;1A1;6E”)
    Chương trình có đầy đủ hướng dẫn.
    [IMG]

    [IMG]

    Lưu ý:
    * Cách trên là nền tảng cho tất cả các phương pháp khác.
    * Với cách này bạn không thể trực tiếp tạo Caption bằng các đối tượng của MS Form 2.0 Object Library.
    Sau đây là 1 đoạn code nhỏ thêm vào để hỗ trợ Unicode cho Caption. Tôi sẽ sử dụng hàm thư viện có sẵn “DefWindowProcW”:

    PHP:
    'Khai báo trong Form
    Private Declare Function DefWindowProcW Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    '
    Đặt đoạn code đã khai báo của chương trình Bboy Unichar Generator vào đây.
    Public 
    Sub UniCaption(UniText As String)
    DefWindowProcW hwnd, &HC, &H0&, StrPtr(UniText)
    End Sub
    Để nhập tiếng Việt cho Caption bạn đặt vào Form_load() hàm sau:
    PHP:
    UniCaption UnicodeChar("<Tiêu đề tìm từ chương trình Bboy Unicode Generator>")
    VD:
    PHP:
    UniCaption UnicodeChar(";43;1EA3;6D;A0;1A1;6E"'Cảm ơn
    2. Viết Modules chuyển đổi bảng mã khác sang bảng mã Unicode:
    Tôi sẽ làm mẫu cho các bạn xem cách chuyển đổi bảng mã UTF-8 sang Unicode cho Label không cần sử dụng Microsoft Form 2.0 Object Library.

    Tạo Project mới, thêm vào User Control mới, đặt tên là: unilabel..
    [IMG]

    [IMG]

    View code User Control vừa tạo, nhập vào đoạn code sau:
    PHP:
    'User Control hỗ trợ tiếng Việt Unicode trong VB6
    '
    Chuyên đề I năm 2010-2011 CLB Tin Học Bạc Liêu
    'Thực hiện: Nguyễn Như Ý
     
    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
     
    Private Declare Function DrawTextW Lib "User32" (ByVal hdc As Long, ByVal lpStr As Long, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
     
    '
    Default Property Values:
    Const 
    m_def_Caption "UniLabel"
    'Property Variables:
    Dim m_Caption As String
    '
    Event Declarations:
    Event Click() 'MappingInfo=UserControl,UserControl,-1,Click
    Event DblClick()
    '
    MappingInfo=UserControl,UserControl,-1,DblClick
    Event KeyDown
    (KeyCode As IntegerShift As Integer'MappingInfo=UserControl,UserControl,-1,KeyDown
    Event KeyPress(KeyAscii As Integer) '
    MappingInfo=UserControl,UserControl,-1,KeyPress
    Event KeyUp
    (KeyCode As IntegerShift As Integer'MappingInfo=UserControl,UserControl,-1,KeyUp
    Event MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) '
    MappingInfo=UserControl,UserControl,-1,MouseDown
    Event MouseMove
    (Button As IntegerShift As IntegerAs SingleAs Single'MappingInfo=UserControl,UserControl,-1,MouseMove
    Event MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) '
    MappingInfo=UserControl,UserControl,-1,MouseUp
     
    Private Sub DrawStatic()
        
    Dim mRC As RECT
        Cls
        With mRC
            
    .Left 0
            
    .Top 0
            
    .Right ScaleWidth
            
    .Bottom ScaleHeight
        End With
        DrawTextW hdc
    StrPtr(m_Caption), -1mRC, &H0 Or &H10 Or &H2000
    End Sub
     
    'MappingInfo=UserControl,UserControl,-1,BackColor
    Public Property Get BackColor() As OLE_COLOR
        BackColor = UserControl.BackColor
    End Property
     
    Public Property Let BackColor(ByVal New_BackColor As OLE_COLOR)
        UserControl.BackColor() = New_BackColor
        PropertyChanged "BackColor"
    End Property
     
    '
    MappingInfo=UserControl,UserControl,-1,ForeColor
    Public Property Get ForeColor() As OLE_COLOR
        ForeColor 
    UserControl.ForeColor
    End Property
     
    Public Property Let ForeColor(ByVal New_ForeColor As OLE_COLOR)
        
    UserControl.ForeColor() = New_ForeColor
        PropertyChanged 
    "ForeColor"
    End Property
     
    'MappingInfo=UserControl,UserControl,-1,Enabled
    Public Property Get Enabled() As Boolean
        Enabled = UserControl.Enabled
    End Property
     
    Public Property Let Enabled(ByVal New_Enabled As Boolean)
        UserControl.Enabled() = New_Enabled
        PropertyChanged "Enabled"
    End Property
     
    '
    MappingInfo=UserControl,UserControl,-1,Font
    Public Property Get Font() As Font
        Set Font 
    UserControl.Font
    End Property
     
    Public Property Set Font(ByVal New_Font As Font)
        
    Set UserControl.Font New_Font
        PropertyChanged 
    "Font"
    End Property
     
    'MappingInfo=UserControl,UserControl,-1,BackStyle
    Public Property Get BackStyle() As Integer
        BackStyle = UserControl.BackStyle
    End Property
     
    Public Property Let BackStyle(ByVal New_BackStyle As Integer)
        UserControl.BackStyle() = New_BackStyle
        PropertyChanged "BackStyle"
    End Property
     
    '
    MappingInfo=UserControl,UserControl,-1,BorderStyle
    Public Property Get BorderStyle() As Integer
        BorderStyle 
    UserControl.BorderStyle
    End Property
     
    Public Property Let BorderStyle(ByVal New_BorderStyle As Integer)
        
    UserControl.BorderStyle() = New_BorderStyle
        PropertyChanged 
    "BorderStyle"
    End Property
     
    'MappingInfo=UserControl,UserControl,-1,Refresh
    Public Sub Refresh()
        UserControl.Refresh
    End Sub
     
    Private Sub UserControl_Click()
        RaiseEvent Click
    End Sub
     
    Private Sub UserControl_DblClick()
        RaiseEvent DblClick
    End Sub
     
    Private Sub UserControl_KeyDown(KeyCode As Integer, Shift As Integer)
        RaiseEvent KeyDown(KeyCode, Shift)
    End Sub
     
    Private Sub UserControl_KeyPress(KeyAscii As Integer)
        RaiseEvent KeyPress(KeyAscii)
    End Sub
     
    Private Sub UserControl_KeyUp(KeyCode As Integer, Shift As Integer)
        RaiseEvent KeyUp(KeyCode, Shift)
    End Sub
     
    Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        RaiseEvent MouseDown(Button, Shift, X, Y)
    End Sub
     
    Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        RaiseEvent MouseMove(Button, Shift, X, Y)
    End Sub
     
    Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        RaiseEvent MouseUp(Button, Shift, X, Y)
    End Sub
     
    '
    MemberInfo=13,0,0,UniLabel
    Public Property Get Caption() As String
        Caption 
    m_Caption
    End Property
     
    Public Property Let Caption(ByVal New_Caption As String)
        
    m_Caption New_Caption
        PropertyChanged 
    "Caption"
    End Property
     
    'Initialize Properties for User Control
    Private Sub UserControl_InitProperties()
        Set UserControl.Font = Ambient.Font
        m_Caption = m_def_Caption
    End Sub
     
    '
    Load property values from storage
    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
     
        
    UserControl.BackColor PropBag.ReadProperty("BackColor", &H8000000F)
        
    UserControl.ForeColor PropBag.ReadProperty("ForeColor", &H80000012)
        
    UserControl.Enabled PropBag.ReadProperty("Enabled"True)
        
    Set UserControl.Font PropBag.ReadProperty("Font"Ambient.Font)
        
    UserControl.BackStyle PropBag.ReadProperty("BackStyle"1)
        
    UserControl.BorderStyle PropBag.ReadProperty("BorderStyle"0)
        
    m_Caption PropBag.ReadProperty("Caption"m_def_Caption)
    End Sub
     
    Private Sub UserControl_Resize()
        
    DrawStatic
    End Sub
     
    Private Sub UserControl_Show()
        
    DrawStatic
    End Sub
     
    'Write property values to storage
    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
     
        Call PropBag.WriteProperty("BackColor", UserControl.BackColor, &H8000000F)
        Call PropBag.WriteProperty("ForeColor", UserControl.ForeColor, &H80000012)
        Call PropBag.WriteProperty("Enabled", UserControl.Enabled, True)
        Call PropBag.WriteProperty("Font", UserControl.Font, Ambient.Font)
        Call PropBag.WriteProperty("BackStyle", UserControl.BackStyle, 1)
        Call PropBag.WriteProperty("BorderStyle", UserControl.BorderStyle, 0)
        Call PropBag.WriteProperty("Caption", m_Caption, m_def_Caption)
    End Sub
     
    ‘Toàn bộ chương trình chuyển mã từ UTF-8 sang mã Unicode
     
    Public Function UTF8ToUnicode(UTF8Str As String) As String
        Dim indexS As Long, UTF8 As Long, U16 As Long, BArrayS() As Byte, lastbyte As Byte
        BArrayS() = UTF8Str
        indexS = LBound(BArrayS)
        On Error Resume Next
        While indexS <= UBound(BArrayS)
            UTF8 = BArrayS(indexS)
            If UTF8 = &HE1 Or UTF8 = &HE2 Then ' 
    3 bytes
                lastbyte 
    Merge(BArrayS(indexS 4), BArrayS(indexS 5))
                
    U16 = (BArrayS(indexS) And &HF) * &H1000 + (BArrayS(indexS 2) And &H3F) * &H40 + (lastbyte And &H3F)
     
                
    UTF8ToUnicode UTF8ToUnicode ChrW(U16)
                
    indexS indexS 6
            
    ElseIf ((UTF8 >= &HC3) And (UTF8 <= &HC6)) Or UTF8 = &HCB Then '2 bytes
                lastbyte = Merge(BArrayS(indexS + 2), BArrayS(indexS + 3))
                U16 = (BArrayS(indexS) And &H1F) * &H40 + (lastbyte And &H3F)
     
                UTF8ToUnicode = UTF8ToUnicode & ChrW(U16)
     
                indexS = indexS + 4
            Else ' 
    1 byte
                UTF8ToUnicode 
    UTF8ToUnicode Chr(UTF8)
                
    indexS indexS 2
            End 
    If
        
    Wend
    End 
    Function
     
    Private Function 
    Merge(ByVal LoByte As ByteByVal HiByte As Byte) As Byte
        
    If HiByte 0 Then
            Merge 
    LoByte
            
    Exit Function
        
    End If
     
        
    Select Case HiByte
            
    Case 32
                Select 
    Case LoByte
                    
    Case 26Merge = &H82
                    
    Case 30Merge = &H84
                    
    Case 38Merge = &H85
                    
    Case 32Merge = &H86
                    
    Case 33Merge = &H87
                    
    Case 48Merge = &H89
                    
    Case 57Merge = &H8B
                    
    Case 24Merge = &H91
                    
    Case 25Merge = &H92
                    
    Case 28Merge = &H93
                    
    Case 29Merge = &H94
                    
    Case 34Merge = &H95
                    
    Case 19Merge = &H96
                    
    Case 20Merge = &H97
                    
    Case 58Merge = &H9B
                End Select
            
    Case 33
                Select 
    Case LoByte
                    
    Case 34Merge = &H99
                End Select
            
    Case 1
                Select 
    Case LoByte
                    
    Case 146Merge = &H83
                    
    Case 96Merge = &H8A
                    
    Case 82Merge = &H8C
                    
    Case 125Merge = &H8E
                    
    Case 97Merge = &H9A
                    
    Case 83Merge = &H9C
                    
    Case 126Merge = &H9E
                    
    Case 120Merge = &H9F
                End Select
            
    Case 2
                Select 
    Case LoByte
                    
    Case 198Merge = &H88
                    
    Case 220Merge = &H98
                End Select
        End Select
    End 
    Function
    Tạo 1 Label mới:
    Đặt vào Form_Load():
    PHP:
    “uni”+TênLabel.Caption “uni”+TênLabel.UTF8ToUnicode(“Tiếng Việt mã UTF-8”)
    VD:
    PHP:
    uniLabel1.Caption uniLabel1.UTF8ToUnicode(“Tiếng Việt mã UTF-8”)
    [IMG]

    Nhấn F5 chạy thử chương trình.

    3. Sử dụng các ActiveX Control
    Bạn cần cài đặt vào hệ thống các ActiveX Controls trước khi bắt đầu. Bạn có thể tìm kiếm các ActiveX Controls cần thiết trên mạng.
    Thêm ActiveX Control vào chương trình của bạn giống như thêm Components Micorsoft Forms 2.0 Object Library đã hướng dẫn ở trên.
    Ở đây tôi thêm vào ActiveX Unicode Full Controls của tác giả Dương Quốc Hưng.
    [IMG]

    Sau khi thêm ActiveX này vào thanh công cụ của bạn sẽ như sau:
    [IMG]

    Để sử dụng bạn chỉ việc chọn control và chọn Custom ở mục thuộc tính.
    [IMG]

    Ở cửa sổ hiện ra bạn chỉ việc gõ vào textbox Insert Unicode nội dung tiếng Việt Unicode cần hiển thị & Insert UniToolTipText để hiện Tips.
    [IMG]

    Sau khi hoàn tất nhấn OK
    [IMG]

    Bạn có thể tự tìm hiểu thêm các chức năng của Unicode Full Controls cũng như các ActiveX Controls khác.

    Các mã nguồn & chương trình demo được đính kèm cùng bài viết, các bạn có thể download về để test.

    Chuyên đề của mình đến đây là hết, cảm ơn các bạn đã quan tâm theo dõi!
    Chúc bạn thành công!

    P/s: Chuyên đề này mình thực hiện & trình bày tại CLB Tin học Bạc Liêu năm 2010. Mục đích chủ yếu là để các bạn hiểu rõ cơ bản về Unicode trong Visual Basic 6.0 nói riêng và trên nền tảng Windows Microsoft nói chung.
    Mọi vấn đề hay thắc mắc các bạn vui lòng post tại đây nhé! :)
    Trân trọng!

    Các file đính kèm:

    BácSỹTôm and tuech like this.
  2. Facebook comment - Chuyên đề: Tiếng Việt Unicode trong lập trình Visual Basic 6.0

Chia sẻ trang này