Tặng các bạn Unicode ListView - chỉ có duy nhất 2 thiết lập mà thôi (7 người xem)

  • Thread starter Thread starter siwtom
  • Ngày gửi Ngày gửi
Liên hệ QC

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

siwtom

Thành viên gắn bó
Tham gia
19/3/08
Bài viết
2,127
Được thích
4,211
Tiêu đề đúng phải là: "ListView cho tiếng Việt"

Hôm nay lang thang tìm thấy chủ đề mà các bạn phàn nàn rằng ListView không hỗ trợ Unicode
http://www.giaiphapexcel.com/forum/showthread.php?59888-Array-Listview-tốc-độ-kinh-hoàng-(-4s-với
-65500-dòng
-)!!!
Mấy năm trước khi lập trình trong Delphi tôi cũng vấp phải vấn đề này. Thực ra lúc đó tôi quan tâm tới
vấn đề "đa ngôn ngữ" trong phần mềm nên có tìm hiểu về việc hiển thị ngôn ngữ không phải là tiếng Anh,
trong đó có tiếng Việt, trong menu, combobox, checkbox, button, treeview, listview, tabcontrol,
RadioButton, ListBox, PageControl, ToolBar v...v. Và tôi đã tìm ra giải pháp hiển thị tiếng Việt trong
nhiều Control trong đó có ListView.
Hóa ra việc giải quyết cực đơn giản. Có 2 bước:
1. Các bạn thả ListView xuống UserForm --> nhấn vào mục "Font" của ListView --> nhấn vào nút "..." ở
cuối --> trong cửa sổ nhẩy ra ở phần "script" (ở phần dưới của cửa sổ) chọn Vietnamese
Hoặc các bạn trong code thử thiết lập cho ListView là Font.Charset là vietnamese
Public Const VIETNAMESE_CHARSET = 163
ListView1.Font.Charset = VIETNAMESE_CHARSET
2. Khi đã thiết lập charset là vietnamese thi ta phải nhập vào ListView dữ liệu đã được code dùng trang
mã Vietnamse Windows-1258
Tôi tặng luôn các bạn hàm chuyển từ unicode (dựng sẵn và tổ hợp) sang Windows-1258. Không có VNI,
VN3 sang 1258 vì quan điểm của tôi là trong thời đại unicode, đa ngôn ngữ, trao đổi dữ liệu toàn cầu thì
chỉ dùng unicode mà thôi. Không biết nhiều người sống ở thời đại nào mà cứ dùng VNI, VN3 để làm khổ
mình, khổ người. Cài phông chữ VNI, VN3 chỉ để xử lý các tài liệu cũ chứ ai đời ở thế kỷ 21 viết tài liệu
mới mà vẫn dùng VNI, VN3, hoặc các phông chữ đặc thù của tiếng Việt???
Tất cả chỉ cần thế thôi, quá đơn giản phải không?
 

File đính kèm

Lần chỉnh sửa cuối:
Hôm nay lang thang tìm thấy chủ đề mà các bạn phàn nàn rằng ListView không hỗ trợ Unicode
http://www.giaiphapexcel.com/forum/showthread.php?59888-Array-Listview-tốc-độ-kinh-hoàng-(-4s-với-65500-dòng-)!!!
Mấy năm trước khi lập trình trong Delphi tôi cũng vấp phải vấn đề này. Thực ra lúc đó tôi quan tâm tới vấn đề "đa ngôn ngữ" trong phần mềm nên có tìm hiểu về việc hiển thị ngôn ngữ không phải là tiếng Anh, trong đó có tiếng Việt, trong menu, combobox, checkbox, button, treeview, listview, tabcontrol, RadioButton, ListBox, PageControl, ToolBar v...v. Và tôi đã tìm ra giải pháp hiển thị tiếng Việt trong nhiều Control trong đó có ListView.
Hóa ra việc giải quyết cực đơn giản. Có 2 bước:

1. Các bạn thả ListView xuống UserForm --> nhấn vào mục "Font" của ListView --> nhấn vào nút "..." ở cuối --> trong cửa sổ nhẩy ra ở phần "script" (ở phần dưới của cửa sổ) chọn Vietnamese
Hoặc các bạn trong code thử thiết lập cho ListView là Font.Charset là vietnamese

2. Khi đã thiết lập charset là vietnamese thi ta phải nhập vào ListView dữ liệu đã được code dùng trang mã Vietnamse Windows-1258

Tôi tặng luôn các bạn hàm chuyển từ unicode (dựng sẵn và tổ hợp) sang Windows-1258. Không có VNI, VN3 sang 1258 vì quan điểm của tôi là trong thời đại unicode, đa ngôn ngữ, trao đổi dữ liệu toàn cầu thì chỉ dùng unicode mà thôi. Không biết nhiều người sống ở thời đại nào mà cứ dùng VNI, VN3 để làm khổ mình, khổ người. Cài phông chữ VNI, VN3 chỉ để xử lý các tài liệu cũ chứ ai đời ở thế kỷ 21 viết tài liệu mới mà vẫn dùng VNI, VN3, hoặc các phông chữ đặc thù của tiếng Việt???
Tất cả chỉ cần thế thôi, quá đơn giản phải không?
Không ngờ nó lại đơn giản thế nhỉ?
Cảm ơn bạn! Đã thử nghiệm trên Win7, Office 2010 thành công
-------------------------
Không biết việc hiển thị tiếng Việt trên Caption của UserForm có đơn giản vậy không ta?
 
Upvote 0
Không ngờ nó lại đơn giản thế nhỉ?
Cảm ơn bạn! Đã thử nghiệm trên Win7, Office 2010 thành công
-------------------------
Không biết việc hiển thị tiếng Việt trên Caption của UserForm có đơn giản vậy không ta?
Tôi không nhớ rõ đã thử Caption chưa nhưng chắc có ...
Font mà bạn có thể thiết lập trong UserForm (hay Form trong Delphi) là thiết lập cho client area, tức toàn
bộ vùng Form mà bạn làm việc, thả các control. Còn thanh tiêu đề cửa sổ thuộc nonclient area. Mọi thiết
lập font cho thanh tiêu đề là thiết lập cho system, nó có hiệu lực trong toàn Windows, trong tất cả các cửa
sổ, còn thiết lập cho UserForm, ListView là thiết lập cho phần mềm của mình mà thôi. Làm thế nào để
thiết lập cho thanh tiêu đề? Thậm chí Charset có muốn cũng không thiết lập được "bằng tay". Phải dùng
code và gọi các hàm: SystemParametersInfo + SPI_GETNONCLIENTMETRICS (đọc thông tin
lfCaptionFont là cấu trúc LOGFONT), sửa cấu trúc LOGFONT (trường lfCharSet, tất nhiên phải thay cả
font sang unicode), SystemParametersInfo + SPI_SETNONCLIENTMETRICS (thiết lập mới)
Nhưng có làm được thì cũng có nghĩa là bắt buộc các cửa sổ khác phải theo, xâm phạm vào quyền
quyết đnh của người dùng. Vậy nếu người dùng muốn thì tự đổi phông chữ hệ thống cho thanh tiêu đề
cửa sổ sang phông chữ unicode (với phông chữ mặc định MS Sans Serif của system thì cũng chả có
script nào khác ngoài Trung Âu). Lúc đó thì đơn giản: chỉ cần gọi hàm DefWindowProcW để thiết lập
Caption cho cửa sổ của mình, vd.:
Mã:
Public Declare Function DefWindowProcW Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, 
ByVal wParam As Long, ByVal lParam As Long) As Long
Function GetWindowHandle(ByVal frm As UserForm) As Long
    If Val(Application.Version) < 9 Then
        GetWindowHandle = FindWindow("ThunderXFrame", frm.caption)  'XL97
    Else
        GetWindowHandle = FindWindow("ThunderDFrame", frm.caption)  'XL2000+
    End If
End Function
DefWindowProcW GetWindowHandle(Me), WM_SETTEXT, 0, _
        StrPtr(ThisWorkbook.Sheets("DATA").Range("A19").Value)
 
Lần chỉnh sửa cuối:
Upvote 0
Hôm nay lang thang tìm thấy chủ đề mà các bạn phàn nàn rằng ListView không
hỗ trợ Unicode
http://www.giaiphapexcel.com/forum/showthread.php?59888-Array-Listview-tốc-độ-kinh-hoàng-(-4s-với
-65500-dòng
-)!!!
Mấy năm trước khi lập trình trong Delphi tôi cũng vấp phải vấn đề này. Thực ra lúc đó tôi quan tâm tới
vấn đề "đa ngôn ngữ" trong phần mềm nên có tìm hiểu về việc hiển thị ngôn ngữ không phải là tiếng Anh,
trong đó có tiếng Việt, trong menu, combobox, checkbox, button, treeview, listview, tabcontrol,
RadioButton, ListBox, PageControl, ToolBar v...v. Và tôi đã tìm ra giải pháp hiển thị tiếng Việt trong
nhiều Control trong đó có ListView.
Hóa ra việc giải quyết cực đơn giản. Có 2 bước:
1. Các bạn thả ListView xuống UserForm --> nhấn vào mục "Font" của ListView --> nhấn vào nút "..." ở
cuối --> trong cửa sổ nhẩy ra ở phần "script" (ở phần dưới của cửa sổ) chọn Vietnamese
Hoặc các bạn trong code thử thiết lập cho ListView là Font.Charset là vietnamese
2. Khi đã thiết lập charset là vietnamese thi ta phải nhập vào ListView dữ liệu đã được code dùng trang
mã Vietnamse Windows-1258
Tôi tặng luôn các bạn hàm chuyển từ unicode (dựng sẵn và tổ hợp) sang Windows-1258. Không có VNI,
VN3 sang 1258 vì quan điểm của tôi là trong thời đại unicode, đa ngôn ngữ, trao đổi dữ liệu toàn cầu thì
chỉ dùng unicode mà thôi. Không biết nhiều người sống ở thời đại nào mà cứ dùng VNI, VN3 để làm khổ
mình, khổ người. Cài phông chữ VNI, VN3 chỉ để xử lý các tài liệu cũ chứ ai đời ở thế kỷ 21 viết tài liệu
mới mà vẫn dùng VNI, VN3, hoặc các phông chữ đặc thù của tiếng Việt???
Tất cả chỉ cần thế thôi, quá đơn giản phải không?
Như nghiên cứu của tôi (các tên Control là của Delphi - có T ở đầu) với 2 động tác như cho ListView thì:
1. Hiển thị đúng cho: TBitBtn, TComboBox, TMemo, TEdit, TStatusBar, TLabel, TGroupBox (Caption),
TRadioGroup (Caption), TSpeedButton, TStringGrid, TDrawGrid, TListView, TTreeView,
THeaderControl, TTabSet, TOutline, THeader.
2. không hiển thị đúng cho: TMainMenu, TPopupMenu, TButton, TCheckBox, TRadioButton, TListBox,
TCheckListBox, TStaticText, TTabbedNotebook, TTabControl, TPageControl, TToolBar.
3. Với TTabControl, TPageControl thì gỡ rối đơn giản: thiết lập OwnerDraw = TRUE rồi tự vẽ chữ
 
Lần chỉnh sửa cuối:
Upvote 0
1. Các bạn thả ListView xuống UserForm --> nhấn vào mục "Font" của ListView --> nhấn vào nút "..." ở cuối --> trong cửa sổ nhẩy ra ở phần "script" (ở phần dưới của cửa sổ) chọn Vietnamese
Hoặc các bạn trong code thử thiết lập cho ListView là Font.Charset là vietnamese

Public Const VIETNAMESE_CHARSET = 163
ListView1.Font.Charset = VIETNAMESE_CHARSET


2. Khi đã thiết lập charset là vietnamese thi ta phải nhập vào ListView dữ liệu đã được code dùng trang mã Vietnamse Windows-1258

Rất cám ơn bạn chia sẽ, tuy nhiên, vì là Unicode tổ hợp nên khi hiển thị trên Listview nó không đẹp là điều thứ nhất, thứ 2 là khi chuyển từ Listview xuống sheet thì font chữ không được như ban đầu, tức là nếu như tôi ghi Hoàng Trọng Nghĩa thì khi chuyển xuống sheet nó trở thành: HoaÌng Troòng NghiÞa. Như vậy nó cũng có gì đó không ổn.

Nó cũng là một dạng convert từ Uni sang Vni khi chuyển xuống cũng phải convert lại chăng?

Xem hình để thấy dấu của Unicod dựng sẳn (sheet) và Unicode tổ hợp (Listview) nó đặt dấu không đúng vị trí từ, và khi nó từ Listview nhập lại sheet nó hiển thị không còn là Unicode nữa!
 

File đính kèm

  • Picture1.jpg
    Picture1.jpg
    73 KB · Đọc: 608
Lần chỉnh sửa cuối:
Upvote 0
Rất cám ơn bạn chia sẽ, tuy nhiên, vì là Unicode tổ hợp nên khi
hiển thị trên Listview nó không đẹp là điều thứ nhất, thứ 2 là khi chuyển từ Listview xuống sheet thì font
chữ không được như ban đầu, tức là nếu như tôi ghi Hoàng Trọng Nghĩa thì khi chuyển xuống sheet nó
trở thành: HoaÌng Troòng NghiÞa. Như vậy nó cũng có gì đó không ổn.
Nó cũng là một dạng convert từ Uni sang Vni khi chuyển xuống cũng phải convert lại chăng?
Xem hình để thấy dấu của Unicod dựng sẳn (sheet) và Unicode tổ hợp (Listview) nó đặt dấu không đúng
vị trí từ, và khi nó từ Listview nhập lại sheet nó hiển thị không còn là Unicode nữa!
Tôi viết: "Khi đã thiết lập charset là vietnamese thi ta phải nhập vào ListView dữ liệu đã được code dùng
trang mã Vietnamse Windows-1258"
Tức ta "nhồi" vào ListView dữ liệu được mã bằng windows-1258.
Khi bạn đọc từ ListView ra thì dĩ nhiên dữ liệu đọc ra cũng là windows-1258. ListView có "biết" làm cái
việc convert đâu? Mà có biết làm (cứ cho là thế) thì nó đâu biết là phải làm mà không phải là để nguyên?
Tóm lại để có dữ liệu unicode thì lại phải convert
Còn chuyện phông chữ thì chúng khác nhau. Bạn cố tình chọn phông chữ xấu rồi lại kêu ca. Tôi luôn dùng
"Arial" hoặc "Time ..." thôi.
Ở ảnh dưới tôi dùng Time ... cho ListView
Mà bạn nghĩ sai rồi đấy. Trong ListView làm gì có unicode. Chỉ có windows-1258 thôi. Mà có code đàng
hoàng, bạn không đọc, không hiểu vd.
Mã:
For c = 1 To 2
                    .SubItems(c) = UniToWindows1258(ActiveSheet.Cells(r, c + 1).Value)
Next
là cái gì đã được "nhồi" vào ListView?
 
Lần chỉnh sửa cuối:
Upvote 0
siwtom ơi! Sao mình down về mở lên thì nó cũng bị trường hợp giống bạn Hoàng Trọng Nghĩa vậy! Mình đang sài win xp offic 2010 ?
 
Upvote 0
siwtom ơi! Sao mình down về mở lên thì nó cũng bị trường hợp giống bạn
Hoàng Trọng Nghĩa vậy! Mình đang sài win xp offic 2010 ?
Trường hợp giống bạn Hoàng Trọng Nghĩa có nghĩa cụ thể là gì?
Là phông chữ không đẹp? Là khi xuất từ ListView thì không phải là unicode? Là cả hai?
Tôi nghĩ là tôi đã viết quá rõ ràng rồi nên cũng chả biết trả lời thêm thế nào. Nhất là khi câu hỏi chung
chung như thế.
Tôi dùng XP, Excel 2007 + Time New Roman cho ListView thì có như hình tôi đã gửi

Nói về Times New Roman:
Khi bạn và tôi cài Windows là đã có Times New Roman rồi đúng không? Nhưng chắc chắn không có bàn
phím Windows để viết văn bản tiếng Vệt. Do tôi không dùng Unikey bao giờ vì tôi luôn dùng đồ của
Windows. Dùng đồ của system có điểm lợi là khi tôi viết trong Notepad hay WORD thì tôi có được chắc
chắn là nó luôn tương thích. Bàn phím của Windows và Notepad, WORD của Windows thì chắc chắn luôn
tương thích rồi, vì cùng một "tác giả" mà. Dùng đồ của bên thứ 3 thì đôi khi gặp phải sự không tương
thích do đồ đó được viết cho system cũ, khi có phiên bản system mới thì đôi khi lại phải update phiên
bản đồ thứ 3 mới. Tôi không thích điều này nên nếu system có thì luôi xài đồ của system.
Vậy tôi muốn xài bàn phím của Windows. Để có được bàn phím này thì tôi vào Control Panel --> tùy chọn
vùng và ngôn ngữ --> thẻ ngôn ngữ --> có 2 ô thì đánh dấu kiểm tại ô ở trên --> OK --> đút đĩa Windows
vào để Windows copy các tập tin cần thiết. Sau đó vẫn thẻ Ngôn ngữ --> chọn Chi tiết --> Add --> chọn
và thêm Vietnamse. Lúc này thì trong biểu tượng cạnh đồng hồ có thễ chuyển qua lại từ bàn phím Anh <-
-> Việt. Cách viết: chọn bàn phím VI:
0 là chữ đ, 1 là chữ ă, 2 là chữ â, 3 là chữ ê, 4 là chữ ô, [ là chữ ư, ] là chữ ơ
5 là dấu huyền, 6 là dấu hỏi, 7 là dấu ngã, 8 là dấu sắc, 9 là dấu nặng
muốn viết chữ hoa thì bấm thêm SHIFT, muốn viết số từ 0 đến 9 thì bấm Alt (phải) + 0 .. 9
muốn bấm "[" hoặc "]" thì bấm Alt + "[" hoặc Alt + "]"
Với Wn 7 thì hình như cài xong đã có bàn phím nhưng sau phải tự vào và "bật" nó lên thì mới có trong
biểu tượng ngôn ngữ.
Có thể sau khi cài bản vá 2 XP và làm xong các thao tác trên thì tôi có Times New Roman "đẹp" như
trong hình chăng?
 
Lần chỉnh sửa cuối:
Upvote 0
Là phông chữ không đẹp! Mấy cái dấu đặt chưa đúng chỗ siwtom ơi!
 
Upvote 0
Trường hợp giống bạn Hoàng Trọng Nghĩa có nghĩa cụ thể là gì?
Là phông chữ không đẹp? Là khi xuất từ ListView thì không phải là unicode? Là cả hai?
Tôi nghĩ là tôi đã viết quá rõ ràng rồi nên cũng chả biết trả lời thêm thế nào. Nhất là khi câu hỏi chung chung như thế.
Tôi dùng XP, Excel 2007 + Time New Roman cho ListView thì có như hình tôi đã gửi

Khi code có tính phổ biến thì mình cũng nên chọn đa số máy hiểu font, đó là điều dĩ nhiên, nhưng nếu dùng UNICODE DỰNG SẲN dù máy nào font chữ vẫn đẹp và hiển thị đúng, còn UNICODE TỔ HỢP thì lại cho ra kết quả máy này hiển thị đẹp, máy kia lại "trật chìa" việc bỏ dấu tiếng Việt. Bạn xem hình sẽ hiểu:
 

File đính kèm

  • Picture1.jpg
    Picture1.jpg
    63.3 KB · Đọc: 569
Upvote 0
...
là cái gì đã được "nhồi" vào ListView?

Tôi nghĩ bạn chưa thấy cách hiển thị với các loại Tổ hợp và Dựng sẳn ở nhiều máy nên bạn nói như vậy, với File dưới, tôi chỉ thêm nút lệnh, ngoài ra hoàn toàn là do bạn viết.

Mọi người thấy nếu font chữ có lệch dấu, thì cho ý kiến, còn tôi thì thấy bị lệch đấy, không phải ở 1 máy mà rất nhiều máy khi sử dụng Unicode Tổ hợp.
 

File đính kèm

Upvote 0
Tôi nghĩ bạn chưa thấy cách hiển thị với các loại Tổ hợp và Dựng sẳn ở nhiều máy nên bạn nói như vậy, với File dưới, tôi chỉ thêm nút lệnh, ngoài ra hoàn toàn là do bạn viết.

Mọi người thấy nếu font chữ có lệch dấu, thì cho ý kiến, còn tôi thì thấy bị lệch đấy, không phải ở 1 máy mà rất nhiều máy khi sử dụng Unicode Tổ hợp.

Tôi đâu thấy có lệch gì ta

Capture.JPG

(Tôi đang dùng Win7 + Office 2010)
 
Upvote 0
Tôi đâu thấy có lệch gì ta



(Tôi đang dùng Win7 + Office 2010)

Như em đã nói, có máy hiển thị thế này, có máy hiển thị thế kia, Thầy thử màn hình có độ phân giải 1024 x 768 pixels thử xem có bị lệch do màn hình không? Ở chỗ em xài máy tính bàn, màn hình 17" (không wide) nên toàn bộ máy hiển thị lệch dấu.

Kể cả khi dùng bộ gõ Unicode Tổ hợp khi gửi bài trên diễn đàn này, những bài đó nhìn chữ bị lệch là em biết dùng font gì liền vì nó rất khó đọc, dấu bị lệch tùm lum, vừa đọc vừa cố gắng hiểu nghĩa như là đọc tiếng nước ngoài vậy!
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi nghĩ bạn chưa thấy cách hiển thị với các loại Tổ hợp và Dựng sẳn ở nhiều máy nên bạn nói như vậy, với File dưới, tôi chỉ thêm nút lệnh, ngoài ra hoàn toàn là do bạn viết.

Mọi người thấy nếu font chữ có lệch dấu, thì cho ý kiến, còn tôi thì thấy bị lệch đấy, không phải ở 1 máy mà rất nhiều máy khi sử dụng Unicode Tổ hợp.

Kyo xài Win XP, Office 07 và thấy bị lệch dấu y chang vậy.
Đã thử trên màn hình 19'' và 17'' nhưng vẫn bị lệch dấu.
 
Upvote 0
Tôi nghĩ bạn chưa thấy cách hiển thị với các loại Tổ hợp và Dựng
sẳn ở nhiều máy nên bạn nói như vậy, với File dưới, tôi chỉ thêm nút lệnh, ngoài ra hoàn toàn là do bạn
viết.
Mọi người thấy nếu font chữ có lệch dấu, thì cho ý kiến, còn tôi thì thấy bị lệch đấy, không phải ở 1 máy
mà rất nhiều máy khi sử dụng Unicode Tổ hợp.
Trước tiên ta thống nhất với nhau là: tôi không nói là bạn nói dối. Vấn đề của bạn được lưu bằng hình
ảnh nên tôi cũng nhìn thấy. Chỉ có điều bạn cứ một mực bàn tới chuyện unicode tổ hợp với dựng sẵn.
Tôi biết tổ hợp và dựng sẵn là thế nào, chúng khác nhau như thế nào. Nhưng bạn thử nghĩ xem - trong
ListView làm gì có unicode mà tổ hợp với dựng sẵn?Bạn có vài cách nhận biết. Thứ nhất là nhìn vào
code. Rõ ràng là ta nhập vào ListView dữ liệu không phải unicode. Hơn thế nữa, nếu dữ liệu gốc là như
nhau vd. Hoàng Trọng Nghĩa, thì dù nó ở dạng tổ hợp hay dựng sẵn thì dữ liệu nhập vào ListView, tức
windows-1258 là như nhau.Tại sao? Vì hàm convert chỉ có 1 tập ký tự ĐÍCH windows-1258 duy nhất.
Vậy thì với Hoàng Trọng Nghĩa tổ hợp và Hoàng Trọng Nghĩa dựng sẵn hàm trả về 2 chuỗi khác nhau
bằng cách nào??? Nếu bạn vẫn không tin thì bạn hãy viết trong sheet 2 dòng Hoàng Trọng Nghĩa, 1 dòng
dùng tổ hợp, 1 dòng dùng dựng sẵn. Sau đó bạn xuất từ ListView xuống sheet thì bạn thấy 2 chuỗi là như
nhau. Nhưng nhiều khi 2 chuỗi nhìn như nhau nhưng chúng lại khác nhau về BYTE, vậy bạn hãy làm động
tác nữa là lấy từ ListView rồi ghi ra đĩa ở 2 tập tin. Sau đó mở 2 tập tin bằng HexEditor bạn sẽ thấy các
bai ở vị trí tương ứng là như nhau.
Tóm lại 2 chuỗi có nội dung như nhau thì dù được mã dùng tổ hợp hay dựng sẵn thì khi đi qua hàm
convert sẽ có 2 chuỗi "y hệt" nhau. Y hệt ở đây không chỉ là nhìn thấy giống nhau mà thực sự chúng là 2
chuỗi BYTE y hệt nhau. Vậy thì lỗi hiển thị đâu có liên quan tới tổ hợp hay dựng sẵn.
Nhân đây tôi cũng muốn nói là bạn đưa cái ví dụ về viết trên GPE hay đâu đó có sự khác biệt giữa tổ
hợp và dựng sẵn là không tương ứng với trường hợp ở đây. Khi bạn gõ 2 đoạn text vào Textbox hay
trên GPE, lúc thì tổ hợp lúc dựng sẵn thì bạn có thể thấy hiển thị hơi khác. Vì sao? Vì lúc đó trong
Textbox, trên GPE bạn có unicode, lúc thì tổ hợp, lúc thì dựng sẵn, tức 2 chuỗi trong Textbox, trên GPE là
không "y hệt" nhau về "phương diện" BYTE.. Còn trong trường hợp đang xét trong ListView không có
unicode, và chuỗi ký tự - BYTE trong ListView ở 2 trường hợp là "y hệt" nhau.
Theo tôi nếu đã cố tìm nguyên nhân thì hoặc là ở độ phân giải màn hình - cái này không thuyết phục tôi,
hoặc ở phông chữ Arial, Times ...
Tôi không tin là độ phân giải. Nếu text hiển thị đúng (như ở máy tôi) thì nó đúng với mọi độ phân giải, còn
nếu không đúng (như ở máy bạn) thì nó không đúng ở mọi độ phân giải. Bạn thử xem. Vì tôi tải file của
bạn về và text hiển thị đúng với 800 x 600, 1024 x 768, 1152 x 864, 1280 x 1024, 1600 x 1200 (máy tôi
chỉ có thế thôi) + XP SP2 + Excel 2007 + thao tác cài bàn phím Vietnamese
Tôi không tin là độ phân giải, vậy tôi nghi ngờ gì? Tôi không còn lựa chọn nào khác ngoài nghi ngờ
phông chữ.
Bạn có thể đính kèm tập tin phông chữ Arial, Times New Roman của bạn không?. Tôi cũng muốn thử xét
phông chữ xem thế nào. Trong thư mục Windows\Fonts có nhiều Arial, Times, bạn có thể copy hết và
nén bằng WinRar.
Chuyện không liên quan tới tổ hợp, dựng sẵn tôi đã viết ở trên. Tôi muốn xét 1 câu nữa của bạn.

"Mọi người thấy nếu font chữ có lệch dấu, thì cho ý kiến, còn tôi thì thấy bị lệch đấy, không phải ở 1 máy
mà rất nhiều máy khi sử dụng Unicode Tổ hợp".

Nghĩa là thế nào? Là nếu text được viết dùng Tổ hợp thì không hiển thị chính xác? Thế mà trong file bạn
gửi "Hoàng Trọng Nghĩa" có lỗi hiển thị, mà bạn cho là nguyên cớ do Tổ hợp, Dựng sẵn ấy thì "Hoàng
Trọng Nghĩa" được dùng với unicode Dựng sẵn cơ mà
 
Lần chỉnh sửa cuối:
Upvote 0
Install files for complex script and right to left languages (including Thai)

Tôi nghĩ bạn chưa thấy cách hiển thị với các loại Tổ hợp và Dựng sẳn ở nhiều máy nên bạn nói như vậy, với File dưới, tôi chỉ thêm nút lệnh, ngoài ra hoàn toàn là do bạn viết.

Mọi người thấy nếu font chữ có lệch dấu, thì cho ý kiến, còn tôi thì thấy bị lệch đấy, không phải ở 1 máy mà rất nhiều máy khi sử dụng Unicode Tổ hợp.

Máy cài Windows Xp2 + Office2003


Khi vào Control Panel \ Date, Time, Language, and Regional Options \ Language and Regional Options:
Chọn thẻ [ Language ]
Trong mục [ Supplementan language support ]
Bỏ chọn ở dòng: Install files for complex script and right to left languages (including Thai)
Thì có hiện tượng lệch dấu như trong hình sau (dấu nặng là rõ nhât)


Chọn lại ở dòng: Install files for complex script and right to left languages (including Thai) Thì dấu lại hiện đúng vị trí bình thường

Các bạn hãy làm thử thí nghiệm nầy xem có bị hiện tượng như vậy không? Nếu cũng bị hiện tượng này thì có thể đây là nguyên nhân … ;;;;;;;;;;;
 

File đính kèm

  • Check.JPG
    Check.JPG
    139.1 KB · Đọc: 267
  • Un check.JPG
    Un check.JPG
    144.7 KB · Đọc: 269
Upvote 0
Máy cài Windows Xp2 + Office2003

Khi vào Control Panel \ Date, Time, Language, and Regional Options \ Language and Regional Options:
Chọn thẻ [ Language ]
Trong mục [ Supplementan language support ]
Bỏ chọn ở dòng: Install files for complex script and right to left languages (including Thai)
Thì có hiện tượng lệch dấu như trong hình sau (dấu nặng là rõ nhât)

Chọn lại ở dòng: Install files for complex script and right to left languages (including Thai) Thì dấu lại hiện
đúng vị trí bình thường
Các bạn hãy làm thử thí nghiệm nầy xem có bị hiện tượng như vậy không? Nếu cũng bị hiện tượng này
thì có thể đây là nguyên nhân …
Vấn đề này tôi đã viết tại bài #8 nhưng chắc không ai thèm đọc. Trích:
"Vậy tôi muốn xài bàn phím của Windows. Để có được bàn phím này thì tôi vào Control Panel --> tùy
chọn vùng và ngôn ngữ --> thẻ ngôn ngữ --> có 2 ô thì đánh dấu kiểm tại ô ở trên --> OK --> đút đĩa
Windows vào để Windows copy các tập tin cần thiết"
"Có thể sau khi cài bản vá 2 XP và làm xong các thao tác trên thì tôi có Times New Roman "đẹp" như
trong hình chăng?"
"ô ở trên" chính là ô "Install files for complex script and right to left languages (including Thai)" của bạn.
"và làm xong các thao tác trên" có nghĩa là trong quá trình đó Windows đã copy 1 số tập tin "nào đó" nên
tôi có phông chữ đẹp.
Cũng chính vì nghi ngờ phông chữ nên trong bài #15 tôi muốn bạn Hoàng Trọng Nghĩa gửi cho tôi phông
chữ để "xét nghiệm"
Một cái cần ghi nhớ: phông chữ dùng để HIỂN THỊ văn bản. Nếu văn bản không hiển thị đúng thì 99 % là
do phông chữ. Nếu hiển thị "ô vuông" thì có nghĩa là máy ta không có phông chữ mà người soạn văn bản
dùng để viết văn bản. Nếu hiển thị "không đẹp" thì do có thiết lập nào đó không chuẩn. Không có chuyện
vấn đề Tổ hợp hay Dựng sẵn ở đây vì Windows hỗ trợ unicode và hỗ trợ cả 2 dạng.
Cũng chính vì muốn dùng đồ của Windows nên tôi bắt buộc phải cài bàn phím vietnamse, mà để làm điều
đó thì tôi bắt buộc phải đánh dấu kiểm tại ô trên (nếu muốn cài bàn phím Trung Quốc thì phải đánh dấu
kiểm tại ô dưới. Nếu cài cả 2 thì đánh dấu cả 2), từ đó "tự nhiên" tôi có phông chữ đẹp. Còn dùng
Unikey thì mấy ai nghĩ tớii việc vào Control Panel? Mà không vào thì có phông chữ xấu. Cố tình dùng đồ
của Windows tự dưng lại có nhiều cái lợi
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề này tôi đã viết tại bài #8 nhưng chắc không ai thèm đọc. Trích:
"Vậy tôi muốn xài bàn phím của Windows. Để có được bàn phím này thì tôi vào Control Panel --> tùy chọn vùng và ngôn ngữ --> thẻ ngôn ngữ --> có 2 ô thì đánh dấu kiểm tại ô ở trên --> OK --> đút đĩa Windows vào để Windows copy các tập tin cần thiết"
"Có thể sau khi cài bản vá 2 XP và làm xong các thao tác trên thì tôi có Times New Roman "đẹp" như trong hình chăng?"
"ô ở trên" chính là ô "Install files for complex script and right to left languages (including Thai)" của bạn.
"và làm xong các thao tác trên" có nghĩa là trong quá trình đó Windows đã copy 1 số tập tin "nào đó" nên tôi có phông chữ đẹp.
Cũng chính vì nghi ngờ phông chữ nên trong bài #15 tôi muốn bạn Hoàng Trọng Nghĩa gửi cho tôi phông chữ để "xét nghiệm"
Một cái cần ghi nhớ: phông chữ dùng để HIỂN THỊ văn bản. Nếu văn bản không hiển thị đúng thì 99 % là do phông chữ. Nếu hiển thị "ô vuông" thì có nghĩa là máy ta không có phông chữ mà người soạn văn bản dùng để viết văn bản. Nếu hiển thị "không đẹp" thì do có thiết lập nào đó không chuẩn. Không có chuyện vấn đề Tổ hợp hay Dựng sẵn ở đây vì Windows hỗ trợ unicode và hỗ trợ cả 2 dạng.

Cũng chính vì muốn dùng đồ của Windows nên tôi bắt buộc phải cài bàn phím vietnamse, mà để làm điều đó thì tôi bắt buộc phải đánh dấu kiểm tại ô trên (nếu muốn cài bàn phím Trung Quốc thì phải đánh dấu kiểm tại ô dưới. Nếu cài cả 2 thì đánh dấu cả 2), từ đó "tự nhiên" tôi có phông chữ đẹp. Còn dùng Unikey thì mấy ai nghĩ tớii việc vào Control Panel? Mà không vào thì có phông chữ xấu. Cố tình dùng đồ của Windows tự dưng lại có nhiều cái lợi

Tôi không hiểu bạn nói font chữ là font chữ nào, dĩ nhiên, mặc định khi cài Window font Unicode đã có sẳn trong máy, ai lại đi cài cái đã có chứ? Đã có Time New Roman rồi thì cài thêm Time New Roman vào nữa làm gì trời???

Vậy tôi muốn xài bàn phím của Windows. Để có được bàn phím này thì tôi vào Control Panel --> tùy chọn vùng và ngôn ngữ --> thẻ ngôn ngữ --> có 2 ô thì đánh dấu kiểm tại ô ở trên --> OK --> đút đĩa Windows vào để Windows copy các tập tin cần thiết. Sau đó vẫn thẻ Ngôn ngữ --> chọn Chi tiết --> Add --> chọn và thêm Vietnamse. Lúc này thì trong biểu tượng cạnh đồng hồ có thễ chuyển qua lại từ bàn phím Anh <--> Việt. Cách viết: chọn bàn phím VI:
0 là chữ đ, 1 là chữ ă, 2 là chữ â, 3 là chữ ê, 4 là chữ ô, [ là chữ ư, ] là chữ ơ
5 là dấu huyền, 6 là dấu hỏi, 7 là dấu ngã, 8 là dấu sắc, 9 là dấu nặng
muốn viết chữ hoa thì bấm thêm SHIFT, muốn viết số từ 0 đến 9 thì bấm Alt (phải) + 0 .. 9
muốn bấm "[" hoặc "]" thì bấm Alt + "[" hoặc Alt + "]"

Nếu hiển thị lung tung như thế thì tôi thà dùng thêm một font nữa (VNI hay ABC chẳng hạn) cài thêm trong máy cho chắc ăn, vì đằng nào cũng là convert font cả, chứ vì cái font này mà phải gõ bàn phím trái với thói quen gõ dấu thông thường thì xem ra người dùng gõ dấu bị đảo lộn, phải học cách gõ lại à?
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu hiển thị lung tung như thế thì tôi thà dùng thêm một font nữa (VNI hay ABC chẳng hạn) cài thêm trong máy cho chắc ăn, vì đằng nào cũng là convert font cả, chứ vì cái font này mà phải gõ bàn phím trái với thói quen gõ dấu thông thường thì xem ra người dùng gõ dấu bị đảo lộn, phải học cách gõ lại à?
Ah! Cũng không phải đảo lôn gì đâu
Bạn dùng font Unicode với bộ gõ Unikey chẳng hạn, thì cứ gõ bình thường như xưa nay vẫn làm thôi
Còn cái hiện trên Listview là thứ đã được convert rồi, chẳng ảnh hưởng gì đến chuyện gõ tiếng Việt trước giờ cả
------------------
Vấn đề ở đây là:
- Lúc đầu tôi cứ lầm tưởng bạn siwtom đã làm được việc hiển thị Unicode trên Listview... Cuối cùng xem lại thì không phải vậy
- Việc convert để hiển thị tiếng Việt trên Listview đã được bàn và làm từ lâu trên diễn đàn rồi, có điều là convert sang VNI
Vậy việc convert sang windows-1258 có ưu điểm gì so với convert sang các bảng mã khác?
Nói chung, convert sang "cái gì" không quan trọng, điều mà tôi quan tâm ở đây là nếu file này mang sang bên Tây, không phải chỉnh sửa gì trong Control Panel, người ta có nhìn thấy chữ tiếng Việt trên Listview như ta đang nhìn thấy không? Nếu bạn siwtom trả lời là ĐƯỢC thì đó là thứ đáng xài, bằng ngược lại, không có gì đáng bàn cả
 
Upvote 0
Tôi không hiểu bạn nói font chữ là font chữ nào, dĩ nhiên, mặc định
khi cài Window font Unicode đã có sẳn trong máy, ai lại đi cài cái đã có chứ? Đã có Time New Roman
rồi thì cài thêm Time New Roman vào nữa làm gì trời???

Nếu hiển thị lung tung như thế thì tôi thà dùng thêm một font nữa (VNI hay ABC chẳng hạn) cài thêm trong
máy cho chắc ăn, vì đằng nào cũng là convert font cả, chứ vì cái font này mà phải gõ bàn phím trái với
thói quen gõ dấu thông thường thì xem ra người dùng gõ dấu bị đảo lộn, phải học cách gõ lại à?
Tôi không hiểu thái độ của bạn. Bạn có vấn đề chứ tôi đâu có vấn đề? Tôi chỉ muốn xét vấn đề của bạn
thôi, giúp được bạn thì tốt, không thì đành chịu.

Bạn nói:
"Đã có Time New Roman rồi thì cài thêm Time New Roman vào nữa làm gì trời???"
Bạn ạ, bạn có biết cái Unikey mà bạn dùng nếu nâng cấp thì nó có thêm chức năng không? Vậy thì với
phông chữ rất có thể có phiên bản mới chứ? Mà nếu không phải là phiên bản mới thì khi thao tác như tôi
nói sẽ có "cái gì đó" làm cho cái phông chữ hiện thời trở nên "đẹp" hơn. Tôi không rõ, bạn cũng không rõ
nhưng nếu thao tác như thế mà cuối cùng có được hiển thị tốt thì sao lại không làm?

Bạn nói:
"chứ vì cái font này mà phải gõ bàn phím trái với thói quen gõ dấu thông thường thì xem ra
người dùng gõ dấu bị đảo lộn, phải học cách gõ lại à?"
Chả nhẽ bạn không hiểu những gì tôi viết? Tôi thích dùng bàn phím thì tôi cài, nhưng nếu "hậu quả" của
việc cài ấy lại có được hiển thị đẹp thì bạn cũng có thể cài để có hiển thị đẹp. Sau đó bạn không cần
phải dùng bàn phím ấy. Có ai bắt bạn đâu mà bạn "mỉa mai" thế? Nếu đúng là thao tác như tôi nói là có
hiển thị tốt thì bạn thao tác như thế CHỈ ĐỂ có hiển thị tốt. Chả ai chĩa súng vào đầu bạn bắt bạn phải
dùng bàn phím Windows cả.
Bạn nói:
"Nếu hiển thị lung tung như thế thì tôi thà dùng thêm một font nữa "
Bạn ạ, ai có hiển thị lung tung? Bạn!, ở máy nào có hiển thị lung tung? Ở máy bạn! Vậy thì bạn có vấn đề
chứ tôi đâu có vấn đề? Bạn cần giải quyết vấn đề chứ tôi có phải giải quyết đâu? Tôi chỉ muốn giúp bạn
nên nêu hướng thử nghiệm. Bạn thấy đáng mất công thử thì thử. Thử thấy kết quả tốt thì tôi mừng. Còn
chuyện sau đó bạn có dùng nó hay không là do bạn quyết định, chả ai bắt bạn cả. Còn nếu hướng đi sai
thì tôi buồn vì không giúp được, còn bạn buồn vì không giải quyết được vấn đề. Thế thôi.
Ngay cả cái ListView với tiếng Việt này là tôi chỉ chia sẻ. Tôi không bắt bạn dùng mà bạn chỉ trích tôi như
thế. Bạn không biết cách làm cho Windows của mình hiển thị đúng unicode thì đó là vấn đề của bạn.
Còn tôi chưa bao giờ có vấn đề với unicode cả.
Tôi kết thúc việc trả lời bạn ở đây. Cho dù bạn có viết gì chăng nữa. siwtom đã nói "chấm hết" thì bao
giờ cũng giữ được lời hứa. Hết là hết.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom