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 đó.
42 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2530 | Lượt tải: 0
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 nhng 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 trng 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 nhng 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 trng cho néi dung cho mét ®o¹n v¨n, ë ®©y tõ khãa lµ tõ ®Æt trng 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 cha), 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 lu ë 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Ø lu d÷ liÖu ë d¹ng file v¨n b¶n tøc chØ lu 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
Lu 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÷ nhng 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 ®Ó lu nã. Mçi khi tra tõ, ta kiÓm tra tõ ®ã cã tån t¹i trong danh s¸ch nh÷ng tõ ®· tra cha, nÕu cha 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 ®· lu ë 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 lu l¹i tÊt c¶ c¸c bíc tra tõ, nghÜa lµ lu 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 cha. Ta cßn cã thªm mét con trá ®Ó lu 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× ngng 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 cha, 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 lu ë 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Ø lu d÷ liÖu ë d¹ng file v¨n b¶n tøc chØ lu 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 cha 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 lu 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 ®Ó lu 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:
- Lu 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 nhng 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) nhng 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 lu kÕt qu¶ vµ tho¸t
Lu 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, cha ®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 cha 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:
- DOAN.DOC
- CHUONGTRINH.rar