Vấn đề Tiếng Việt trong Listview. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,725
Giới tính
Nam
Tôi đã Google hầu như tất cả các vấn đề liên quan đến Listview, thế nhưng tôi chưa tìm thấy code Tiếng Việt (Unicode) cho Listview, có lẽ tôi vẫn chưa tìm thấy. Có 2 vấn đề như sau:

1) Có code nào viết để ListView hiểu tiếng Việt bằng Unicode không?

2) Nếu phải convert từ kiểu này sang kiểu khác thì có thể đổi từ VNI sang UNI hoặc ngược lại miễn sao thấy được Tiếng Việt (không phải cài đặt gì thêm vì có thể qua code đã khai báo thì máy nào dùng cũng được) hay không?

(Xin lỗi ở đây ít thấy ai xài TCVN lắm ạ nên tôi không dùng, thông thường chỉ 2 loại Font trên thôi ạ mà dần dần sẽ chỉ còn xài UNI).
 
Tôi đã Google hầu như tất cả các vấn đề liên quan đến Listview, thế nhưng tôi chưa tìm thấy code Tiếng Việt (Unicode) cho Listview, có lẽ tôi vẫn chưa tìm thấy. Có 2 vấn đề như sau:

1) Có code nào viết để ListView hiểu tiếng Việt bằng Unicode không?

2) Nếu phải convert từ kiểu này sang kiểu khác thì có thể đổi từ VNI sang UNI hoặc ngược lại miễn sao thấy được Tiếng Việt (không phải cài đặt gì thêm vì có thể qua code đã khai báo thì máy nào dùng cũng được) hay không?

(Xin lỗi ở đây ít thấy ai xài TCVN lắm ạ nên tôi không dùng, thông thường chỉ 2 loại Font trên thôi ạ mà dần dần sẽ chỉ còn xài UNI).


Hiện tại ListView chưa hỗ trợ Unicode còn với VNI thì "vô tư"
 
Upvote 0
Tôi đã Google hầu như tất cả các vấn đề liên quan đến Listview, thế nhưng tôi chưa tìm thấy code Tiếng Việt (Unicode) cho Listview, có lẽ tôi vẫn chưa tìm thấy. Có 2 vấn đề như sau:

1) Có code nào viết để ListView hiểu tiếng Việt bằng Unicode không?

2) Nếu phải convert từ kiểu này sang kiểu khác thì có thể đổi từ VNI sang UNI hoặc ngược lại miễn sao thấy được Tiếng Việt (không phải cài đặt gì thêm vì có thể qua code đã khai báo thì máy nào dùng cũng được) hay không?

(Xin lỗi ở đây ít thấy ai xài TCVN lắm ạ nên tôi không dùng, thông thường chỉ 2 loại Font trên thôi ạ mà dần dần sẽ chỉ còn xài UNI).

1) em nghĩ chắc được mà chưa mò ra +-+-+-+
2) trên diễn đàn này có rồi đó anh http://www.giaiphapexcel.com/forum/showthread.php?t=17279
 
Upvote 0
1) em nghĩ chắc được mà chưa mò ra +-+-+-+
2) trên diễn đàn này có rồi đó anh http://www.giaiphapexcel.com/forum/showthread.php?t=17279

Cám ơn bạn, nhưng topic này tôi đã đọc qua, nó chỉ chuyển đổi từ UNI sang ABC thôi.
Cái mình cần tìm là trong sheet vẫn giữ nguyên chữ UNI, nhưng khi hiển thị, nó tự chuyển thành VNI đó mà! Mình biết nó chạy tốt trên VNI nhưng đầu vào (nhập vào sheet) công ty mình không cho xài VNI nữa.
 
Upvote 0
Cám ơn bạn, nhưng topic này tôi đã đọc qua, nó chỉ chuyển đổi từ UNI sang ABC thôi.
Cái mình cần tìm là trong sheet vẫn giữ nguyên chữ UNI, nhưng khi hiển thị, nó tự chuyển thành VNI đó mà! Mình biết nó chạy tốt trên VNI nhưng đầu vào (nhập vào sheet) công ty mình không cho xài VNI nữa.
Theo tôi, thời buổi này mà còn font ABC với VNI thì khỏi xài sướng hơn (chỉ mình ta với ta thì còn gì là hội nhập) ---> Nếu muốn vươn xa ra biển lớn, hãy quên 2 loại font ấy đi
Nếu ListView đã không hổ trợ Unicode ta tìm cái khác vậy!
 
Upvote 0
Theo tôi, thời buổi này mà còn font ABC với VNI thì khỏi xài sướng hơn (chỉ mình ta với ta thì còn gì là hội nhập) ---> Nếu muốn vươn xa ra biển lớn, hãy quên 2 loại font ấy đi
Nếu ListView đã không hổ trợ Unicode ta tìm cái khác vậy!

Làm cách nào được ạ? Trình độ em không có để thay đổi, trong khi cái ListView quá tiện ích, chẳng lẽ lại nhập chữ không có dấu sao ạ? Thôi thì Thầy có Code biến cái Listview đọc luôn Unicode mà không cần convert thì Thầy tặng cho em luôn đi. Bằng không thì đành "Mượn gió bẽ măng", mượn tạm Font VNI để nhìn vậy (cái này em cũng chưa có luôn mới đi học hỏi chứ).+-+-+-+
 
Upvote 0
Làm cách nào được ạ? Trình độ em không có để thay đổi, trong khi cái ListView quá tiện ích, chẳng lẽ lại nhập chữ không có dấu sao ạ? Thôi thì Thầy có Code biến cái Listview đọc luôn Unicode mà không cần convert thì Thầy tặng cho em luôn đi. Bằng không thì đành "Mượn gió bẽ măng", mượn tạm Font VNI để nhìn vậy (cái này em cũng chưa có luôn mới đi học hỏi chứ).+-+-+-+
Ah... bạn hiểu sai ý tôi rồi!
Ý tôi muốn nói: Nếu listview không hổ trợ Unicode thì bạn bỏ quách nó đi... tìm món khác gần giống với listview nghiên cứu
Tôi không rành lắm về vụ này (hỏi Kiệt thử xem)
Ah... Mà sao bạn không dùng ListBox?
 
Upvote 0
Ah... bạn hiểu sai ý tôi rồi!
Ý tôi muốn nói: Nếu listview không hổ trợ Unicode thì bạn bỏ quách nó đi... tìm món khác gần giống với listview nghiên cứu
Tôi không rành lắm về vụ này (hỏi Kiệt thử xem)
Ah... Mà sao bạn không dùng ListBox?

Dạ, em biết Cadafi rất giỏi về Listview, nhưng em sẽ hỏi Cadafi về những vấn đề khác liên quan đến nó ạ. (Hỏi trọn gói sợ Cadafi bực mình Thầy ui, biết được tí nào hay tí ấy Thầy à).
Em cám ơn Thầy!

P/S: Thầy cho một ví dụ có thể thay thế được không ạ? (như có header, có hàng, có cột, màu nền cho từng row xen kẻ chẳng hạn...)
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ, em biết Cadafi rất giỏi về Listview, nhưng em sẽ hỏi Cadafi về những vấn đề khác liên quan đến nó ạ. (Hỏi trọn gói sợ Cadafi bực mình Thầy ui, biết được tí nào hay tí ấy Thầy à).
Em cám ơn Thầy!

P/S: Thầy cho một ví dụ có thể thay thế được không ạ? (như có header, có hàng, có cột, màu nền cho từng row xen kẻ chẳng hạn...)

Bác thử xem cái này của Tuân xem sao?
 

File đính kèm

Upvote 0
Ah... bạn hiểu sai ý tôi rồi!
Ý tôi muốn nói: Nếu listview không hổ trợ Unicode thì bạn bỏ quách nó đi... tìm món khác gần giống với listview nghiên cứu
Tôi không rành lắm về vụ này (hỏi Kiệt thử xem)
Ah... Mà sao bạn không dùng ListBox?

Em thấy anh ndu96081631 nói đúng sử dụng LB ho tro Uni code em chỉ thấy nó không dep bằng LV thôi.
nếu anh muốn di chuyển chuột trong LB thì anh dùng cái này (code em suu tầm được) và anh có thể kiếm trên mạng để trang trí thêm cho nó đẹp và Pro
PHP:
Option Explicit


Private Declare Function CallWindowProc _
Lib "user32.dll" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
                        ByVal hWnd As Long, _
                        ByVal Msg As Long, _
                        ByVal Wparam As Long, _
                        ByVal Lparam As Long) As Long


Private Declare Function SetWindowLong _
Lib "user32.dll" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
                       ByVal nIndex As Long, _
                       ByVal dwNewLong As Long) As Long


Private Declare Function FindWindow _
Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
                    ByVal lpWindowName As String) As Long


Private Const GWL_WNDPROC = -4
Private Const WM_MOUSEWHEEL = &H20A


Dim collUF As New Collection
Dim collPrevHdl As New Collection
Dim collUFHdl As New Collection


Private Function WindowProc(ByVal Lwnd As Long, _
                           ByVal Lmsg As Long, _
                           ByVal Wparam As Long, _
                           ByVal Lparam As Long) As Long


   Dim Rotation As Long
   Dim Btn As Long


If Lmsg = WM_MOUSEWHEEL Then
Rotation = Wparam / 65536 ''High order word indicates direction
Btn = Abs(Wparam) And 15 ''Low order word indicates various virtual keys held down
MouseWheel collUF(CStr(Lwnd)), Rotation, Btn
WindowProc = 0 ''We handled event, no need to pass on (right?)
Else
WindowProc = CallWindowProc(collPrevHdl(CStr(Lwnd)), _
Lwnd, _
Lmsg, _
Wparam, _
Lparam)
End If

End Function


''Need both userform and its caption because Userform1.Caption is empty for some reason
Sub UserformHook(PassedForm As UserForm, Cap As String)

   Dim LocalHwnd As Long
   Dim LocalPrevWndProc As Long
   Dim ErrCounter As Integer
   Dim Counter As Integer


LocalHwnd = FindWindow("ThunderDFrame", Cap)
LocalPrevWndProc = SetWindowLong(LocalHwnd, GWL_WNDPROC, AddressOf WindowProc)

On Error GoTo DupKey ''In case Windows assigns the same handle to a subsequent userform (altho it doesn't seem to do this)...
TryAgain:
collUF.Add PassedForm, CStr(LocalHwnd)
collPrevHdl.Add LocalPrevWndProc, CStr(LocalHwnd)
collUFHdl.Add LocalHwnd
Exit Sub
DupKey:
If ErrCounter = 0 Then ''Avoid infinite error loop
For Counter = 1 To collUFHdl.Count
If collUFHdl(Counter) = LocalHwnd Then
collUFHdl.Remove Counter
collUF.Remove Counter
collPrevHdl.Remove Counter
End If
Next
ErrCounter = 1
Resume TryAgain
End If

End Sub


''Scrolls listbox 1 row or a full page if Ctrl is down
Sub MouseWheel(UF As UserForm, _
              ByVal Rotation As Long, _
              ByVal Btn As Long)


   Dim LinesToScroll As Integer
   Dim ListRows As Integer
   Dim Idx As Integer


With UF
If TypeName(.ActiveControl) = "ListBox" Then
ListRows = .ActiveControl.ListCount
If Btn = 8 Then ''Ctrl
LinesToScroll = Int(.ActiveControl.Height / 10) ''Seems to work for font size 8
Else
LinesToScroll = 1
End If
If Rotation > 0 Then
'Scroll up
Idx = .ActiveControl.TopIndex - LinesToScroll
If Idx < 0 Then Idx = 0
.ActiveControl.TopIndex = Idx
Else
'Scroll down
Idx = .ActiveControl.TopIndex + LinesToScroll
If Idx > ListRows Then Idx = ListRows
.ActiveControl.TopIndex = Idx
End If
End If
End With

End Sub
trong user form
PHP:
   UserformHook Me, Me.Caption
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bạn, nhưng topic này tôi đã đọc qua, nó chỉ chuyển đổi từ UNI sang ABC thôi.
Cái mình cần tìm là trong sheet vẫn giữ nguyên chữ UNI, nhưng khi hiển thị, nó tự chuyển thành VNI đó mà! Mình biết nó chạy tốt trên VNI nhưng đầu vào (nhập vào sheet) công ty mình không cho xài VNI nữa.

Cái này trong diễn đàn mình có nhiều mà anh UNI sang ABC, UNI sang VNI anh chỉ cần sửa lại tên cho phù hợp thôi
 
Upvote 0
Em thấy anh ndu96081631 nói đúng sử dụng LB ho tro Uni code em chỉ thấy nó không dep bằng LV thôi.
nếu anh muốn di chuyển chuột trong LB thì anh dùng cái này (code em suu tầm được) và anh có thể kiếm trên mạng để trang trí thêm cho nó đẹp và Pro

Chào Chị Thuyyeu99, em nhìn cái code của Chị mà không biết gì cả, Chị làm ơn post cho em cái file có chứa code của Chị được không ạ? Cám ơn rất nhiều ạ!
 
Upvote 0
Các bạn nghiên cứu bộ Unicode Full Controls của tác giả Dương Quốc Hưng xem sao (ocx). Tải ở dưới nhé.
 

File đính kèm

Upvote 0
Ah... bạn hiểu sai ý tôi rồi!
Ý tôi muốn nói: Nếu listview không hổ trợ Unicode thì bạn bỏ quách nó đi... tìm món khác gần giống với listview nghiên cứu
Tôi không rành lắm về vụ này (hỏi Kiệt thử xem)
Ah... Mà sao bạn không dùng ListBox?

Listbox đâu có Gridlines đâu anh...
 
Upvote 0
Listbox đâu có Gridlines đâu anh...
Nếu nói không có thì ListBox so với ListView không có nhiều thứ lắm, nhưng cái mà ListView không có là không có sẳn trong bộ office, không có unicode, không thể gán trực tiếp List bằng mảng v.v...
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom