מה יקרה כשתלחץ על מקש תו. האם הוא יכנס למקום עליו מורה הסמן? מה יקרה כשתלחץ על המקש Del, או על Backspace?
אתה מציב
את הסמן בגבול
בין טקסט עברי
לבין טקסט
לועזי ומתחיל
להקליד. לא
תמיד התו
שהקלדת ישתלב
במקום הנכון
בטקסט. לא
תמיד ימחק התו
אליו התכוונת.
בדוק כמה
זמן יקח לך להכניס
רווח בין האותיות
C ו-a במחרוזת
הבאה: C.2B.1a
בעיקר בגבולות בין טקסט עברי לאנגלי, קשה לנבא להיכן יכנס התו הבא, והתוצאה תלויה גם בשפה הפעילה ופעילות הקודמת שלך
כאשר אתה
לוחץ על
Del או על
Backspace,
התו שנמחק אינו תמיד זה שאליו התכוונת.
הפתרון
המוצע כאן הוא על ידי תצוגת מיקום התו הקודם והתו הבא. לדוגמא, ניתן לסמן תוים אלו בצבעים תכלת וירוק לימון כמו במלה ז|ו. האות הצבועה
בצבע תכלת
זוהי האות
הקודמת בסדר ה"לוגי"
של הכנסת
התוים, ואילו
האות הצבועה
בצבע ירוק
לימון זוהי
האות הבאה
בתור. במעברים
בין עברית
לאנגלית
הצבעים הללו
מעידים גם על המיקום
ה"לוגי" של
הסמן. לדוגמא, נבחן
את המשפט הבא:
על |Usability
צריך לחשוב
מראש!
במשפט זה הסמן
מופיע מיד
אחרי האות U, אבל
המיקום הלוגי
שלו יכול
להיות בשני
מקומות: לפני
האות U, כאשר נעים
עם החצים
קדימה, או אחרי
המלה Usability, כאשר
נעים אם החצים
לאחור. במקרה הראשון,
כאשר הסמן ה"לוגי"
נמצא לפני
המלה Usability, הצביעה
תהיה כדלקמן
על |Usability
צריך לחשוב
מראש!
במקרה השני,
לעומת זאת, כאשר
הסמן ה"לוגי"
נמצא אחרי
המלה
Usability, הצביעה
תהיה:
על |Usability
צריך
לחשוב מראש!
הצביעה נותנת
אינדיקציה
מסויימת לגבי
המקום בו התו הבא
עשוי להכנס. איזה
תו יכנס
בפועל, והיכן
הוא ישכון –
למיקרוסופט הפתרונים.
ניתן ליבא שני קבצי Visual Basic מאתר זה: EventClassModue.cls ו- Bidi.bas, מה עושים? פותחים מסמך MS-Word, פותחים את ה-Macro Editor בעזרת תפריט Tools/Macro ומייבאים את הקבצים בתפריט File/Import File
המקרו לצביעת הטקסט הוא:
Sub
ShowCursorPreview()
If (Selection.Start
> 1) And (Selection.End < ActiveDocument.Characters.Count - 1) Then
Selection.Start = Selection.Start - 1
Selection.Range.HighlightColorIndex = wdBrightGreen ' clear
Selection.Start = Selection.Start + 1
Selection.End = Selection.End + 1 '
Selection.Range.HighlightColorIndex = wdTurquoise ' clear
Selection.End = Selection.End - 1
End If
End Sub
גם כאן, הסימון צריך להיות דינאמי, בתגובה לשינוי מיקום הסמן. במקרה זה, ניתן להגדיר משתנה ToPreview במודול הקולט ארועים, ועל פי משתנה זה להחליט האם לצבוע או לא לצבוע. המקרו יראה משהו כמו:
Sub
app_WindowSelectionChange _
(ByVal Sel As Selection)
SelLenght = Selection.End - Selection.Start
If SelLenght = 0 Then
AdaptCursor ' change cursor direction according to the
language
ClearCursorPreview
If ToPreview = True Then
ShowCursorPreview
End If
End If
End Sub
הפקודה הראשונה לביצוע במקרו היא פונקציה למחיקת הסמן הקודם. ההגדרה של פונקציה זו היא כדלקמן:
Sub ClearCursorPreview()
If (Selection.Start
> 1) And (Selection.End < ActiveDocument.Characters.Count - 1) Then
Selection.Start = Selection.Start - 2
Selection.End = Selection.End + 2 '
Selection.Range.HighlightColorIndex = wdNoHighlight ' clear painting
Selection.Start = Selection.Start + 2 ' retrieve previous selection
Selection.End = Selection.End - 2 '
End If
End Sub
פונקציה זו פועלת במקרה של הזזת הסמן בתו אחד, על ידי מקשי החצים. במקרה של הצבעה על ידי העכבר, הפונקציה מוחקת את הצביעה במקום החדש, אבל לא במקום הקודם, ולכן היא אינה אפקטיבית. המשתמש יכול למחוק את הצביעה על ידי מעבר למוד המקורי, לפני הצביעה. במוד זה עדיין ניתן למחוק על ידי הצבעה על המקום הצבוע:
עד כאן תיארתי את המקרואים בקובץ EventClassModue.cls.
המקרואים
שמפעילים אותם מוגדרים בקובץ
Bidi.bas
כדלקמן:
Sub StartPreview()
EventModule.ToPreview
= True
End Sub
Sub StopPreview()
EventModule.ToPreview
= False
End Sub
Sub AutoExec()
Set EventModule.App
= Application ' Event Registration
EventModule.ToPreview
= False ' do not preview
End Sub
בשלב שני, ניתן
להגדיר מקשי גישה
למקרואים על
סרגל הכלים בעזרת
קופסת
הדיאלוג
Tools/Customize.
??