Thiết kế từ điển từ công cụ tiếng Việt

MỤC LỤC ĐẶT VẤN ĐỀ 6 PHẦN I. CƠ SỞ LÝ THUYẾT XÂY DỰNG TỪ ĐIỂN TỪ HƯ 9 CHƯƠNG 1. TÌM HIỂU VỀ TỪ ĐIỂN VÀ TỪ HƯ 10 I. Từ điển và vấn đề tin học hóa 10 II. Giải pháp thiết kế giao diện 10 III. Giải pháp xây dựng dữ liệu 13 1. Tổng quát 13 2. Cơ sở dữ liệu của từ điển từ hư 14 3. Xây dựng cơ sở dữ liệu từ vựng cho từ điển từ hư 14 4. Tổ chức dữ liệu 14 5. Xử lý 15 CHƯƠNG 2. LƯU GIỮ CSDL TỪ ĐIỂN TỪ HƯ NHỜ CÁC BỘ CHỮ TIẾNG VIỆT TRONG MÁY TÍNH 17 I. Chọn bộ chữ thích hợp 17 II. Gõ tiếng Việt 17 PHẦN II. THIẾT KẾ CHƯƠNG TRÌNH 19 CHƯƠNG 1. LỰA CHỌN PHẦN MỀM 20 CHƯƠNG 2. THIẾT KẾ GIAO DIỆN CHÍNH 21 I. Các công cụ của giao diện chính 21 1. Nút lệnh tra từ (cmdReference) 21 2. Nút lệnh những từ đã tra (cmdHistory) 22 3. Nút lệnh quay lui (cmdBack) 23 4. Nút lệnh thêm từ vào từ điển (cmdAdd) 23 5. Nút lệnh sửa đổi từ trong từ điển (cmdReplace) 23 6. Nút lệnh xóa từ (cmdRemove) 23 7. Nút lệnh thoát (Exit) 24 II. Tra từ 24 1. Các phương án tra từ 24 2. Xuất kết quả (Hàm Translate) 26 CHƯƠNG 3. THIẾT KẾ GIAO DIỆN CẬP NHẬT 29 1. Nút lệnh thêm nghĩa 29 2. Nút xóa nghĩa 30 3. Nút đánh dấu từ, và tự động đánh dấu từ 31 4. Nút sao lưu kết quả và thoát 31 KẾT QUẢ DEMO 32 I. Cài đặt chương trình: 32 II. Chạy chương trình: 32 KẾT LUẬN 36 PHỤ LỤC 1 GIỚI THIỆU CÁC FONT MÃ TIẾNG VIỆT 37 1. Font mã 1 byte 37 2. Font mã 2 byte 37 3. Font mã tổ hợp 37 4. Font ABC mã TCVN3 - 5712 37 PHỤ LỤC 2. MÃ RTF 39 TÀI LIỆU THAM KHẢO 42 Thiết kế từ điển từ công cụ tiếng Việt ĐẶT VẤN ĐỀ Những năm gần đây, với sự phát triển của đất nước, tiếng Việt ngày càng tỏ rõ vai trò đích thực của mình, có khả năng diễn đạt được hầu hết nghĩa ở các mặt chính trị, kinh tế văn hóa, khoa học kỹ thuật. Trong tiếng Việt, lớp từ hư 1 phần lớn là các từ “rỗng”, khó nắm bắt được nghĩa của chúng. Ví dụ như những từ: vạn bất đắc dĩ, cực chẵng đã . Mà một khi đã không hiểu được nghĩa của từ hư, thì cũng khó có thể hiểu đúng nghĩa khi chúng tham gia vào các tổ hợp từ, quán từ 2. Hiện nay trên thị trường đã có “từ điển từ công cụ tiếng Việt” của Đỗ Thanh do nhà xuất bản giáo dục xuất bản năm 1998. Tuy nhiên trên máy tính chưa xuất hiện một từ điển từ công cụ tiếng Việt nào. Qua đề tài tốt nghiệp với sự hướng dẫn nhiệt tình của thầy giáo TS. Phan Huy Khánh em đã mạnh dạng thiết kế một từ điển như thế lấy tên là “từ điển từ hư tiếng Việt” 3 với mục đích: + Phục vụ cho việc giảng dạy, học tập, biên soạn giáo trình và các loại sách công cụ 4 tiếng Việt trên máy tính. + Phục vụ cho việc học tập giảng dạy tiếng Việt ở các cấp phổ thông của Việt Nam. Cụ thể nó sẽ giúp các em học sinh nói và viết đúng tiếng Việt. + Ngoài ra nó có thể được đưa vào trong từ điển đa ngữ trên máy tính để tiếp tục tìm cách xử lý ngôn ngữ tự nhiên. 1 Theo từ điển tiếng Việt của viện Ngôn ngữ học do Hoàng Phê chủ biên, xuất bản năm 2000 từ hư (mere words) hay còn gọi là hư từ được định nghĩa là: Từ không có khả năng độc lập làm thành phần câu, được dùng để hiển thị quan hệ ngữ pháp giữa các thực từ. 2 Theo từ điển tiếng Việt của Hoàng Phê định nghĩa quán từ có nghĩa như mạo từ là từ dùng phụ vào danh từ ở một số ngôn ngữ để phân biệt giống, số, tính xác định. 3 Theo từ điển “từ công cụ tiếng Việt” của Đỗ Thanh đã đưa ra khái niệm “từ công cụ” (từ hư) tuy nhiên không giải thích cụ thể khái niệm này. Hiện nay, trong các từ điển tiếng Việt cũng chưa định nghĩa khái niệm “từ công cụ” mà chỉ đưa ra khái niệm “từ hư” 2 nên em đã lấy tên “Từ điển từ hư tiếng Việt” (TĐTH ) để đặt tên cho từ điển đã thiết kế. 4 Từ điển tiếng Việt của Hoàng Phê đã định nghĩa công cụ (theo nghĩa ở đây) là: Cái dùng để tiến hành một việc nào đó.

doc42 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2530 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Thiết kế từ điển từ công cụ tiếng Việt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
tr¸nh khái nh÷ng thiÕu sãt, kÝnh mong quÝ thÇy c« vµ c¸c b¹n phª b×nh, gãp ý ®Ó hoµn thiÖn ®å ¸n h¬n nh»m ®­a ®å ¸n ®· thiÕt kÕ vµo øng dông thùc tÕ. §µ n½ng, ngµy......th¸ng......n¨m 2000 SV. Thùc hiÖn NguyÔn Minh NhËt PhÇn I C¬ së lý thuyÕt x©y dùng tõ ®iÓn tõ h­ Ch­¬ng 1 T×m hiÓu vÒ tõ ®iÓn vµ tõ h­ I. Tõ ®iÓn vµ vÊn ®Ò tin häc hãa Theo tõ ®iÓn tiÕng ViÖt cña viÖn Ng«n ng÷ häc do Hoµng Phª chñ biªn ®Þnh nghÜa “tõ ®iÓn lµ s¸ch tra cøu tËp hîp c¸c ®¬n vÞ ng«n ng÷ (th­êng lµ ®¬n vÞ tõ vùng) vµ s¾p xÕp theo mét thø tù nhÊt ®Þnh, cung cÊp mét sè kiÕn thøc cÇn thiÕt ®èi víi tõng ®¬n vÞ”. Ngµy nay, do nhu cÇu vÒ khoa häc kü thuËt ph¸t triÓn, con ng­êi ngµy cµng tiÕn ®Õn sù hoµn thiÖn, nhu cÇu hiÓu biÕt ngµy cµng cao nªn cÇn ph¶i cã nhËn thøc ®óng ®¾n vÒ nh÷ng tõ ng÷ trong giao tiÕp. ChÝnh v× thÕ mµ nhiÒu lo¹i tõ ®iÓn ®· ra ®êi víi nhiÒu thÓ lo¹i kh¸c nhau, tõ tõ ®iÓn ®¬n ng÷ ®Õn c¸c tõ ®iÓn song ng÷ hay ®a ng÷,v.v. nhÊt lµ trong tiÕng ViÖt, vÊn ®Ò mµ nhiÒu nhµ khoa häc ViÖt Nam ®ang quan t©m gi¶i quyÕt. Trong lóc ®ã, C«ng nghÖ Th«ng tin ngµy cµng ph¸t triÓn, vÊn ®Ò tin häc hãa ®ang dÇn dÇn trë thµnh phæ biÕn trong nhiÒu lÜnh vùc, th× viÖc ®­a nh÷ng tõ ®iÓn nh­ thÕ vµo m¸y tÝnh lµ ®iÒu rÊt cÇn thiÕt. Nã kh«ng nh÷ng gióp cho ng­êi dïng tra cøu ®­îc tõ mét c¸ch nhanh chãng mµ cßn gióp ng­êi dïng thÊy ®­îc h×nh ¶nh vµ nghe ®­îc c¶ ©m thanh. §Ó mét tõ ®iÓn ®­îc thiÕt kÕ cã tÝnh tiÖn lîi, dÔ sö dông, gÇn gñi víi ng­êi dïng, ta ph¶i tõng b­íc ph©n tÝch kü cµng tõng ph­¬ng ¸n ®Ó chän lÊy ph­¬ng ¸n tèt nhÊt. II. Gi¶i ph¸p thiÕt kÕ giao diÖn Khi nãi vÒ tõ ®iÓn, chóng ta sÏ h×nh dung ra ngay ®ã lµ mét c«ng cô dïng ®Ó tra cøu, gi¶i nghÜa nh÷ng tõ ®Ó lµm râ nghÜa mét tõ tr­íc ®ã. HiÖn nay ®· cã rÊt nhiÒu lo¹i tõ ®iÓn kh¸c nhau nh­ng tÊt c¶ c¸c lo¹i tõ ®iÓn nµy nãi chung ®Òu cã h×nh thøc gièng nhau tøc lµ vµo mét tõ vµ ra lµ gi¶i nghÜa cña tõ ®ã. Tuy nhiªn khi bµn vÒ vÊn ®Ò thiÕt kÕ tõ ®iÓn trªn m¸y tÝnh th× cã rÊt nhiÒu gi¶i ph¸p, tïy theo lo¹i tõ ®iÓn cã thÓ lµ ®¬n ng÷, song ng÷, hay ®a ng÷, tuú theo cÊu tróc cña tõ ®iÓn cã bao nhiªu thµnh phÇn, tuú theo nhu cÇu cña ng­êi dïng tra trùc tiÕp hay tra trªn mét øng dông kh¸c.v.v.. ë ®©y chóng ta sÏ thiÕt kÕ mét tõ ®iÓn ®¬n ng÷. §Ò tµi nµy dùa theo tõ ®iÓn tõ c«ng cô tiÕng ViÖt cña §ç Thanh, NXB Gi¸o Dôc xuÊt b¶n n¨m 1998. Cã thÓ ®­a ra c¸c gݶi ph¸p sau: - C¸ch 1. Mçi tõ ®­îc xem nh­ gåm hai phÇn tõ khãa vµ gi¶i thÝch. Tõ khãa ®Æc tr­ng cho tõ, dïng ®Ó nhËn d¹ng tõ. Gi¶i thÝch lµ phÇn dïng ®Ó m« t¶ tõ khãa. Xem h×nh 1-1. Tõ Tõ khãa Gi¶i thÝch H×nh 1-1. M« h×nh d­ liÖu theo c¸ch 1 Lóc nµy ë phÇn gi¶i thÝch chØ cÇn mét v¨n b¶n cã kiÓu kh«ng thay ®æi, kh«ng cÇn dïng ®Õn ®Þnh d¹ng kiÓu rtf (RichText Format) nh­ trong Word. Khi ®ã giao diÖn sÏ nh­ h×nh 1-2. Tõ cÇn tra Danh s¸ch c¸c tõ Gi¶i thÝch H×nh 1-2. Giao diÖn theo c¸ch 1 ¦u ®iÓm: §¬n gi¶n, dÓ thiÕt kÕ, xö lý nhanh. Nh­îc ®iÓm: Kh«ng ph©n biÖt ®­îc nghÜa vµ vÝ dô trong lêi gi¶i thÝch, kh«ng phï hîp víi nhu cÇu ng­êi dïng. - C¸ch 2. T¸ch phÇn gi¶i thÝch thµnh hai phÇn nghÜa vµ vÝ dô. Xem h×nh 1-3. Tõ Tõ khãa NghÜa VÝ dô H×nh 1-3. M« h×nh d÷ liÖu theo c¸ch 2 Theo c¸ch nµy ta ®­a thªm mét tr­êng n÷a, khi ®ã mçi tr­êng còng lµ mét v¨n b¶n cã kiÓu kh«ng thay ®æi nªn còng kh«ng cÇn dïng ®Õn ®Þnh d¹ng kiÓu rtf. Theo c¸ch nµy ta cã diao diÖn nh­ h×nh 1-4. Tõ cÇn tra Danh s¸ch c¸c tõ NghÜa VÝ dô H×nh 1-4. Giao diÖn theo c¸ch 2 ¦u ®iÓm: §¬n gi¶n, xö lý nhanh, ®· ph©n biÖt ®­îc nghÜa vµ vÝ dô trong phÇn gi¶i thÝch. Nh­îc ®iÓm: Kh«ng thÓ xö lý ®­îc khi mét tõ cã nhiÒu nghÜa. - C¸ch 3. Trong phÇn gi¶i thÝch ta chia ra thµnh nhiÒu nghÜa, mçi nghÜa cã vÝ dô kÌm theo. Xem h×nh 1-5 Tõ Tõ khãa Gi¶i thÝch NghÜa 1 VÝ dô 1 NghÜa n VÝ dô n ... H×nh 1-5. M« h×nh d÷ liÖu theo c¸ch 3 TÊt c¶ c¸c nghÜa vµ vÝ dô t¹o thµnh phÇn gi¶i thÝch lµ mét trang v¨n b¶n. Sö dông cÊu tróc file rtf ®Ó m« t¶ phÇn gi¶i thÝch, khi ®ã míi ph©n biÖt ®­îc nghÜa vµ vÝ dô. Cã giao diÖn nh­ h×nh 1-6. Tõ cÇn tra Danh s¸ch c¸c tõ NghÜa 1 VÝ dô 1 ... NghÜa n VÝ dô n H×nh 1-6. Giao diÖn theo c¸ch 3 ¦u ®iÓm: Ph©n biÖt ®­îc nghÜa vµ vÝ dô, xö lý ®­îc mét tõ cã nhiÒu nghÜa, cã thÓ ®­a ra thµnh mét file Word lµm cho tõ ®iÓn phong phó Nh­îc ®iÓm: Phøc t¹p khi xö lý file rtf, xö lý chËm. Qua ba ph­¬ng ¸n trªn th× ta chän c¸ch 3 ®Ó thiÕt kÕ, tuy cã h¬i phøc t¹p nh­ng kh¾c phôc ®­îc c¸c nh­îc ®iÓm ë c¸ch 1 vµ c¸ch 2, lµm cho tõ ®iÓn trë nªn phong phó, ®a d¹ng, gÇn gñi víi ng­êi dïng. III. Gi¶i ph¸p x©y dùng d÷ liÖu Cã rÊt nhiÒu gi¶i ph¸p ®Ó x©y dùng d÷ liÖu cho tõ ®iÓn. ë ®©y chóng ta tr×nh bµy mét ph­¬ng ¸n sö dông ®èi t­îng Dictionary mµ Visual Basic cung cÊp. 1. Tæng qu¸t Tõ ®iÓn tõ c«ng cô tiÕng ViÖt ®­îc thiÕt kÕ trong m«i tr­êng Microsoft Windows. Do hiÖn nay m«i tr­êng Windows ®­îc sö dông réng r·i nªn ®Ó tiÖn viÖc tra cøu, häc tËp vµ cã thÓ ¸p dông cho c¸c øng dông v¨n b¶n nh­ Winword, PowerPoint, Web... cã thÓ h×nh dung chóng ho¹t ®éng theo m« h×nh sau (Xem h×nh 1-7) Kh«ng t×m thÊy Bé chuyÓn ®æi tiÕng ViÖt Ra Vµo ... Gi¶i thÝch Xö lý CSDL Tõ vùng tiÕng ViÖt Tõ kho¸ VÝ dô n1...nn NghÜa n NghÜa 1 VÝ dô 11...1n H×nh 1-7. M« h×nh ho¹t ®éng cña tõ ®iÓn Trong ®ã bé chuyÓn ®æi tiÕng ViÖt thùc hiÖn chøc n¨ng chuyÓn ®æi tõ m· tiÕng ViÖt 7 bits kiÓn Telex sang m· ABC theo TCVN3 - theo ®Ò tµi cña Hoµng Quèc Th¸i - (xem phÇn chuyÓn m·). Vµo lµ mét tõ khãa, tõ ®iÓn sÏ t×m trong c¬ së d÷ liÖu nÕu cã sÏ ®­a ra phÇn gi¶i thÝch t­¬ng øng, cßn kh«ng sÏ ®­a ra th«ng b¸o lçi kh«ng t×m thÊy. Mét tõ cã thÓ cã nhiÒu nghÜa vµ c¸c vÝ dô kÌm theo tõng nghÜa t­¬ng øng. Nh­ vËy ta cã thÓ m« t¶ thuËt to¸n cña chóng nh­ sau: xem h×nh 1-8 Repeat §äc_tõ If Tån_t¹i_tõ then XuÊt_kÕt_qu¶ Else Th«ng_b¸o_lçi Until yªu_cÇu_dõng H×nh 1-8. ThuËt to¸n m« t¶ ho¹t ®éng cña tõ ®iÓn ViÖc §äc_tõ cã thÓ nhËp vµo hoÆc chän tõ danh s¸ch hoÆc trá ®Õn nh÷ng tõ mµ trong phÇn m« t¶ tõ liªn kÕt ®Õn. KiÓm tra Tån_t¹i_tõ tøc kiÓm tra tõ cã trong danh s¸ch List hay kh«ng. ViÖc kiÓm tra trªn danh s¸ch tõ kho¸ (kh«ng cã phÇn m« t¶) nªn ®­îc tiÕn hµnh rÊt nhanh. 2. C¬ së d÷ liÖu cña tõ ®iÓn tõ h­ D÷ liÖu cña tõ ®iÓn ®­îc tæ chøc d­íi d¹ng c¬ së d÷ liÖu mdb cña Access víi m« h×nh nh­ sau: Danh môc tõ chøa tÊt c¶ c¸c m· tõ, nã ®­îc sö dông ®Ó t×m kiÕm, s¾p xÕp, nhËn d¹ng mét tõ cã tån t¹i kh«ng. Mçi tõ cã thÓ cã nhiÒu nghÜa vµ vÝ dô vÒ nghÜa ®ã. Mét nghÜa cã thÓ cho nhiÒu tõ nÕu chóng ®ång nghÜa. Xem h×nh 1-9. 1-n 1-n M· tõ nghÜaTõ Tõ NghÜa sè Néi dung nghÜa H×nh 1-9. M« h×nh c¬ së d÷ liÖu tõ ®iÓn 3. X©y dùng c¬ së d÷ liÖu tõ vùng cho tõ ®iÓn tõ h­ Do cÊu tróc ©m tiÕt tiÕng ViÖt vµ ®Ó sö dông c¸c b¶ng thèng kª ©m tiÕt trong tõ ®iÓn chÝnh t¶ cña Hoµng Phª, ta cã thÓ thiÕt kÕ c¬ së d÷ liÖu lµ mét m¶ng hai chiÒu. Mçi phÇn tö cña mét m¶ng cho phÐp kiÓm tra tÝnh ®óng ®¾n (sù cã mÆt) mét ©m tiÕt c¨n cø vµo vÞ trÝ hµng cña phô ©m ®Çu vµ vÞ trÝ cét cña khu«n vÇn. VÝ dô ©m tiÕt tr­êng lµ phÇn tö ®­îc x¸c ®Þnh tõ phô ©m ®Çu tr vµ khu«n vÇn ­êng tõ b¶ng sau (bªn ph¶i H×nh 1-9 lµ c¸ch x¸c ®Þnh ©m tiÕt ®ã): ­êng tr . ... ­êng ... ... tr þ ... H×nh 1-9. C¸ch x¸c ®Þnh mét ©m tiÕt 4. Tæ chøc d÷ liÖu Tõ ®iÓn ®­îc thiÕt kÕ nh»m tra cøu tõ nªn d÷ liÖu ®­îc tæ chøc d¹ng thøc c¸c cÆp tõ khãa - gi¶i thÝch (Key - Meaning) (xem h×nh 1-5) Trong ®ã, Tõ khãa lµ tõ ®Æt tr­ng cho néi dung cho mét ®o¹n v¨n, ë ®©y tõ khãa lµ tõ ®Æt tr­ng cho néi dung cña mét tõ trong tõ ®iÓn, vÝ dô: “¾t lµ”. Gi¶i thÝch lµ phÇn m« t¶ mét tõ bao gåm c¸c nghÜa vµ vÝ dô kÌm theo. Mçi nghÜa vµ vÝ dô l¹i cã thÓ chøa c¸c tõ kh¸c nh­ tõ “¾t lµ” cã nghÜa nh­ “¾t”, khi ®ã ta l¹i trá ®Õn tõ “¾t” ®Ó xem nghÜa cña tõ “¾t”. 5. Xö lý Víi d÷ liÖu ®­îc tæ chøc nh­ trªn ta xÏ tËp hîp tÊt c¶ c¸c tõ khãa (Key) thµnh mét danh s¸ch (List), vµ toµn bé d÷ liÖu ®­îc tæ chøc thµnh mét líp (Class) Dictionary. Trong ®ã mçi ®èi t­îng cã hai tr­êng d÷ liÖu tõ khãa (Key), m« t¶ tõ khãa (Item) vµ c¸c ph­¬ng thøc xö lý d÷ liÖu trªn nh­: Add (Thªm tõ vµo tõ ®iÓn), Exists (KiÓm tra mét tõ ®· cã trong tõ ®iÓn ch­a), Item (T×m phÇn m« t¶ tõ khi biÕt tõ kho¸), Remove (Xãa mét tõ), RemoveAll (Xo¸ toµn bé tõ ®iÓn). §èi víi tõ ®iÓn trªn m¸y tÝnh, v× d÷ liÖu rÊt lín nªn vÊn ®Ò ®¸ng quan t©m ë ®©y lµ tèc ®é xö lý. Cã rÊt nhiÒu gi¶i ph¸p ®Ó tæ chøc d÷ liÖu vµ xö lý d÷ liÖu kh¸c nhau. Mçi ph­¬ng ph¸p cã nh÷ng ­u ®iÓm vµ nh­îc ®iÓm riªng. §Ó hiÓn thÞ tõ ®iÓn víi cÊu tróc nh­ mét file Word ta ph¶i xö lý chóng th«ng qua ®Þnh d¹ng file rtf (RichText Format) mµ trong Visual Basic ®ã lµ ®èi t­îng RichTextBox. Mçi ®èi t­îng cã hai tr­êng d÷ liÖu ®¸ng quan t©m lµ tr­êng v¨n b¶n (Text) vµ tr­êng m· ®Þnh d¹ng cho v¨n b¶n ®ã (TextRTF). VÝ dô ®Ó hiÓn thÞ dßng ch÷ “Dai hoc Da Nang” font = “.vnTime” size=14, mµu ®á ta ph¶i viÕt mét ®o¹n m· nh­ sau: {\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fprq2 .VnTime;}} {\colortbl\red0\green0\blue0;\red255\green0\blue0;} \deflang1033\pard\plain\f2\fs28\cf1 Dai hoc Da Nang \par } Nh­ vËy nÕu d÷ liÖu ®­îc l­u ë d¹ng file m· rtf th× dung l­îng sÏ rÊt lín do ®ã qu¸ tr×nh n¹p d÷ liÖu sÏ chËm. §Ó kh¾c phôc vÊn ®Ò nµy ta chØ l­u d÷ liÖu ë d¹ng file v¨n b¶n tøc chØ l­u dßng “Dai hoc Da Nang”. Trªn ®ã ta qui ®Þnh thªm c¸c tab ®Þnh d¹ng riªng. Khi ®ã ta sÏ xö lý trªn v¨n b¶n nµy, chØ khi nµo muèn hiÓn thÞ th«ng tin ra mµn h×nh míi chuyÓn file v¨n b¶n ®ã thµnh m· rtf. §iÒu nµy cã nghÜa lµ ta chØ thay c¸c tab ®ã thµnh c¸c ®o¹n m· ®Þnh d¹ng t­¬ng øng. C¸c tab ®Þnh d¹ng ®­îc qui ®Þnh nh­ ë b¶ng d­íi Tab §o¹n m· thay thÕ Gi¶i thÝch “$” "\par \plain\li500\f4\fs24\cf2 " B¾t ®Çu mét nghÜa “#” "\par \plain\li0\f3\fs24\cf1\i " B¾t ®Çu mét vÝ dô “^” "\plain\f4\fs24\cf3 " B¾t ®Çu ®¸nh dÊu ®á “~” "\plain\li0\f3\fs24\cf1\i " KÕt thóc ®¸nh dÊu ®á thong gi¶i thÝch “`” "\plain\f4\fs24\cf2 " KÕt thóc ®¸nh dÊu ®á trong vÝ dô Chr(13) "\par " Xuèng dßng B¶ng qui ®Þnh c¸c ®o¹n m· thay thÕ c¸c tab Víi b¶ng font vµ b¶ng mµu ®­îc ®Þnh nghÜa qua ®o¹n m·: "{\rtf1\ansi\deff0\deftab720 {\fonttbl {\f0\fswiss MS Sans Serif;} {\f1\froman\fcharset2 Symbol;} {\f2\fswiss MS Sans Serif;} {\f3\fswiss .VnCourier;} {\f4\fswiss .VnTeknical;} {\f5\fswiss .VnTimeH;}} {\colortbl \red0\green0\blue0; \red0\green0\blue255; \red0\green120\blue120; \red255\green0\blue0;} \deflang2057\pard \par }" Ch­¬ng 2 L­u gi÷ CSDL tõ ®iÓn tõ h­ nhê c¸c bé ch÷ tiÕng ViÖt trong m¸y tÝnh I. Chän bé ch÷ thÝch hîp Do hiÖn nay cã rÊt nhiÒu ph«ng ch÷ (fonts) tiÕng ViÖt ®­îc x©y dùng trªn nhiÒu bé m· kh¸c nhau (kh¸c nhau vÒ bytes sö dông lµ 1 hoÆc 2, thø tù dÊu thanh, c¸ch bè trÝ c¸c ký tù...). §Ó tiÖn viÖc chuyÓn ®æi qua l¹i gi÷a c¸c m· sau nµy, chóng ta chän bé m· Telex chØ sö dông c¸c ký tù ASCII chuÈn 7-bits ®Ó biÓu diÓn dÊu tiÕng ViÖt. §Ó nhÊt qu¸n vµ kh«ng mÊt tÝnh tæng qu¸t, ta chän bé m· Telex cò, nghÜa lµ dÊu ph¶i ®i s¸t ngay sau ch÷ (H×nh 1-10). §Ó hiÓn thÞ ®­îc tiÕng viÖt ta chuyÓn ®æi m· nµy thµnh m· ABC theo tiªu chÈn TCVN3 chóng ta tiÕn hµnh qua hai b­íc chuÈn_hãa_m· vµ chuyÓn_m·. ChuÈn_hãa_m· cã t¸c dông s¾p xÕp l¹i m· nguån theo ®óng vÞ trÝ c¸c dÊu ph¶i ®Æt ngay sau c¸c ký tù (tøc ph¶i ®óng nh­ m· Telex cò). ChuyÓn_m· lµm nhiÖm vô chuyÓn m· ®· ®­îc chuÈn hãa. VÝ dô: Côm tõ §¹i häc §µ N½ng cã thÓ gâ lµ: “DDaij hocj DDaf Nawngx”. Khi ®ã chuÈn_hãa_m· lµm nhiÖm vô chuyÓn m· trªn thµnh “DDaji hojc DDaf Nawxng” vµ chuyÓn_m· sÏ chuyÓn m· nµy thµnh “§¹i häc §µ N½ng”. PhÇn nµy do Hoµng Quèc Th¸i thiÕt kÕ. IBM CP 01129 Microsoft CP 1258 TCVN3 VietWare BKtpHCM VISCII VNI VietKey Telex H×nh 1-10 Bé m· trôc Telex II. Gâ tiÕng ViÖt V× tõ ®iÓn d¹ng ViÖt - ViÖt nªn vÊn ®Ò hæ trî gâ tiÕng ViÖt cho ng­êi dïng lµ cÇn thiÕt. §Ó ®¬n gi¶n vµ kh«ng mÊt tÝnh phæ biÕn, ë ®©y ta ®­a ra ph­¬ng ¸n hç trî gâ tiÕng ViÖt theo kiÓu gâ Telex cò, nghÜa lµ ph¶i bá dÊu ngay sau tõ. VÝ dô: ®Ó vµo dßng ch÷ §¹i häc §µ n½ng ta ph¶i gâ lµ: DDaji hojc DDaf nawxng. - C¸c phÝm dÊu chØ cã t¸c dông theo ng÷ c¶nh tøc lµ nÕu kh«ng cã nguyªn ©m nµo ®øng tr­íc th× nã vÉn hiÓn thÞ nh­ trong chÕ ®é tiÕng Anh, vÝ dô phÝm f nÕu ®i sau ch÷ a th× sÏ thµnh ch÷ µ, cßn nÕu gâ riªng nã vÉn hiÖn ch÷ f. - Tr¹ng th¸i hoa hoÆc th­êng phô thuéc vµo tr¹ng th¸i CapsLock hay Shift cuèi cïng. VÝ dô: oO -> ¤ Oo -> « dD -> § Dd -> ® Qui ­íc, ý nghÜa cña c¸c phÝm: - f = huyÒn - s = s¾c - r = hái - x = ng· - j = nÆng - aa = © - ee = ª - oo = « - w, uw = ­ - ow = ¬ - dd = ® - z = khö dÊu (xo¸ dÊu) LÆp dÊu: - ddd = dd - ooo = oo - eee = ee VÝ dô: Ta gâ dßng ch÷ N­íc ch¶y ®¸ mßn b»ng d·y c¸c phÝm sau: Nwowsc chary ddas mofn hoÆc Nuwowsc chary ddas mofn Chó ý: §Ó biÕt thªm chi tiÕt vÒ font m· tiÕng ViÖt, xin xem phÇn phô lôc 1 Giíi thiÖu c¸c font m· tiÕng ViÖt. PhÇn II ThiÕt kÕ ch­¬ng tr×nh Trong phÇn 1, ch­¬ng 1, chóng ta ®· ph©n tÝch ®Ó ®­a ra gi¶i ph¸p tèi ­u ®Ó thiÕt kÕ mét tõ ®iÓn. Trong phÇn nµy, chóng ta sÏ tõng b­íc thiÕt kÕ cô thÓ mét tõ ®iÓn nh­ thÕ vµ thªm c¸c tÝnh n¨ng cña tõ ®iÓn nh­: c¸c c«ng cô: tra tõ, liÖt kª nh÷ng tõ ®· tra, quay l¹i tõ ®· tra tr­íc ®ã, c¸c tÝnh n¨ng cËp nhËt tõ ®iÓn,...; c¸c khung tr¹ng th¸i, h­íng dÉn ng­êi dïng, gióp ®ì,... Ch­¬ng 1 Lùa chän phÇn mÒm ViÖc lùa chän, ¸p dông c«ng cô lËp tr×nh vµo thiÕt kÕ ch­¬ng tr×nh lµ mét trong nh÷ng vÊn ®Ò quan träng, cÇn c©n nh¾c kü l­ìng, v× nã ¶nh h­ëng rÊt lín ®Õn kh¶ n¨ng lµm viÖc còng nh­ hiÖu qu¶ ®¹t ®­îc cña c«ng viÖc. Trong lËp tr×nh m¸y tÝnh, sù lùa chän phÇn mÒm phô thuéc vµo kh¶ n¨ng hiÓu biÕt cña tõng ng­êi vµ c«ng cô ng­êi ®ã sö dông. Do ®ã, viÖc lùa chän phÇn mÒm ®Ó lËp tr×nh lµ mét b­íc ®Çu quan träng trong c«ng t¸c lËp tr×nh. C¸c c©u hái ®Æt ra lµ: phÇn mÒm cã l¹c hËu kh«ng ? Nã cã ®Çy ®ñ c«ng cô ®Ó thiÕt kÕ phÇn mÒm kh«ng ? N©ng cÊp ch­¬ng tr×nh cã dÔ dµng kh«ng... HiÖn nay, lËp tr×nh ®­îc c«ng nhËn lµ mét bé m«n khoa häc mµ viÖc n¾m v÷ng nã còng chÝnh lµ c¬ së, lµ c©u tr¶ lêi quyÕt ®Þnh cho sù thµnh c«ng cña ch­¬ng tr×nh. NÕu ph©n chia theo mÆt øng dông th× lËp tr×nh ®­îc chia thµnh hai lo¹i: lËp tr×nh hÖ thèng vµ lËp tr×nh øng dông. §Ó lËp tr×nh øng dông cã thÓ dïng ng«n ng÷ lËp tr×nh hoÆc phÇn mÒm øng dông. PhÇn mÒm hiÖn nay rÊt ®a d¹ng vµ ph¸t triÓn cao. Tõ c¸c ng«n ng÷ nh­ Pascal, C, C++,... ®Õn c¸c ng«n ng÷ lËp tr×nh trùc quan nh­ Visual Basic, Visual C, Visual Java,... TÊt c¶ nh÷ng ng«n ng÷ nµy ®Òu cã nh÷ng thÕ m¹nh riªng cña nã. Tuy nhiªn khi thiÕt kÕ tõ ®iÓn em ®· chän ng«n ng÷ lËp tr×nh Visual Basic trong m«i tr­êng Windows v× nã cã nh÷ng ­u ®iÓm sau: Nh÷ng ­u ®iÓm cña m«i tr­êng Windows vµ lËp tr×nh Visual Basic Visual Basic lµ phÇn mÒm ch¹y trong m«i tr­êng Windows víi giao diÖn ®­îc khai th¸c ë m«i tr­êng Windows. C¸c Giao diÖn ng­êi dïng ®å ho¹, hay GUI (Graphical User Interface) ®· c¸ch m¹ng hãa ngµnh c«ng nghiÖp vi tÝnh. Chóng minh häa cho c©u ng¹n ng÷ “H×nh ¶nh ®¸ng gi¸ ngµn lêi nãi” vÉn ®óng ®èi víi hÇu hÕt ng­êi dïng m¸y tÝnh. Thay v× dÊu nh¾c C:\> trong DOS tõng gÆp l©u nay, b©y giê ®­îc giíi thiÖu mét mµn h×nh víi ®Çy ®ñ c¸c c«ng cô, nh­ bµy ra trªn mÆt bµn, víi c¸c ch­¬ng tr×nh sö dông mouse vµ menu. C¸c øng dông Windows th­êng cã mét giao diÖn ng­êi dïng nhÊt qu¸n. Cã nghÜa lµ ng­êi dïng cã thÓ dµnh nhiÒu thêi gian h¬n ®Ó lµm chñ øng dông vµ Ýt mÊt thêi gian quan t©m ®Õn c¸c t¸c dông gâ phÝm trong c¸c menu vµ c¸c hép tho¹i. Cã thÓ nãi víi Visual Basic, viÖc lËp tr×nh d­íi Windows kh«ng chØ trë nªn hiÖu qu¶ h¬n mµ cßn lý thó h¬n. Nh­îc ®iÓm cña Visual Basic Visual Basic ®ßi hái mét cÊu h×nh m¸y kh¸ cao. Víi phiªn b¶n 6.0 ®ßi hái ph¶i cã mét chip líp Pentium (166 hay tèt h¬n), vµ Ýt nhÊt 16 MB RAM (vµ 32 MB míi thùc sù tèi thiÓu. Sù cµi ®Æt ®Çy ®ñ phiªn b¶n Visual Basic m¹nh nhÊt, b¶n Enterprise, cã thÓ ®ßi hái ®Õn h¬n 300 MB kh«ng gian ®Üa cøng. Ch­¬ng 2 ThiÕt kÕ giao diÖn chÝnh I. C¸c c«ng cô cña giao diÖn chÝnh Tr­íc hÕt chóng ta h×nh dung l¹i nh÷ng tõ ®iÓn ®· cã tr­íc ®©y nh­ tõ ®iÓn L¹c ViÖt, tõ ®iÓn tra cøu Anh - ViÖt, ViÖt - Anh trong English Study,... Tuy chóng cã kh¸c vÒ ng«n ng÷ nh­ng còng cÇn cã c¸c chøc n¨ng nh­ vËy ®Ó ®¸p øng ®­îc nhu cÇu ng­êi dïng tra cøu, cËp nhËt. (Xem h×nh 2-1) C¸c tõ ®iÓn ®· x©y dùng d­íi ®©y ®Òu tu©n theo c¸c chuÈn vÒ giao diÖn API vµ tÝnh tiÖn lîi cña ng­êi dïng. C¸c nót lÖnh H×nh 2-1. Giao diÖn chÝnh cña tõ ®iÓn C¸c nót lÖnh ®iÒu khiÓn, thao t¸c tra tõ trªn tõ ®iÓn 1. Nót lÖnh tra tõ (cmdReference) §Ó tra mét tõ ng­êi dïng cã thÓ nhËp tõ vµo hép tõ khãa sau ®ã nhÊn Enter hoÆc nhÊn vµo nót tra tõ, hoÆc ®óp ®«i chuét vµ tõ ®· liÖt kª trªn danh s¸ch, hoÆc chän tõ trªn danh s¸ch sau ®ã nhÊn vµo nót tra tõ. Nh­ vËy nót tra tõ nhÊn xuèng t­¬ng øng víi nhÊn Enter khi ta ®ang nhËp tõ vµo hép tra tõ, vµ còng t­¬ng øng víi ®óp ®«i chuét vµo danh s¸ch c¸c tõ khãa khi ta ®ang chän tõ trªn danh s¸ch. Ngoµi ra, nÕu ta ®ang ë trong danh s¸ch nh÷ng tõ ®· tra (xem nót lÖnh nh÷ng tõ ®· tra) th× sù kiÖn nót tra tõ ®­îc nhÊn còng chÝnh lµ quay trë vÒ tr¹ng th¸i tra tõ b×nh th­êng. Nh­ vËy ta sö lý sù kiÖn nót tra tõ ®­îc nhÊn nh­ sau, (xem H×nh 2.2) If T×m_thÊy_tõ then ®­a_kÕt_qu¶_ra_mµn_h×nh Else Th«ng_b¸o_lçi End If If ë_tr¹ng_th¸i_nh÷ng_tõ_®·_tra then vÒ_tr¹ng_th¸i_b×nh_th­êng Else Tra_tõ End If H×nh 2-2 ThuËt to¸n xö lý sù kiÖn nót tra tõ ®­îc nhÊn Tr¹ng_th¸i_nh÷ng_tõ_®·_tra lµ tr¹ng th¸i mµ danh s¸ch c¸c tõ khãa ®­îc thay b»ng danh s¸ch nh÷ng tõ ®· tra. §iÒu ®ã cã nghÜa lµ thuéc tÝnh Visible cña danh s¸ch tõ khãa ë tr¹ng th¸i Off, cña danh s¸ch nh÷ng tõ ®· tra ë tr¹ng th¸i On. Tr¹ng_th¸i_b×nh_th­êng lµ tr¹ng th¸i ng­îc l¹i víi tr¹ng th¸i trªn, tøc thuéc tÝnh Visible cña danh s¸ch tõ khãa ë tr¹ng th¸i On, cña danh s¸ch nh÷ng tõ ®· tra ë tr¹ng th¸i Off. Tra_tõ lµ mét hµm thùc hiÖn nhiÖm vô theo thuËt to¸n sau, (xem H×nh 2-3) H×nh 2-3. ThuËt to¸n m« t¶ hµm tra tõ Nh­ vËy ®o¹n m· cña sù kiÖn nót tra tõ ®­îc nhÊn (cmdReference_click) nh­ sau: Private Sub cmdReference_Click() If Not txtKey.Enabled Then txtKey.Enabled = True lstKey.Visible = True lstHistory.Visible = False Else txtKey.Text = lstKey.Text Call Translate End If End Sub 2. Nót lÖnh nh÷ng tõ ®· tra (cmdHistory) §Ó gióp ng­êi dïng biÕt ®­îc m×nh ®· tra nh÷ng tõ nµo vµ cã thÓ xem l¹i nÕu cÇn, ta ®­a vµo tõ ®iÓn mét nót lÖnh cmdHistory lµm chøc n¨ng liÖt kª nh÷ng tõ ®· tra. Nh­ vËy ®Ó biÕt ®­îc nh÷ng tõ ®· tra ta ph¶i cã mét danh s¸ch ®Ó l­u nã. Mçi khi tra tõ, ta kiÓm tra tõ ®ã cã tån t¹i trong danh s¸ch nh÷ng tõ ®· tra ch­a, nÕu ch­a ta bæ xung vµo chóng. Sù kiÖn nót lÖnh cmdHistory ®­îc nhÊn sÏ liÖt kª mét danh s¸ch nh÷ng tõ ®· tra ®· l­u ë trªn, ®ång thêi tõ ®iÓn sÏ kh«ng cho phÐp ng­êi dïng nhËp tõ cÇn tra vµo hép nhËp tõ mµ chØ cho phÐp chän mét trong nh÷ng tõ ®· tra ®Ó xem l¹i kÕt qu¶ hay nhÊn nót tra tõ ®Ó quay vÒ tr¹ng th¸i b×nh th­êng. Cô thÓ ta cã ®o¹n m· lÖnh cña sù kiÖn nót cmdHistory ®­îc nhÊn. Private Sub cmdHistory_Click() lstKey.Visible = False ‘Cho an danh sach tu khoa lstHistory.Visible = True ‘Cho hien danh sach History txtKey.Enabled = False ‘Khong cho phep nhap tu End Sub 3. Nót lÖnh quay lui (cmdBack) Mét chøc n¨ng n÷a gióp cho ng­êi dïng xem l¹i kÕt qu¶ cña tõ ®· tra kÕ tr­íc ®ã, tøc lµ quay lui tõ ®· tra võa råi. Ta l­u l¹i tÊt c¶ c¸c b­íc tra tõ, nghÜa lµ l­u c¸c tõ ®· tra theo thø tù thµnh mét danh s¸ch (lstBack). Kh¸c víi danh s¸ch nh÷ng tõ ®· tra ë trªn, ë ®©y danh s¸ch lstBack kh«ng ®­îc s¾p xÕp mµ chØ bæ xung ë cuèi, vµ khi bæ xung kh«ng cÇn kiÓm tra ®· cã trong danh s¸ch hay ch­a. Ta cßn cã thªm mét con trá ®Ó l­u vÞ trÝ quay lui. Khi tra tõ, danh s¸ch lstBack ®­îc bæ sung ë cuèi ®ång thêi con trá chØ ®Õn cuèi danh s¸ch. Khi quay lui, con trá sÏ gi¶m ®i mét cho ®Õn khi b»ng 0. Trong khi ®ang quay lui, nÕu ta tiÕp tôc tra th× danh s¸ch lstBack vÉn cø bæ sung ë cuèi ®ång thêi con trá l¹i quay l¹i cuèi danh s¸ch. Nh­ vËy, nÕu sù kiÖn nót lÖnh cmdBack ®­îc nhÊn liªn tiÕp sÏ lÇn l­îc gi¶m con trá ®i mét ®ång thêi lÊy tõ trong danh s¸ch lstBack, t¹i vÞ trÝ con trá ra ®Ó tra. Danh s¸ch lstBack ®­îc xãa (Reset) khi ta cËp nhËt tõ ®iÓn - thay ®æi, xãa - ®Ó tr¸nh lçi quay l¹i tõ kh«ng cã trong tõ ®iÓn. Gièng nh­ tõ ®iÓn L¹c ViÖt, do cã chøc n¨ng t×m l¹i nh÷ng tõ ®· tra nh­ ®· m« t¶ trªn nªn ta còng kh«ng cÇn thiÕt kÕ thªm nót lÖnh t×m tõ ®· tra sau ®ã (hay cßn gäi lµ quay tíi). C¸c nót lÖnh thao t¸c cËp nhËt tõ ®iÓn 4. Nót lÖnh thªm tõ vµo tõ ®iÓn (cmdAdd) V× mét tõ cã cÊu tróc kh¸ phøc t¹p nªn ta sÏ thiÕt kÕ mét giao diÖn cËp nhËt riªng (xÏ ®­îc tr×nh bµy sau). Cho nªn sù kiÖn nót cmdAdd ®­îc nhÊn sÏ gäi ®Õn Form cËp nhËt. 5. Nót lÖnh söa ®æi tõ trong tõ ®iÓn (cmdReplace) Còng nh­ nót lÖnh thªm tõ, muèn söa ®æi mét tõ trong tõ ®iÓn ta ph¶i ®­a cÊu tróc cña tõ ®ã lªn b»ng c¸ch t¸ch chóng ra thµnh tõng nghÜa vµ vÝ dô riªng biÖt, khi ®ã ta sÏ söa trªn tõng thµnh phÇn nµy lµm cho ng­êi dïng c¶m thÊy râ rµng, dÓ hiÓu h¬n. Tr­êng hîp thªm tõ vµ s÷a ®æi tõ lµ gièng nhau, chØ kh¸c lµ khi thªm tõ tÊt c¶ c¸c tr­êng trong Form cËp nhËt ®Òu trèng, cßn khi söa ®æi tõ c¸c tr­êng nµy ®­îc n¹p d÷ liÖu theo cÊu tróc cña tõ muèn thay ®æi. Nh­ vËy sù kiÖn nót cmdReplace ®­îc nhÊn còng t­¬ng tù nh­ khi thªm tõ, sÏ gäi ®Õn Form cËp nhËt ®ång thêi ®­a cÊu tróc cña tõ ®ã ®Ó Form cËp nhËt n¹p (Load) vµo c¸c tr­êng cña m×nh. Form cËp nhËt sÏ ®­îc tr×nh bµy sau. 6. Nót lÖnh xãa tõ (cmdRemove) Trong qu¸ tr×nh cËp nhËt tõ nÕu ng­êi dïng thÊy mét tõ nµo ®ã bÞ sai, cã thÓ xãa chóng ®i b»ng c¸ch chän tõ ®ã trªn danh s¸ch c¸c tõ khãa råi nhÊp vµo nót Remove sÏ xãa tõ ®ã trong ®èi t­îng tõ ®iÓn (Dictionary) ®ång thêi còng xãa trong danh s¸ch c¸c tõ khãa Nh­ vËy ®Ó xãa mét tõ, tr­íc hÕt ta ph¶i kiÓm tra tõ ®­îc chän xãa lµ tõ nµo. Khi kh«ng cã tõ nµo ®­îc chän th× danh s¸ch c¸c tõ khãa (lstKey) cã lstKey.ListIndex = -1, cßn khi cã tõ ®­îc chän th× lstKey.ListIndex sÏ nhËn gi¸ trÞ lµ vÞ trÝ dßng chän t­¬ng øng. LstKey.ListIndex sÏ nhËn gÝ trÞ tõ 0 ®Õn sè l­îng tõ trõ 1 (lstKey.ListCount - 1). Nh­ vËy sau khi xãa tõ trong danh s¸ch ta ph¶i ®Æt l¹i dßng chän. Vµ còng kh«ng lo¹i trõ tr­êng hîp khi kh«ng cßn tõ nµo trong danh s¸ch n÷a th× ng­ng kh«ng cho xãa tiÕp ®ång thêi kh«ng cho chøc n¨ng söa ®æi tõ ho¹t ®éng. Sau ®©u lµ ®o¹n m· cña sù kiÖn nót cmdRemove ®­îc nhÊn: Private Sub cmdRemove_Click() If lstKey.ListIndex -1 Then ‘Kiem tra tu co duoc chon khong temp = lstKey.ListIndex ‘Luu vi tri ban dau If lstKey.ListCount > 0 Then d.Remove (LCase(lstKey.Text)) ‘Xoa tu trong tu dien lstKey.RemoveItem (lstKey.ListIndex)’ Xoa tu trong ’ danh sach End If 'Dat lai dong chon If temp > 0 Then lstKey.Selected(temp - 1) = True Else: If lstKey.ListCount > 0 Then lstKey.Selected(0)=True End If If lstKey.ListCount = 0 Then cmdRemove.Enabled = False cmdReplace.Enabled = False End If Change = True End If End Sub 7. Nót lÖnh tho¸t (Exit) Khi tho¸t khái tõ ®iÓn, nÕu trong qu¸ tr×nh sö dông ng­êi dïng cã thay ®æi (thªm tõ, söa ®æi tõ, xãa tõ) th× tõ ®iÓn sÏ nh¾c nhë ng­êi dïng cã ghi l¹i kÕt qu¶ ®· söa ®æi hay kh«ng. Chän cã ®Ó ghi l¹i råi tho¸t, kh«ng ®Ó tho¸t kh«ng ghi l¹i, bá qua ®Ó bá qua kh«ng tho¸t. II. Tra tõ 1. C¸c ph­¬ng ¸n tra tõ Cã nhiÒu c¸ch ®Ó tra mét tõ (xem phÇn nót lÖnh tra tõ), tuy nhiªn c¸ch phæ biÕn nhÊt vÉn lµ nhËp tõ vµo hép nhËp tõ sau ®ã nhÊn Enter ®Ó tra. ë ®©y ta xÐt kü h¬n vÒ ph­¬ng ph¸p nµy. §Ó linh ho¹t trong viÖc tra tõ, viÖc nhËp vµo mét tõ ®Ó tra cã thÓ x¶y ra mét trong c¸c ph­¬ng ¸n sau: Ph­¬ng ¸n 1. Ng­êi dïng nhËp vµo ®Çy ®ñ mét tõ xong nhÊn Enter, tõ ®iÓn sÏ t×m trong danh s¸ch c¸c tõ khãa, nÕu cã sÏ ®­a ra kÕt qu¶, cßn kh«ng sÏ th«ng b¸o kh«ng t×m thÊy. ¦u ®iÓm: Thùc hiÖn nhanh v× trong qu¸ tr×nh nhËp tõ kh«ng cã sù t×m kiÕm tõ trong danh s¸ch, chØ khi kÕt thóc nhÊn Enter míi thùc hiÖn t×m kiÕm. Nh­îc ®iÓm: Ng­êi dïng ph¶i nhËp hÕt c¶ tõ míi tra, vµ trong qu¸ tr×nh nhËp ng­êi dïng kh«ng biÕt tõ ®ã ®· cã trong tõ ®iÓn hay ch­a, chØ khi nhÊn Enter. Tr­êng hîp nµy kh«ng phæ biÕn, g©y khã kh¨ng cho ng­êi nhËp. Ph­¬ng ¸n 2. Trong khi ng­êi dïng nhËp, nÕu tõ ®iÓn t×m thÊy cã tõ ®ã sÏ hiÖn s¸ng dßng chän t¹i danh s¸ch c¸c tõ khãa, cßn kh«ng th× sÏ kh«ng cã dßng chän s¸ng xuÊt hiÖn. ¦u ®iÓm: Cho ng­êi dïng biÕt ®­îc cã tõ cÇn t×m trong tõ ®iÓn hay kh«ng mµ kh«ng cÇn ph¶i nhÊn Enter míi biÕt. NÕu ng­êi dïng kh«ng thÊy cã dßng chän s¸ng trong danh s¸ch tõ khãa nghÜa lµ kh«ng cã tõ ®ã trong tõ ®iÓn. Nh­îc ®iÓm: Ng­êi dïng còng ph¶i ®¸nh hÕt tõ míi tra ®­îc. Tr­êng hîp nµy vÉn cßn g©y khã kh¨n. Ph­¬ng ¸n 3. NhËp tõ cÇn tra trong hép nhËp tõ. Mçi khi ng­êi dïng gâ vµo mét ký tù, danh s¸ch c¸c tõ sÏ tù ®éng cuén ®Õn ch÷ gièng víi néi dung ng­êi dïng gâ vµo nhÊt. ¦u ®iÓm: lµm cho ng­êi dïng dÔ dµng t×m ®Õn tõ cÇn t×m mµ kh«ng cÇn ®¸nh hÕt tõ, khi nµo thÊy dßng chän n»m trªn tõ cÇn tra lµ cã thÓ nhÊn Enter ®Ó tra. Tr­êng hîp nµy sÏ bá qua th«ng b¸o lçi kh«ng t×m thÊy tõ, nghÜa lµ nÕu kh«ng t×m thÊy tõ th× sÏ ®­a ra tõ gÇn víi tõ nhËp vµo nhÊt trong danh s¸ch tõ. Nh­îc ®iÓm: Lµm chËm thao t¸c gâ phÝm. Tuy nhiªn ph­¬ng ¸n nµy còng lµ ph­¬ng ¸n hay nhÊt mµ nhiÒu tõ ®iÓn ®· lÊy lµ mÆc ®Þnh. ë ®©y ta ®­a c¶ ba ph­¬ng ¸n vµo tõ ®iÓn ®Ó cho ng­êi dïng tù chän lùa. Trong ®ã, ph­¬ng ¸n thø ba vÉn lµ ph­¬ng ¸n hay nhÊt ®­îc lÊy lµm mÆc ®Þnh. Nh­ vËy ta sÏ cã mét c«ng t¾c chuyÓn ®æi gi÷a ba ph­¬ng ¸n nµy. Xem h×nh 2-2 Ph­¬ng ¸n 1 Ph­¬ng ¸n 2 Ph­¬ng ¸n 3 1 2 3 H×nh 2-2. M« h×nh chuyÓn ®æi ba ph­¬ng ¸n tra tõ §Ó m« t¶ c«ng t¾c chuyÓn ®æi ba ph­¬ng ¸n trªn ta thiÕt kÕ mét ®iÒu kiÓm h×nh ¶nh cã h×nh t­îng c©y viÕt. Khi c©y viÕt ®Ó ®øng ngßi viÕt lªn trªn hµm ý ta (cÊt viÕt) kh«ng sö dông chÕ ®é tù ®éng dß t×m (ph­¬ng ¸n 1). Khi c©y viÕt ®Ó ®øng, ngßi chóc xuèng hµm ý ta (sö dông viÕt) tù ®éng dß t×m tõ (ph­¬ng ¸n 3). Cßn khi c©y viÕt n»m ngang tøc n»m gi÷a hai ph­¬ng ¸n trªn (ph­¬ng ¸n 2). Khi nhÊp chuét vµo biÓu t­îng c©y viÕt nã sÏ chuyÓn ®æi vßng trßn theo ba ph­¬ng ¸n (3-2-1). MÆc ®Þnh lµ ph­¬ng ¸n 3 tøc c©y viÕt ®Ó ®øng. 2. XuÊt kÕt qu¶ (Hµm Translate) §Ó hiÓn thÞ tõ ®iÓn víi cÊu tróc nh­ mét file Word ta ph¶i xö lý chóng th«ng qua ®Þnh d¹ng file rtf (RichText Format) mµ trong Visual Basic ®ã lµ ®èi t­îng RichTextBox. Mçi ®èi t­îng cã hai tr­êng d÷ liÖu ®¸ng quan t©m lµ tr­êng v¨n b¶n (Text) vµ tr­êng m· ®Þnh d¹ng cho v¨n b¶n ®ã (TextRTF). VÝ dô ®Ó hiÓn thÞ dßng ch÷ “Dai hoc Da Nang” font = “.vnTime” size=14, mµu ®á ta ph¶i viÕt mét ®o¹n m· nh­ sau: {\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fprq2 .VnTime;}} {\colortbl\red0\green0\blue0;\red255\green0\blue0;} \deflang1033\pard\plain\f2\fs28\cf1 Dai hoc Da Nang \par } (Xem phô lôc 2 vÒ ý nghÜa cña c¸c m· rtf) Nh­ vËy nÕu d÷ liÖu ®­îc l­u ë d¹ng file m· rtf th× dung l­îng sÏ rÊt lín do ®ã qu¸ tr×nh n¹p d÷ liÖu sÏ chËm. §Ó kh¾c phôc vÊn ®Ò nµy ta chØ l­u d÷ liÖu ë d¹ng file v¨n b¶n tøc chØ l­u dßng “Dai hoc Da Nang”. Trªn ®ã ta qui ®Þnh thªm c¸c tab ®Þnh d¹ng riªng. Khi ®ã ta sÏ xö lý trªn v¨n b¶n nµy, chØ khi nµo muèn hiÓn thÞ th«ng tin ra mµn h×nh míi chuyÓn file v¨n b¶n ®ã thµnh m· rtf. §iÒu nµy cã nghÜa lµ ta chØ thay c¸c tab ®ã thµnh c¸c ®o¹n m· ®Þnh d¹ng t­¬ng øng. C¸c tab ®Þnh d¹ng ®­îc qui ®Þnh nh­ ë b¶ng d­íi Tab §o¹n m· thay thÕ Gi¶i thÝch “$” "\par \plain\li500\f4\fs24\cf2 " B¾t ®Çu mét nghÜa “#” "\par \plain\li0\f3\fs24\cf1\i " B¾t ®Çu mét vÝ dô “^” "\plain\f4\fs24\cf3 " B¾t ®Çu ®¸nh dÊu ®á “~” "\plain\li0\f3\fs24\cf1\i " KÕt thóc ®¸nh dÊu ®á thong gi¶i thÝch “`” "\plain\f4\fs24\cf2 " KÕt thóc ®¸nh dÊu ®á trong vÝ dô Chr(13) "\par " Xuèng dßng Víi b¶ng font vµ b¶ng mµu ®­îc ®Þnh nghÜa qua ®o¹n m·: "{\rtf1\ansi\deff0\deftab720 {\fonttbl {\f0\fswiss MS Sans Serif;} {\f1\froman\fcharset2 Symbol;} {\f2\fswiss MS Sans Serif;} {\f3\fswiss .VnCourier;} {\f4\fswiss .VnTeknical;} {\f5\fswiss .VnTimeH;}} {\colortbl \red0\green0\blue0; \red0\green0\blue255; \red0\green120\blue120; \red255\green0\blue0;} \deflang2057\pard \par }" §Ó biÕt thªm chi tiÕt ý nghÜa cña c¸c tab ®Þnh d¹ng v¨n b¶n trªn xin xem phÇn cÊu tróc file RTF. NhiÖm vô cña hµm Translate lµ lÊy tõ trong hép nhËp tõ, t×m nã trong danh s¸ch tõ nÕu cã sÏ ®­a ra kÕt qu¶, cßn kh«ng sÏ th«ng b¸o lçi kh«ng t×m thÊy. Nh­ vËy c«ng viÖc cña hµm Translate lµ: Tr­íc hÕt, lo¹i bá c¸c dÊu (“.”, “,”, “:”, “!”,...) cã trong tõ nhËp vµo. Sau ®ã, kiÓm tra cã tån t¹i mét tõ nh­ vËy trong tõ ®iÓn kh«ng. NÕu cã, c¸c viÖc ph¶i lµm: - hiÖn dßng chän s¸ng lªn tõ ®ã trong danh s¸ch tõ - CËp nhËt tõ ®ã vµo danh s¸ch quay lui (lstBack) (xem phÇn nót lÖnh quay lui) - KiÓm tra trong danh s¸ch nh÷ng tõ ®· tra, nÕu ch­a tån t¹i mét tõ nh­ vËy th× bæ xung vµo danh s¸ch nh÷ng tõ ®· tra. - Thay tÊt c¶ c¸c tab ®Þnh d¹ng thµnh c¸c ®o¹n m· ®Þnh d¹ng nh­ b¶ng trªn. - HiÓn thÞ th«ng tin b»ng c¸ch dïng m·. M· cña th«ng tin hiÓn thÞ bao gåm phÇn ®Þnh nghÜa b¶ng font vµ b¶ng mµu ë trªn sau ®ã lµ phÇn m· ®· ®­îc thay thÕ c¸c tab ë b­íc kÕ trªn. Sau ®©y lµ néi dung toµn bé hµm Translate Public Sub Translate() txtKey.Text = Trim(txtKey.Text) txtKey.Text = Replace(txtKey.Text, ".", "") txtKey.Text = Replace(txtKey.Text, ",", "") txtKey.Text = Replace(txtKey.Text, ":", "") txtKey.Text = Replace(txtKey.Text, ";", "") txtKey.Text = Replace(txtKey.Text, "!", "") txtKey.Text = Replace(txtKey.Text, "?", "") txtKey.Text = Replace(txtKey.Text, """", "") temp$ = LCase(txtKey.Text) If d.Exists(temp$) Then i = 0 Do While i < lstKey.ListCount And StrComp(txtKey.Text, lstKey.List(i), vbTextCompare) > 0 i = i + 1 Loop If i = lstKey.ListCount Then i = i - 1 lstKey.Selected(i) = True 'Dua con tro ve vi tri cua tu ReDim Preserve B(BCount) As String cmdHistory.Enabled = True cmdReplace.Enabled = True If BCount > 0 Then cmdBack.Enabled = True End If Current = lstKey.ListIndex ‘dnh dau tu dang tra ‘Bo sung tu vao danh sach quay lui B(BCount) = Str(Current) & "/" & lstKey.Text BCurrent = BCount ‘Dua con tro Back den cuoi danh sach BCount = BCount + 1 ‘Bo sung tu vao danh sach nhung tu da tra If lstHistory.ListCount = 0 Then lstHistory.AddItem (txtKey.Text) ReDim Preserve H(0) As Integer H(0) = lstKey.ListIndex Else kt = False For i = 0 To lstHistory.ListCount - 1 If StrComp(txtKey.Text, lstHistory.List(i)) = 0 Then kt = True Next i If Not kt Then lstHistory.AddItem (txtKey.Text) ReDim Preserve H(lstHistory.ListCount - 1) As Integer H(lstHistory.ListCount - 1) = lstKey.ListIndex End If End If ‘Hien thi thong tin rtbEntry.TextRTF = "{\rtf1\ansi\deff0\deftab720 {\fonttbl {\f0\fswiss MS Sans Serif;} {\f1\froman\fcharset2 Symbol;} {\f2\fswiss .VnTimeH;}} {\colortbl \red0\green0\blue0; \red255\green0\blue0;} \deflang2057\pard " & "\plain\qr\f2\fs32\cf1\b " & txtKey.Text & " \par }" temp$ = d.Item(temp$) temp$ = Replace(temp$, "|", """") temp$ = Replace(temp$, "^", "\plain\f4\fs24\cf3 ") temp$ = Replace(temp$, "`", "\plain\f4\fs24\cf2 ") temp$ = Replace(temp$, "~", "\plain\li0\f3\fs24\cf1\i ") temp$ = Replace(temp$, Chr(13), " \par ") temp$ = Replace(temp$, "#", "\par \plain\li0\f3\fs24\cf1\i ") temp$ = Replace(temp$, "$", "\par \plain\li500\f4\fs24\cf2 ") rtbItem.TextRTF = "{\rtf1\ansi\deff0\deftab720 {\fonttbl {\f0\fswiss MS Sans Serif;} {\f1\froman\fcharset2 Symbol;} {\f2\fswiss MS Sans Serif;} {\f3\fswiss .VnCourier;} {\f4\fswiss .VnTeknical;} {\f5\fswiss .VnTimeH;}} {\colortbl \red0\green0\blue0; \red0\green0\blue255; \red0\green120\blue120; \red255\green0\blue0;} \deflang2057\pard " & temp$ & " \par }" Else Form3.Show vbModal, Me End If End Sub Ch­¬ng 3 ThiÕt kÕ giao diÖn cËp nhËt §Ó râ rµng cho ng­êi dïng khi cËp nhËt ta t¸ch mét tõ ra thµnh tõng thµnh phÇn riªng biÖt cña nã. Mét tõ cã c¸c thµnh phÇn sau: - Tõ khãa ®Ó nhËn d¹ng tõ. §­îc l­u trong mét RichTextBox. - Gi¶i thÝch bao gåm nhiÒu nghÜa, mçi nghÜa l¹i cã vÝ dô kÌm theo. Do sè l­îng c¸c nghÜa lµ kh«ng cè ®Þnh vµ kh«ng giíi h¹n, nªn ta cã thÓ dïng mét danh s¸ch ®Ó l­u c¸c nghÜa theo kiÓu chØ sè (nghÜa 1, nghÜa 2,...). Mçi nghÜa l¹i chia ra thµnh hai phÇn gi¶i thÝch vµ vÝ dô. Hai phÇn nµy ®­îc ®­a ra trong hai RichTextBox. Nh­ vËy ta cÇn cã c¸c c«ng cô sau: (Xem h×nh 2-4) C¸c c«ng cô H×nh 2-4. Giao diÖn cËp nhËt cña tõ ®iÓn 1. Nót lÖnh thªm nghÜa Qu¸ tr×nh nhËp mét tõ bao gåm: tr­íc tiªn, nhËp tõ khãa tøc tªn cña tõ ®ã. Sau ®ã, nhËp c¸c nghÜa vµ vÝ dô b»ng c¸ch nhÊn vµo nót thªm nghÜa. Khi ®ã, tõ ®iÓn xÏ thùc hiÖn c¸c ®éng t¸c sau: - L­u nghÜa tr­íc ®ã nÕu cã. - §­a tªn nghÜa (nghÜa 1, nghÜa 2,...) míi vµo danh s¸ch nghÜa. - §­a ra hai hép RichTextBox trèng ®Ó nhËp nghÜa vµ vÝ dô míi. Víi nghÜa ®Çu tiªn sÏ tù ®éng ®­a ra, nghÜa lµ nÕu tõ ®ã chØ cã mét nghÜa th× ta sÏ kh«ng nhÊn vµo nót thªm nghÜa. Sau ®©u lµ ®o¹n m· cña sù kiÖn nót thªm nghÜa ®­îc nhÊn: Private Sub cmdPlus_Click() ‘Luu nghia truoc do temp = lstMean.ListIndex + 1 If d1.Exists(Str(temp)) Then d1.Remove (Str(temp)) d1.Add Str(temp), rtbMean.Text & "$" & rtbExam.Text ‘Dua them nghia moi vao lstMean.AddItem ("NghÜa" & Str(lstMean.ListCount + 1)) lstMean.Selected(lstMean.ListCount - 1) = True ‘Dua ra hai hop trong rtbMean.Text = "" rtbExam.Text = "" If Not cmdMinus.Enabled Then cmdMinus.Enabled = True rtbMean.Enabled = True rtbMean.SetFocus End Sub 2. Nót xãa nghÜa Nót xãa nghÜa ®­îc thiÕt kÕ nh»m gióp ng­êi dïng lo¹i bá nghÜa khi nhËp sai, hoÆc c¶m thÊy kh«ng cÇn thiÕt. Khi xãa mét nghÜa cã nghÜa lµ ta xãa phÇn m« t¶ nghÜa vµ vÝ dô vÒ nghÜa ®ã. §ång thêi trong danh s¸ch c¸c nghÜa, tÊt c¶ c¸c nghÜa tr­íc nghÜa bÞ xãa ®­îc gi÷ nguyªn. TÊt c¶ c¸c nghÜa ®»ng sau nghÜa bÞ xãa ®­îc dêi lªn mét ®¬n vÞ (nghÜa lµ nÕu tr­íc ®ã lµ NghÜa 4 th× b©y giê sÏ lµ NghÜa 3). Ta cã ®o¹n m· m« t¶ nót xãa nghÜa ®­îc nhÊn nh­ sau: Private Sub cmdMinus_Click() temp = lstMean.ListIndex If lstMean.ListCount > 0 Then ‘Co nghia duoc chon If d1.Exists(Str(lstMean.ListIndex + 1)) Then d1.Remove (Str(lstMean.ListIndex + 1)) End If lstMean.RemoveItem (lstMean.ListIndex) End If i = temp + 2 Do While i <= lstMean.ListCount + 1 lstMean.List(i - 2) = "NghÜa " + Str(i - 1) If d1.Exists(Str(i)) Then st$ = d1.Item(Str(i)) d1.Remove (Str(i)) d1.Add Str(i - 1), st$ End If i = i + 1 Loop If temp > 0 Then lstMean.Selected(temp - 1) = True Else: If lstMean.ListCount > 0 Then lstMean.Selected(0) = True End If End If Call LoadMean If lstMean.ListCount = 0 Then ‘Khong con nghia nao ca cmdMinus.Enabled = False rtbMean.Enabled = False rtbExam.Enabled = False End If End Sub 3. Nót ®¸nh dÊu tõ, vµ tù ®éng ®¸nh dÊu tõ Trong tõ ®iÓn, cã nh÷ng tõ kh¸c nhau nh­ng cã nghÜa gièng nhau nh­ tõ “hÌn chi”, “hÌn g×”, “hÌn nµo”,... khi ®ã ta chØ cÇn nhËp nghÜa cña mét tõ (vÝ dô tõ “hÌn chi”) cßn nh÷ng tõ kh¸c sÏ trá ®Õn tõ ®· nhËp nghÜa, tøc nghÜa cña chóng sÏ cã d¹ng “xem ...” hay “cã nghÜa nh­...” (vÝ dô tõ “hÌn g×” cã nghÜa lµ “xem hÌn chi”). Nh­ vËy tõ tõ “hÌn chi” trong c©u “xem hÌn chi” cÇn ®­îc ®¸nh dÊu ®Ô râ rµng vµ gióp ng­êi dïng trá ®Õn tõ “hÌn chi” ®Ó xem kÕt qu¶ (®­îc tr×nh bµy trong phÇn tr­íc). ViÖc ®¸nh dÊu mét tõ ë ®©y ta qui ®Þnh lµ mµu ®á. §Ó khái tèn thªm mét nót xãa ®¸nh dÊu, ta qui ®Þnh nót ®¸nh dÊu lµm chøc n¨ng ®¶o mµu. NghÜa lµ nÕu v¨n b¶n ®­îc chän cã mµu b×nh th­êng (xanh) th× nót ®¸nh dÊu cã chøc n¨ng ®æi thµnh mµ chän (®á). Ng­îc l¹i, nÕu v¨n b¶n ®¸nh dÊu cã mµu chän (®á), th× nót ®¸nh dÊu cã chøc n¨ng ®æi thµnh mµu b×nh th­êng. ViÖc ®¸nh dÊu tõ cßn ®­îc sö dông trong tr­êng hîp lµm râ tõ mµ vÝ dô ®· sö dông. Tõ nµy th­êng lµ tõ khãa, nªn ta sÏ thiÕt kÕ mét nót tù ®éng ®¸nh dÊu tÊt c¶ c¸c tõ kho¸ cã trong phÇn gi¶i thÝch. §iÒu nµy sÏ gióp ng­êi dïng ®¬n gi¶n h¬n trong viÖc nhËp dù liÖu, tuy nhiªn còng cã mét sè tõ kh«ng ®­îc ®¸nh dÊu (tõ kh¸c vÒ ch÷ in hoa in th­êng) nh­ng ta cã thÓ hiÖu chØnh l¹i b»ng c¸ch dïng nót ®¸nh dÊu b×nh th­êng. 4. Nót sao l­u kÕt qu¶ vµ tho¸t L­u kÕt qu¶ cña mét tõ lµ mét h×nh thøc ng­îc l¹i víi viÖc t¸ch mét tõ ra ®Ó söa ®æi. ë ®©y chóng ta gép tÊt c¶ c¸c nghÜa vµ vÝ dô cña tõ l¹i vµ ®­a vµo ®èi t­îng tõ ®iÓn råi trë vÒ giao diÖn chÝnh. §Ó tr¸nh tr­êng hîp tõ nhËp vµo lµ tõ trèng, ta sÏ kh«ng cho phÐp ghi l¹i kÕt qu¶. NÕu ta nhÊn nót tho¸t sÏ kh«ng ghi l¹i kÕt qu¶. KÕt qu¶ demo I. Cµi ®Æt ch­¬ng tr×nh: - ChuÈn bÞ ch­¬ng tr×nh gi¶ sö n»m ë th­ môc C:\VTD - Tõ menu Start, môc Run gâ: C:\VTD\SETUP - råi nhÊn Enter - Theo chØ dÉn cña ch­¬ng tr×nh cµi ®Æt, quy ®Þnh æ ®Üa vµ th­ môc cÇn cµi ch­¬ng tr×nh. II. Ch¹y ch­¬ng tr×nh: - Tõ Start chän: Start\Programs\Vietnamese Tools\Vietnamese Tools nh­ h×nh d­íi: SÏ xuÊt hiÖn giao diÖn chÝnh nh­ sau: Sö dông ch­¬ng tr×nh Tõ ®iÓn tõ c«ng cô tiÕng ViÖt C¸ch sö dông ChuyÓn ®æi chÕ ®é cuén NhËp tõ cÇn tra vµo ®©y BËc t¾t chÕ ®é tiÕng ViÖt Tõ ®ang xem H­íng dÉn trùc tiÕp Danh môc c¸c tõ cã trong tõ ®iÓn C¸c nót c«ng cô cña ch­¬ng tr×nh - Tõ menu Tõ ®iÓn chän Tõ ®iÓn tõ c«ng cô tiÕng ViÖt nh­ h×nh trªn sÏ xuÊt hiÖn tõ ®iÓn nh­ sau: Danh môc tõ trong tõ ®iÓn ®­îc liÖt kª ë bªn tr¸i cöa sæ. NhËp tõ cÇn tra trong khung nhËp bªn trªn danh môc tõ. Mçi khi ta gâ mét ký tù, danh môc tõ tù ®éng cuén ®Õn ch÷ gièng víi néi dung ta gâ vµo nhÊt. Thao t¸c nµy cã thÓ lµm chËm ®éng t¸c gâ. Ta cã thÓ click mouse vµo c©y bót ë bªn tr¸i khung nhËp ®Ó t¾c chÕ ®é nµy. C©y bót ë tr¹ng th¸i lµ ë chÕ ®é tù ®éng cuén ®Õn tõ gÇn víi tõ gâ vµo nhÊt, c©y bót ë tr¹ng th¸i lµ ë chÕ ®é cuén khi gâ ®óng tõ cã trong tõ ®iÓn, c©y bót ë tr¹ng th¸i lµ t¾c chÕ ®é ®ã. Sau khi nhËp tõ cÇn tra xong, bÊm Enter ®Ó tra nghÜa hoÆc bÊm vµo nót . §Ó ®¸nh ®­îc tiÕng ViÖt ta cho nót bËc t¾t chÕ ®é tiÕng ViÖt ë tr¹ng th¸i bËc , ®Ó t¾c chÕ ®é tiÕng ViÖt ta bÊm vµo nót nµy ®Ó chuyÓn sang tr¹ng th¸i t¾t . Ta cã thÓ double click vµo tõ trong danh môc ®Ó tra nghÜa cña tõ ®ã. NghÜa cña tõ ®­îc tra thÓ hiÖn ë bªn ph¶i cöa sæ cïng víi vÝ dô. Cã thÓ click mouse vµo c¸c tõ ®¸nh dÊu ®á ë cöa sæ bªn ph¶i ®Ó xem (tra) nghÜa cña c¸c tõ nµy. C¸c nót c«ng cô cña ch­¬ng tr×nh Nót ®Ó tra tõ ®­îc nhËp trong khung nhËp bªn trªn. Nót ®Ó liÖt kª nh÷ng tõ ®· tra, ta cã thÓ chän mét trong c¸c tõ nµy ®Ó xem l¹i kÕt qu¶. Nót ®Ó quay trë vÒ tõ ®­îc tra tr­íc ®ã. Nót ®Ó thªm tõ vµo tõ ®iÓn nh­ ®­îc tr×nh bµy d­íi ®©y. Nót ®Ó söa ®æi tõ võa míi tra trong tõ ®iÓn nh­ ®­îc tr×nh bµy ë d­íi. Nót ®Ó xãa mét tõ trong tõ ®iÓn b»ng c¸ch chän tõ cÇn xãa trong danh môc c¸c tõ xong bÊm vµo nót nµy. Nót ®Ó tho¸t ch­¬ng tr×nh, nÕu cã thay ®æi (söa, xãa) vÒ d÷ liÖu ch­¬ng tr×nh sÏ hái ng­êi dïng cã muèn ghi l¹i kÕt qu¶ hay kh«ng. CËp nhËt d÷ liÖu Söa tõ ®iÓn Ta cã thÓ söa ch÷a, thªm nghÜa hay ®Þnh d¹ng l¹i c¸c môc tõ trong tõ ®iÓn b»ng c¸ch: Tra tõ cÇn söa ch÷a. BÊm vµo nót söa ®æi tõ sÏ xuÊt hiÖn giao diÖn cËp nhËt d­íi ®©y. Cöa sæ nhËp nghÜa Cöa sæ nhËp tõ Cöa sæ nhËp vÝ dô BËc t¾t tiÕng ViÖt Danh môc c¸c nghÜa Click mouse vµo tõng nghÜa trong danh môc c¸c nghÜa cña tõ ®Ó xem vµ söa ®æi c¸c nghÜa t­¬ng øng. Lóc nµy ta sÏ söa ®æi tõ vµ c¸c nghÜa trong c¸c cöa sæ cña nã. Cã thÓ bËc t¾t tiÕng ViÖt b»ng c¸ch bÊm vµo nót . C¸c nót c«ng cô cña giao diÖn cËp nhËt: Nót ®Ó thªm nghÜa. Khi bÊm vµo nót nµy, trong danh môc c¸c nghÜa sÏ chÌn thªm mét nghÜa ë cuèi ®ång thêi ®­a ra hai cöa sæ nghÜa vµ vÝ dô trèng ®Ó ta nhËp vµo. Nót ®Ó xãa nghÜa. Ng­îc l¹i víi nót thªm nghÜa, khi ta bÊm vµo nót nµy, nghÜa ®ang chän sÏ bÞ xãa ®ång thêi c¸c nghÜa sÏ ®­îc ®Æt tªn l¹i cho ®óng thø tù. Nót ®Ó ®¸nh dÊu (®æi thµnh mµu ®á) tõ cÇn gi¶i thÝch trong cöa sæ nghÜa vµ vÝ dô. §Ó ®¸nh dÊu mét tõ, ta quÐt chän tõ ®ã xong bÊm vµo nót nµy. Ta còng cã thÓ sö dông nót nµy ®Ó xãa chän nÕu vïng chän ®· ®­îc ®¸nh dÊu. Nót tù ®éng dß t×m ®Ó ®¸nh dÊu tõ khãa ®· sö dông trong vÝ dô. Nót ®Ó ghi l¹i kÕt qu¶ ®· thay ®æi. Nót ®Ó tho¸t ch­¬ng tr×nh. Thªm tõ míi Ta cã thÓ thªm môc tõ míi vµo tõ ®iÓn b»ng c¸ch: BÊm nót thªm tõ . Ch­¬ng tr×nh sÏ hiÖn ra giao diÖn cËp nhËt nh­ trªn víi tÊt c¶ c¸c tr­êng ®Òu trèng. Ta tiÕp tôc nhËp nghÜa cho tõ trong cöa sæ gièng nh­ c¸ch söa tõ ®iÓn Ngoµi ra bé c«ng cô tiÕng ViÖt cßn ®­îc thiÕt kÕ thªm: - Tõ ®iÓn tiÕng ViÖt. - Tõ ®iÓn thµnh ng÷ tôc ng÷. - Tõ ®iÓn danh ng«n thÕ giíi. - Sæ tay v¨n häc §©y lµ phÇn më réng cña ®Ò tµi sÏ kh«ng ®­îc tr×nh bµy ë ®å ¸n nµy. KÕT LUËN Sau thêi gian nghiªn cøu, t×m hiÓu ®Ó thùc hiÖn ®å ¸n tèt nghiÖp, ®­îc sù h­íng dÉn nhiÖt t×nh cña thÇy gi¸o TS. Phan Huy Kh¸nh, em ®· hoµn thµnh ®Ò tµi cña m×nh - ®Ò tµi thiÕt kÕ tõ ®iÓn tõ c«ng cô tiÕng ViÖt - ®óng thêi h¹n. VÒ mÆt lý thuyÕt còng nh­ ch­¬ng tr×nh, em ®· c¬ b¶n thiÕt kÕ xong tõ ®iÓn tõ c«ng cô tiÕng ViÖt cho phÐp tra cøu tõ tiÕng viÖt, cËp nhËt d÷ liÖu trªn m¸y tÝnh. Ngoµi ra em ®· ph¸t triÓn ch­¬ng tr×nh thµnh mét bé c«ng cô tiÕng ViÖt b»ng c¸ch ®­a thªm mét sè tõ ®iÓn nh­: - Tõ ®iÓn tiÕng ViÖt. - Tõ ®iÓn thµnh ng÷ tôc ng÷. - Tõ ®iÓn danh ng«n thÕ giíi. - Sæ tay v¨n häc. ¦u ®iÓm cña ph­¬ng ph¸p lµ tõ ®iÓn ho¹t ®éng kh«ng phô thuéc vµo m· ph«ng ch÷ tiÕng ViÖt ®ang sö dông vµ kh«ng phô thuéc vµo øng dông hiÖn hµnh, Tõ ®iÓn còng ®­îc thiÕt kÕ theo h­íng më nh»m phôc vô cho c¸c øng dông kh¸c sau nµy. VÒ phÝa ng­êi dïng: tõ ®iÓn dÓ cµi ®Æt (install) vµ gì bá (uninstall), cho phÐp cËp nhËt d÷ liÖu dÔ dµng b»ng c¸ch t¸ch rêi c¸c nghÜa vµ vÝ dô t­¬ng øng, giao diÖn ng­êi dïng hîp lý, gÇn gñi, dÓ sö dông hæ trî c¶ phÇn ®¸nh tiÕng ViÖt. Tuy nhiªn, bªn c¹nh ®ã vÉn cßn mét sè h¹n chÕ nh­: tèc ®é xö lý cßn chËm, ch­a ®­a ©m thanh vµ h×nh ¶nh vµo tõ ®iÓn, vÒ tiÕng ViÖt míi chØ hæ trî ®¸nh tiÕng ViÖt theo kiÓu Telex cò (bá dÊu ngay sau tõ). Nh­ vËy, ®Ó ®­a ®Ò tµi vµo øng dông thùc tÕ, ta cÇn ph¶i kh¾c phôc nh÷ng h¹n chÕ trªn. Phô lôc 1 Giíi thiÖu c¸c Font m· tiÕng ViÖt 1. Font m· 1 byte Lµ lo¹i font cã c¸c con ch÷ ®­îc thiÕt kÕ tõ tr­íc nªn ®Ñp h¬n font ch÷ 2 byte vµ font ch÷ tæ hîp, tuy nhiªn do tiÕng ViÖt cã 146 ký tù ViÖt nªn kh«ng ®ñ chç trong b¶ng m· 8 bit lµ b¶ng m· cã 256 ký tù víi 128 ký tù chuÈn kh«ng ®­îc phÐp x©m ph¹m th× cßn 128 ký tù më réng kh«ng ®ñ cho 146 ký tù ViÖt do ®ã buéc ph¶i x©m ph¹m c¸c ký tù ®iÒu khiÓn hoÆc chØ thÓ hiÖn ch÷ ViÖt th­êng (kh«ng viÕt hoa) tøc lµ chØ cÇn 1 nöa (73) ký tù, cßn ch÷ Hoa sÏ ®­îc thÓ hiÖn b»ng font kh¸c th­êng cã ®u«i lµ H hoÆc U, nh­ vËy ch÷ hoa vµ ch÷ th­êng cã m· gièng nhau, chØ kh¸c nhau vÒ tªn Font. Nh­îc ®iÓm n÷a cña Font 1 Byte lµ kho¶ng c¸ch gi÷a ch÷ hoa vµ ch÷ th­êng kh«ng ph¶i lµ 32 nªn kh«ng thÓ dïng c¸c tÝnh n¨ng Capitalize ®Ó chuyÓn ch÷ hoa vµ ch÷ th­êng trong c¸c tr×nh so¹n th¶o v¨n b¶n. C¸c ch÷ ViÖt kh«ng thÓ hiÖn ®­îc hÕt trong cïng 1 font ch÷. ViÖc ®æi ch÷ hoa vµ ch÷ th­êng t­¬ng ®èi phøc t¹p (chän l¹i font). 2. Font m· 2 byte Lµ lo¹i font ghÐp, mét sè con ch÷ ViÖt sÏ ®­îc biÓu hiÖn b»ng 2 bytes, byte ®Çu tiªn lµ c¸c con ch÷ trong b¶ng ch÷ c¸i tiÕng Anh, byte thø 2 lµ dÊu. V× tiÕng ViÖt chØ cã 5 dÊu nªn font nµy cÇn rÊt Ýt m· më réng ®Ó thÓ hiÖn tiÕng ViÖt v× vËy cã thÓ biÓu diÔn ®­îc c¶ ch÷ hoa vµ ch÷ th­êng trong cïng 1 font ch÷. Do chØ cÇn Ýt m· ®Ó thÓ hiÖn ch÷ ViÖt nªn font nµy th­êng tu©n thñ kho¶ng c¸ch gi÷a ch÷ hoa vµ ch÷ th­êng lµ 32 do ®ã cã thÓ sö dông ®­îc c¸c tÝnh n¨ng Capitalize. Font 2 byte ®­îc thùc hiÖn nhê kh¶ n¨ng cã ®é réng ©m cña font ch÷ TrueType ®Ó chËp 2 ch÷ tiÕng Anh vµ dÊu tiÕng ViÖt thµnh mét ch÷ (thùc chÊt lµ 2 ký tù) nªn 1 con ch÷ ViÖt th«ng th­êng muèn xo¸ ph¶i xo¸ 2 lÇn, 1 lÇn cho dÊu, 1 lÇn cho ch÷ gèc. 3. Font m· tæ hîp T­¬ng tù nh­ Font 2 byte, c¸c ch÷ ViÖt lµ tæ hîp ghÐp l¹i gi÷a ch÷ c¸i tiÕng Anh vµ dÊu tiÕng ViÖt, qu¸ tr×nh nµy ®­îc thùc hiÖn ngay lóc gâ vµ ®­îc thùc hiÖn bëi c¸c tr×nh qu¶n lý font riªng biÖt, hiÖn chØ ®­îc cµi ®Æt trªn Windows 95 Vietnamese vµ hÖ ®iÒu hµnh AIX cña IBM. M· tæ hîp cÇn rÊt Ýt m· më réng, do chØ dïng 1 m· cho c¸c dÊu (huyÒn, s¾c, hái, ng·, nÆng) cho tÊt c¶ ch÷ th­êng, ch÷ hoa, ch÷ cã dÊu mò, dÊu tr¨ng kh¸c víi Font 2 Byte th«ng th­êng riªng tõng dÊu (huyÒn, s¾c, hái, ng·, nÆng) cã nhiÒu m· cho c¸c ch÷ kh¸c nhau. M· tæ hîp gi¶i quyÕt mét c¸ch chän vÑn bµi to¸n t×m kiÕm vµ ®¸nh chØ sè (Index) tiÕng ViÖt, tuy nhiªn kü thuËt tæ hîp Font t­¬ng ®èi phøc t¹p nªn hiÖn ch­a cã trong c¸c hÖ ®iÒu hµnh kh¸c. 4. Font ABC m· TCVN3 - 5712 Lµ lo¹i font 1 Byte ®­îc dïng hÇu hÕt t¹i c¸c tØnh khu vùc phÝa B¾c vµ Hµ néi. Font nµy tu©n thñ theo b¶ng m· chuÈn quèc gia TCVN 5712 ®­îc ph¸t hµnh n¨m 1993 vµ ®­îc khuyÕn c¸o dïng trong khèi c¬ quan nhµ n­íc. HiÖn nay c¸c m¹ng lín t¹i ViÖt nam (M¹ng Netnam, TTVN, ViNet...) ®Òu sö dông Font ABC, §©y lµ mét trong nh÷ng font ch÷ cã thÓ ®­îc cµi ®Æt c¶ trong m«i tr­êng DOS, Windows vµ MacIntosh, Unix. Tuy nhiªn m· TCVN 5712 chiÕm mÊt 2 ký tù quan träng trong chÕ b¶n ®iÖn tö lµ m· 182 (·) (hiÓn thÞ dÊu trèng) vµ 183 (¶) (hiÓn thÞ dÊu ng¾t ®o¹n) vµ trong MS Word chiÕm mÊt ký tù ®iÒu khiÓn lµ 172 (¬). Ngoµi ra TCVN còng chiÕm mÊt mét sè ký tù hay dïng kh¸c nh­ dÊu (c) copyright, dÊu (tm) Trade Mark. TCVN còng chiÕm nhiÒu m· ®iÒu khiÓn cña Ventura nªn kh«ng thÓ dïng TCVN lµm chÕ b¶n b»ng ch­¬ng tr×nh nµy.. C¸c nh­îc ®iÓm nµy còng th­êng gÆp víi ®a sè c¸c bé Font 1 Byte ( trõ VietKey). Font ABC th­êng b¾t ®Êu b»ng dÊu chÊm vµ 2 ch÷ Vn: .Vn(xxxx).ttf, font ch÷ hoa kÕt thóc b»ng ch÷ H.. VÝ dô: .Vntime, .VnTimeH, .Vnarial, .VnArialH.. Font ABC cã kho¶ng 90 font ch÷ c¶ hoa vµ th­êng. Phô lôc 2 M· RTF §iÒu khiÓn RichTextBox c«ng nhËn c¸c m· RTF sau ®©y. TÊt c¶ c¸c m· RTF kh¸c ®­îc tr×nh ®iÒu khiÓn bá qua khi n¹p (load) v¨n b¶n (text). RTF Code Description RTF Code Description - OptionalHyphen objcropl CropLeft \n EndParagraph objcropr CropRight \r EndParagraph objcropt CropTop _ NonBreakingHyphen objdata ObjectData | FormulaCharacter object Object ~ NonBreakingSpace objemb ObjectEmbedded Ansi CharSetAnsi objh Height B Bold objicemb ObjectMacICEmbedder Bin BinaryData objlink ObjectLink Blue ColorBlue objname ObjectName Bullet ANSI Character 149 objpub ObjectMacPublisher Cb ColorBackground objscalex ScaleX Cell Cell objscaley ScaleY Cf ColorForeground objsetsize ObjectSetSize Colortbl ColorTable objsub ObjectMacSubscriber Cpg CodePage objw Width Deff DefaultFont par EndParagraph Deflang DefaultLanguage pard ParagraphDefault Deftab DefaultTabWidth pc CharSetPc Deleted Deleted pca CharSetPs2 Dibitmap PictureWindowsDIB piccropb CropBottom Dn Down piccropl CropLeft Dy TimeDay piccropr CropRight Emdash ANSI Character 151 piccropt CropTop Endash ANSI Character 150 pich Height F FontSelect pichgoal DesiredHeight Fbidi FontFamilyBidi picscalex ScaleX Fchars FollowingPunct picscaley ScaleY Fcharset CharSet pict Picture Fdecor FontFamilyDecorative picw Width Fi IndentFirst picwgoal DesiredWidth Field Field plain CharacterDefault Fldinst FieldInstruction pmmetafile PictureOS2Metafile Fldrslt FieldResult pn ParaNum Fmodern FontFamilyModern pnindent ParaNumIndent Fname RealFontName pnlvlblt ParaNumBullet Fnil FontFamilyDefault pntext ParaNumText Fontemb FontEmbedded pntxta ParaNumAfter Fontfile FontFile pntxtb ParaNumBefore Fonttbl FontTable protect Protect Footer NullDestination (Footer) qc AlignCenter Footerf NullDestination (Footer, first) ql AlignLeft Footerl NullDestination (Footer, left) qr AlignRight Footerr NullDestination (Footer, right) rdblquote ANSI Character 34 Footnote NullDestination (footnote) red ColorRed Fprq Pitch result ObjectResult Froman FontFamilyRoman revauth RevAuthor Fs FontSize revised Revision Fscript FontFamilyScript ri IndentRight Fswiss FontFamilySwiss row Row Ftech FontFamilyTechnical rquote ANSI Character 39 Ftncn NullDestination (Footnote cont.) rtf Rtf Ftnsep NullDestination (Footnote separ) rtlch RightToLeftChars Ftnsepc NullDestination (Footnote cont. separ) rtldoc RightToLeftDocument Green ColorGreen rtlmark DisplayRightToLeft Header NullDestination (Header) rtlpar RightToLeftParagraph Headerf NullDestination (Header, first) sec TimeSecond Headerl NullDestination (Header, left) sect EndSection Headerr NullDestination (Header, right) sectd SectionDefault Horzdoc HorizontalRender strike StrikeOut Hr TimeHour stylesheet StyleSheet I Italic sub Subscript Info DocumentArea (Info fields) super Superscript Intbl InTable tb TabPosition Lang Language tc NullDestination (Table of contents) Lchars LeadingPunct tx TabPosition Ldblquote ANSI Character 34 ul Underline Li IndentLeft uld UnderlineDotted Line SoftBreak uldash UnderlineDash Lquote ANSI Character 39 uldashd UnderlineDashDotted Ltrch LeftToRightChars uldashdd UnderlineDashDotDotted Ltrdoc LeftToRightDocument uldb UnderlineDouble Ltrmark DisplayLeftToRight ulhair UnderlineHairline Ltrpar LeftToRightParagraph ulnone StopUnderline Mac CharSetMacintosh ulth UnderlineThick Macpict PictureQuickDraw ulw UnderlineWord Margl MarginLeft ulwave UnderlineWave Marglsxn SectionMarginLeft up Up Margr MarginRight v HiddenText Margrsxn SectionMarginRight vertdoc VerticalRender Min TimeMinute wbitmap PictureWindowsBitmap Mo TimeMonth wbmbitspixel BitmapBitsPerPixel Nocwrap NoWordBreak wbmplanes BitmapNumPlanes Nooverflow NoOverflow wbmwidthbytes BitmapWidthBytes Nosupersub NoSuperSub wmetafile PictureWindowsMetafile Nowwrap NoWordWrap xe NullDestination (index entry) Objautlink ObjectAutoLink yr TimeYear Objclass ObjectClass zwj ZeroWidthJoiner Objcropb CropBottom zwnj ZeroWidthNonJoiner Tµi liÖu tham kh¶o [1] §å Thanh. Tõ ®iÓn tõ c«ng cô tiÕng ViÖt. NXB Gi¸o dôc 1998 [2] Hoµng Phª. Tõ ®iÓn tiÕng ViÖt. ViÖn Ng«n ng÷ häc. NXB §µ N½ng 2000 [3] Hoµng Phª. Tõ ®iÓn chÝnh t¶. Trung t©m tõ ®iÓn häc, NXB §µ N½ng 1995 [4] Phan Huy Kh¸nh. ThiÕt kÕ c«ng cô kiÓm tra chÝnh t¶ tiÕng ViÖt trong m«i tr­êng Microsoft Windows. [5] NguyÔn TiÕng Dòng. Kü n¨ng lËp tr×nh Visual Basic 6. NXB Thèng kª [6] MSDN Library Visual Studio 6.0 [7] Hoµng Xu©n §¨ng C­êng. ThiÕt kÕ giao diÖn khai th¸c tõ ®iÓn tra nghÜa PAV (FEV Dictionary). §å ¸n tèt nghiÖp. [8] Hoµng Quèc Th¸i. X©y dùng bé chuyÓn ®æi ph«ng tiÕng ViÖt. §å ¸n tèt nghiÖp.

Các file đính kèm theo tài liệu này:

  • docDOAN.DOC
  • rarCHUONGTRINH.rar