مقدمة
غالبًا ما يتم التنقل بين المستندات في تطبيقات تدوين الملاحظات في شكل ارتباطات (Link) ، يقوم المستخدم بإنشائها يدويًا في كل مستند. ولكن ماذا لو قمت بتنقل الكلمات الرئيسية دون استخدام روابط فريدة في المستند؟
كانت المهمة التي قمت بتعيينها عند تحسين وظيفة برنامج FAQ.Net هي إنشاء آلية ملائمة للتنقل في مستندات RTF في تطبيق FAQ.Net.
نتيجة لذلك ،
حصلت FAQ.Net الإصدار 2.7 على وظيفة تلميح الأدوات باستخدام الكلمات الرئيسية المخصصة وتعريفها.
ما هي مزاياها وفوائدها في برنامج الملاحظات وكيفية استخدامها ، سأصفها بإيجاز في إطار هذه المقالة.

طرق إنشاء التنقل في مستندات RTF باستخدام مكون RichTextBox القياسي
- باستخدام الإشارات المرجعية
في معيار RTF ، هناك آلية مرجعية مدمجة ، لكن مكون RichTextBox القياسي لا يدعم تشغيل عناصر bkmkstart و bkmkend. - تعطيل خاصية DetectUrls وإنشاء الروابط الخاصة بك.
يوصف هذا الأسلوب في المقالة ارتباطات مع النص التعسفي في RichTextBox . في هذه الحالة ، تحتاج إلى إضافة رمز لتحديد عناوين URL واستعادة جميع الروابط عند فتح مستند RTF. اعتقدت أن هذا يستغرق وقتًا طويلاً وسيؤدي إلى تقليل سرعة التطبيق قليلاً. - تلميحات.
بعد الطريقتين الموضحتين أعلاه ، قرأت مقالًا حول تلميحات الأدوات في مكون RichTextBox ToolTip RichTextBox [WinForms] مثل Visual-Studio . وقد اتخذ هذا الخيار كأساس.
تلميحات. قائمة المهام
في فكرة تلميحات الأدوات ، رأيت إمكانية تحقيق النتيجة المرجوة وبدأت في إدراكها. كل ما هو مطلوب كان لتوسيع مكون تلميح الأدوات وإضافة روابط مع التحولات إليها. لم يكن هناك حل جاهز في الإنترنت الواسع ، لذلك قمت بتطوير الرمز بنفسي.
قائمة المهام التي يتعين إكمالها:
- تنظيم تخزين الكلمات الرئيسية (تلميحات) مع الروابط
- قم بتنفيذ وظيفة تحديد كلمة عند المرور فوقها
- إنشاء واجهة لإنشاء وتحرير "قاموس المطالبات" (انظر الوصف أدناه)
- إنشاء القدرة على إنشاء كلمات رئيسية بسرعة في مستند RTF باستخدام "تلميح القاموس"
- يجب أن تكون وظيفة تلميح الأدوات قابلة للمد
تفاصيل البند
- يتم تخزين الكلمات الأساسية داخل قاعدة بيانات SQLite. البرنامج النصي لإنشاء الجدول:
CREATE TABLE word_tooltip ( id_content INTEGER NOT NULL, word VARCHAR NOT NULL, tooltip_type INTEGER NOT NULL, comment VARCHAR NOT NULL, url_adr VARCHAR NULL, group_name VARCHAR NULL, fore_color VARCHAR NULL, create_date DATETIME DEFAULT (CURRENT_TIMESTAMP), modif_date DATETIME, PRIMARY KEY (id_content, word) )
- يتم تنفيذ وظيفة تحديد كلمة عند التمرير فوقها باستخدام الوظائف القياسية لمكون RichTextBox: GetPositionFromCharIndex و GetCharIndexFromPosition.
الرموز التي تحدد بداية أو نهاية الكلمة:
',',';',':','!','?','%','+','=','*','$','\'','\"','<','>','^','(',')','[',']','{','}','°','&','|',' ','\n','"','\t'
- "قاموس تلميح الأدوات" - هكذا دعوت إلى اللوحة التي يتم فيها عرض جميع الكلمات التي أنشأها المستخدم وتحريرها ، والتي تحتاج إلى عرض تلميحات الأدوات عند تحريكها فوق مستند RTF. تتكون لوحة "قاموس النصائح" من:
- أزرار التحكم: إنشاء وتحرير ونسخ وحذف.
- شريط البحث
- لوحة من الكلمات في شكل شجرة (TreeView)
- لوحات التحرير
- يتم إنشاء الكلمات في "قاموس المطالبات" عن طريق الضغط على Ctrl + Space. إذا وضعت المؤشر في منتصف الكلمة ، فعندما تتصل بـ Ctrl + Space ، سيتم تعيين مرشح الكلمة تلقائيًا على مرشح الكلمة في قاموس المساعدة في بداية الكلمة قبل المؤشر ، وعند تحديد كلمة (أدخل أو انقر نقرًا مزدوجًا) ، يتم استبدال الكلمة بأكملها بالكلمة المحددة. أثناء الضغط على الحروف على لوحة المفاتيح ، يتم عرض كلمة تصفية للمستخدم في الجزء العلوي من مكون اختيار الكلمة. لتوفير الراحة للعمل مع القاموس ، عند المرور فوق كلمة ، يتم عرض تلميح داخل القائمة التي تمت تصفيتها.



- ملحق وظيفة تلميح الأدوات في حقل tooltip_type INTEGER NOT NULL. أنواع تلميحات الأدوات:
- مع الإشارة إلى المذكرة (وثيقة RTF الداخلية). يشار فقط إلى معرف الملاحظة (السؤال). عند التمرير فوق كلمة ما ، يتم عرض اسم الملاحظة على أنها تلميح.
- مع الإشارة إلى مورد الإنترنت. يتم توفير URL والنص تلميح.
- تلميح ثابت. يشار فقط النص تلميح.
كرامة
- تخزين وتعديل الكلمات الرئيسية مع الروابط في شكل منظم (الجدول)
- التنقل عبر مستندات RTF ، دون تغيير المستندات نفسها
- القدرة على الإكمال التلقائي للكلمات (التحسس الذكي) من القاموس الذي يحدده المستخدم
- إنشاء روابط سريعة وتغييرها في جميع المستندات حيث توجد كلمة رئيسية
القصور
- المشكلة مع الجداول RTF. لسوء الحظ ، لدى مكون RichTextBox القياسي عيبًا مع عرض الجداول. للتخلص من هذا العيب ، يتم استخدام مكتبة Msftedit.dll ، والتي تقدم الأخطاء في GetPositionFromCharIndex و GetCharIndexFromPosition. لا أعرف كيفية التعامل مع هذه المشكلة حتى الآن ، لكنني آمل أن يتم إيجاد حل. في هذا الصدد ، في إصدار FAQ.Net 2.7 لا أوصي باستخدام تلميحات الأدوات داخل جداول RTF وبعدها.
- التشكل من الكلمات ، أي يجب تكرار كل كلمة بتلميح جديد.
ما الذي سوف يتحسن أكثر في تطبيق FAQ.Net؟
- ستتم إضافة وظيفة استيراد / تصدير قاموس النصائح
- ستكون قادرًا على إضافة علامات إلى الملاحظات. بالإضافة إلى ذلك ، ستضيف القدرة على إدخال قاموس النصائح للعلامات.
على سبيل المثال: قم بإنشاء علامة C # ، قم بإنشاء كلمات رئيسية من اللون المطلوب. بعد ذلك ، قم بإنشاء وظيفة تمييز بناء جملة للجزء المحدد. سيسمح ذلك للمستخدم بإدخال كلماته وتحديد كلمات تمييزه.
استنتاج
بشكل عام ، أنا حقا أحب وظيفة. أعتقد أن هدف التنقل بين مستندات RTF داخل تطبيق
FAQ.Net قد تحقق.
في الاستخدام الشخصي ، أحتفظ بنصائح الأدوات كمترجم ، مما يساعدني في تعلم وتذكر كلمات أجنبية جديدة.
يمكنك بسهولة تخزين وعرض تلميحات للاختصارات في القاموس.
القاموس مناسب لتخزين روابط لمقالات من الإنترنت ومرافقة تعليق موجز.
روابط المقالة المرفقة
عرض الفيديو من تلميحات الأدوات في FAQ.Netوصف مفصل للتطبيق FAQ.Netمجموعة VKتنزيل تطبيق Windows FAQ.Net (مجانًا):
(x64)
yadi.sk/d/sq3g4NOD3Zt7ZY(x86)
yadi.sk/d/NKXeyUW33t8PQ