SỐ 167
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

[Đầu trang]
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
[Đầu trang]
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

[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn