Danh mục

Tài liệu tham khảo: Thừa kế Textbox để đánh chữ Việt Unicode

Số trang: 9      Loại file: pdf      Dung lượng: 212.41 KB      Lượt xem: 7      Lượt tải: 0    
10.10.2023

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Hết rồi giai đoạn bực mình với VB6 thì sự giới hạn về lập trình theo hướng đối tượng (Object Oriented), .NET cho phép ta tha hồ thừa kế. Do đó, một trong những dự án nho nhỏ đầu tiên của chúng ta là thừa kế từ Textbox bình thường để tạo một Textbox, tạm gọi là vnTextbox, hỗ trợ đánh chữ Việt Unicode theo lối VNI hay VIQR. Dĩ nhiên, ta vẫn tiếp tục giữ các
Nội dung trích xuất từ tài liệu:
Tài liệu tham khảo: Thừa kế Textbox để đánh chữ Việt Unicode Thừa kế Textbox để đánh chữ Việt Unicode Lập trình dùng thừa kếHết rồi giai đoạn bực mình với VB6 thì sự giới hạn về lập trình theo hướngđối tượng (Object Oriented), .NET cho phép ta tha hồ thừa kế. Do đó, mộttrong những dự án nho nhỏ đầu tiên của chúng ta là thừa kế từ Textboxbình thường để tạo một Textbox, tạm gọi là vnTextbox, hỗ trợ đánh chữViệt Unicode theo lối VNI hay VIQR. Dĩ nhiên, ta vẫn tiếp tục giữ cácprograms bỏ dấu chuyên nghiệp ưng ý của mình như VietKey, UniKey,VPSKey, .v.v.., nhưng có thể sau nầy sẽ có trường hợp ta cung cấp chokhách hàng một chương trình áp dụng tiếng Việt để họ dùng cho nhu cầuchuyên môn mà không cần phải dùng thêm một program bỏ dấu hỗ trợ.Đểtạo một Control thừa kế từ Textbox bạn khởi động một Project mới loạiWindows Control Library như sau:Kế đó, khi mở code ra thay thế hai hàng:Public Class UserControl1 Inherits System.Windows.Forms.UserControlbằng hai hàng sau:Public Class vnTextbox Inherits System.Windows.Forms.TextBoxĐánh dấu theo lối VNIÐể đánh dấu cho các nguyên âm chữ Việt, trong vnTextbox ta tạm dùngphương pháp VNI. Tức là ta đánh nguyên âm trước, kế đó ta đánh mộtcon số từ 1 đến 9 để bỏ dấu.Các con số 1..6 theo sau chữ a chẳng hạn, sẽcho ta các chữ á à ả ã ạ â; số 7 theo sau chữ u sẽ cho ta ư; số 8 theosau chữ a sẽ cho ta ă; số 9 theo sau chữ d sẽ cho ta đ. Để bỏ hai dấu thìta dùng hai con số, thí dụ a36 thì sẽ đuợc hiển thị thành ẩ, còn u27 thì sẽcho ừ. Ðể đánh các chữ đ và Ð ta dùng d9 và D9. Chắc chắn bạn sẽ thấyprogram nầy đơn sơ quá, nhưng nó sẽ dễ hiểu, và sau đó, nếu thích bạncó thể thêm thắt các chức năng.Để bỏ dấu theo lối VIQR thì thay vì cáccon số 1,2,3,4,5,6,7,8,9 ta dùng ` ? ~ . ^ + (hay *) ( d (hay -). Ðặcbiệt control vnTextbox nầy dùng gần như hoàn toàn look-up table để tínhra các nguyên âm có dấu. Trước hết, mỗi khi user đánh một con số từ 1đến 9, thì program nhìn xem character phía trước cursor (gọi là LastCh) làchữ gì. Kế đó nó tìm đến hàng chữ chứa toàn bộ những nguyên âm có thểthay thế LastCh, tùy theo con số mà user vừa đánh vào. Ở đây kể cảtrường hợp user vừa đánh một Backspace. Cái bảng chứa những hàng chữấy đuợc chứa trong một array-of-string tên ChList và nó được initialisedtrong Constructor Sub New của vnTextbox như dưới đây:Private ChList(148) As String List of charactergroups like aáàảãạâ-ăChList(0) =aáàảãạăắằẳẵặâấầẩẫậeéèẻẽẹêếềểễệiíìỉĩịoóòỏõọôốồổỗộơớờởỡợuúùủũụưứừửữựyýỳỷỹỵdđAÁÀẢÃẠĂẮẰẲẴẶÂẤẦẨẪẬEÉÈẺẼẸÊẾỀỂỄỆIÍÌỈĨỊOÓÒỎÕỌÔỐỒỔỖỘƠỚỜỞỠỢUÚÙỦŨỤƯỨỪỬỮỰYÝỲỶỸỴDChList(1) = aáàảãạâ-ăChList(2) = a^àảãạấ-ắChList(3) = aá^ảãạầ-ằChList(4) = aáà^ãạẩ-ẳChList(5) = aáàả^ạẫ-ẵChList(6) = aáàảã^ậ-ặChList(7) = aắằẳẵặâ-^ChList(8) = ăắằẳẵặấ-ắChList(9) = ăắằẳẵặầ-ằChList(10) = ăắằẳẵặẩ-ẳChList(11) = ăắằẳẵặẫ-ẵChList(12) = ăắằẳẵặậ-ặChList(13) = aấầẩẫậ^-ăChList(14) = âấầẩẫậấ-ắChList(15) = âấầẩẫậầ-ằChList(16) = âấầẩẫậẩ-ẳChList(17) = âấầẩẫậẫ-ẵChList(18) = âấầẩẫậậ-ặChList(19) = eéèẻẽẹêChList(20) = e^èẻẽẹếChList(21) = eé^ẻẽẹềChList(22) = eéè^ẽẹểChList(23) = eéèẻ^ẹễChList(24) = eéèẻẽ^ệChList(25) = eếềểễệ^ChList(26) = êếềểễệếChList(27) = êếềểễệềChList(28) = êếềểễệểChList(29) = êếềểễệễChList(30) = êếềểễệệ. . .ChList(0) chứa toàn bộ các nguyên âm. Tương ứng với mỗi nguyên âm(LastCh) trong ChList(0) là một hàng chứa tất cả mọi chữ có thể đuợcdùng để thay thế LastCh khi user đánh vào một con số 1..9 hayBackspace.Thí dụ nếu LastCh là à, ta sẽ dùng ChList(3), nó chứa các chữ:aá^ảãạầ-ằKế đó nếu user đánh số 3 ta sẽ thay thế dấu sắc thành dấu hỏiđể có chữ ả. Còn nếu thay vì đánh số 3, user đánh số 8, thì ta sẽ có chữ ằ,tức là thêm dấu ă cho chữ à.Nếu user đánh thêm một số 7 thì charactertướng ứng với số 7 trong hàng aá^ảãạầ-ằ là -, hể gặp character - thì talàm ngơ.Nếu user đánh thêm một số 2 sau chữ à bạn sẽ thấy charactertướng ứng với số 2 trong hàng aá^ảãạầ-ằ là ^. Điều nầy nhắc ta biết làuser đánh a22, nên ta sẽ hiển thị a2. Nếu user đánh Backspace, thay vìmột con số, ta sẽ dùng nguyên âm nằm ở đầu dòng, tức là chữ a. Như thếnếu LastCh là ẩ, thì sau một Backspace ta có ả, sau thêm một Backspacekế tiếp ta sẽ còn lại a.Kỹ thuật Program dùng để thay thế LastCh là select(highlight) LastCh rồi Paste nguyên âm mới. Dưới đây là Listing củaFunction GetToneCharPos() để trả về một giá trị từ 1 đến 9 tượngtrưng cho dấu:Private Function GetToneCharPos( ByVal KeyChar AsInteger) As Integer If Typing stype is VNI, see if user enters 1..9or d If so return 1..9 and also 9 for d. Otherwisereturn -1 If Typing stype is VIQR, return 1..9 for characters`?~.^+(d . Otherwise return -1 We also allow for * and - to be same as + and dsuccessively. i.e. u+ or u* and dd or d- are OK. GetToneCharPos = -1 If mTypingStyle = VNI Then If (KeyChar = 68) Or (KeyChar = 1 ...

Tài liệu được xem nhiều: