 |
|
KINH NGHIỆM LẬP
TRÌNH |
|
Dùng tiếng Việt
trong ứng dụng Visual Foxpro 6.0
CHƯƠNG CAN CHÍP
(Tiếp theo e-CHÍP 165) |
|
Hồi cuối: Thường Chăng phơi kinh
Giống như Đường Tăng sau khi lấy được chơn kinh hí
hửng rời Tây Trúc, nhưng lại gặp một nạn cuối cùng
khiến toàn bộ kinh bị lọt tỏm xuống sông, mất một ít
và số còn lại bị ướt, phải phơi. Thường Chăng cũng
vậy, thế mới hay ở đời chẳng có chi trọn vẹn cả!
Sau những cố gắng ở hồi 2, tui và bà con sẽ nhận
được... nạn cuối là: trình đơn chọn dọc (popup menu)
và chú thích (tooltip) không thể hiện phông chữ
tiếng Việt (hình1) trên Windows 2000, Windows XP
(chứ Windows 98 thì "ô-kê"). Muốn triệt để, phải tìm
cách đụng vào registry nhưng làm vậy thì không
được... đàng hoàng cho lắm vì máy của người ta không
chỉ xài một ứng dụng VFP của mình. Thật may, khi
thiết kế trình đơn bằng công cụ Menu Designer, chức
năng Generate trên trình đơn Menu sẽ tạo ra tập tin
.MPR chứa mã lệnh VFP gồm các lệnh DEFINE BAR dùng
định nghĩa thuộc tính trình đơn chọn dọc. Mà lệnh
này thì cho phép xác định tên phông chữ cho mục chọn
dọc qua từ chốt FONT. Ta sẽ lợi dụng “khung cửa hẹp”
này để... “phơi khô" trình đơn. |
|
Hình 1: Trình đơn
chọn ngang thay đổi, nhưng trình đơn chọn dọc thì
hổng chịu
 |
|
|
Bà con cần đặc biệt lưu ý: mỗi khi cho build lại ứng
dụng, trình đơn đều được generate lại, có nghĩa là
tập tin .MPR tương ứng sẽ được tạo mới. Ai hơi đâu
mà ngồi sửa từng dòng lệnh DEFINE BAR để rồi VFP lại
xóa nó sau mỗi lần build!?
Chức năng Generate được điều khiển bởi tập tin
GENMENU.PRG trong thư mục chứa VFP. Ta chỉ cần chèn
thêm đoạn mã xử lý dòng lệnh DEFINE BAR vào tập tin
này là... “xong phim”! Bà con dùng lệnh MODIFY
COMMAND để mở tập tin này, rồi tìm đến dòng lệnh DO
Build bằng chức năng Find trên trình đơn Edit. Sau
đó chèn thêm dòng lệnh sau đây ngay sau dòng lệnh DO
cleanup (bên dưới dòng lệnh DO Build):
DO AddFontToMenu WITH m.g_OutFile, "Vietnam", 8
&& Ví dụ với phông chữ Vietnam
Sau đó, thêm đoạn mã 1 vào cuối tập tin này, bà con
sẽ nhận được kết quả tốt đẹp như hình 2.
|
Đoạn mã 1
PROCEDURE AddFontToMenu
PARAMETERS cMPRFile, cFontName, nFontSize
LOCAL nFileGoc, nFileTam, cCommandLine, cTempFile,
nDauChamPhay, cChuoiThem
cTempFile = "D:\"+SUBSTR(SYS(2015), 3, 10) + ".TMP"
&& Ví dụ dùng ổ D:
nFileGoc = FOPEN(cMPRFile)
nFileTam = FCREATE(cTempFile)
IF nFileGoc < 0 OR nFileTam < 0 && Không tạo được
WAIT WINDOW "Error !" NOWAIT
RETURN
ENDIF
cChuoiThem = " FONT " +CHR(34)+cFontName+CHR(34)+",
"+ALLTRIM(STR(nFontSize))
DO WHILE NOT FEOF(nFileGoc)
cCommandLine = FGETS(nFileGoc)
IF "DEFINE BAR" $ cCommandLine
nDauChamPhay = AT(";", cCommandLine)
IF nDauChamPhay > 0
cCommandLine = STUFF(cCommandLine, nDauChamPhay, 1,
cChuoiThem + ";")
ELSE
cCommandLine = cCommandLine + cChuoiThem
ENDIF
ENDIF
= FPUTS(nFileTam, cCommandLine)
ENDDO
= FCLOSE(nFileGoc) && Đóng tập tin
= FCLOSE(nFileTam) && Đóng tập tin
COPY FILE &cTempFile TO &cMPRFile && Nội dung mới
ERASE &cTempFile && Xóa tập tin tạm.
RETURN |
|
|
|
Tuy nhiên, như tui đã thổ lộ, phải chịu “mất một số
kinh”, nội dung chú thích (tooltip) không thể hiện
tiếng Việt như ý. Không hiểu sao, có sự nhầm lẫn của
Microsoft chăng, khi chỉ có thành phần tooltip và
popup menu thì hổng chịu? Bà con thử "ngâm cứu" tiếp
xem sao? Hy vọng bà con nhận được điều gì đó hữu ích
từ chuyến phiêu lưu kỳ thú của tui. |
|
Hình 2: Toàn bộ
trình đơn hệ thống đã là tiếng Việt
 |
|
|
|
 |
|
 |