الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب مساعدة في مشروع Editor باستخدام C#

بدأه master87 في 18 ديسمبر 2009 · 9 رد · 1,436 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

ربما هي المشاركة الاولى لي .. لكن لن يسعني هذا المقام كي أمدح هذا المنتدى وأظن نفسي لن أوفيه حقه بذلك .. لذلك سأدخل في الموضوع مباشرة

المشروع الذي بين يدي هو عمل editor محرر نصوص باستخدام c# وهو مشروع مادة data structure المطلوب منا عمل هذا المحرر باستخدام مجموعة من ال data structure

مثل sequence stack queue وما الى ذلك

-- المشاكل التي تواجهني والتي أريد مساعدة حضراتكم بها

-- ما هو أفضل component ممكن أخلي المستخدم يكتب بداخله أقصد ( textBox أم ListBox .... )

-- كيف بدي طول ما المستخدم بيضغط على حرف أدخله بداخل ال data structure يعني مثلا لو انا عامله باستخدام stack

بدي كل ما المستخدم يضغط على حرف يعمله push مباشرة .. وهكذا

بحيث اذا حبيت استخدم ما بداخل ال stack لاحقا يكون جاهز

واذا في امكانية أعرف كيف بدي اعمل listener على الازراز الاخرى مثل enter tab space backspace

الله يجزيكم كل الخير

تحملوني على الكلام الطويل

لكني مضطر جدا

بارك الله فيكم مرة أخرى

تم تعديل هذه المشاركة بواسطة master87 في 18 ديسمبر 2009 في 16:48

#2

بسم الله الرحمن الرحيم

1-

أفضل مكون من أجل كتابة النص فيه هذا الأمر عائد إليك فبإمكانك استخدام TextBox في حال كُنت غير مُهمتم بمزيات البحث أو الإستبدال أو أنك تُريد كتابة مثل هذه التعليمات يدوياً مع مُراعاة أن الـTextBox لا تدعم سوا لون واحد لكل النص المتواجد بداخلها.

استخدم RichTextBox في حال كُنت تُريد الميزات بالإضافة إلى تلوين بعد الكلمات وهكذا أمور بالإضافة لميزات البحث (ميزات البحث بحاجة إلى تعديل من أجل أن تكون ناجحة).

2-

بالنسبة لموضوع الضغط ليس بالضرورة الإعتماد على موضوع الضغط على الزر مُمكن الإعتماد على النص يلي رح ينوجد بداخل النص وبعدين يتم التحويل للمكدس أو stack هي فكرة أولى.

فكرة أخرى : الإعتماد على الحدث KeyPress أو TextChange من أجل التخزين حرف حرف حيث :

في حدث KeyPress : يتم أخذ المعلومات من لوحة المفاتيح مُباشرة ويوضع داخله آلية تخزين المحارف.

في حدث TextChange: حيث أنه يعتمد على تغيرات الـtextBox أو مربع النص حيث أنه كلما دخل محرف جديد يحدث تغير في النص وبالتالي فإنه يتم تطبيق حدث تغير النص الذي تقوم بداخله بوضع آلية تخزين المحارف.

3-

موضوع المُستمع على الأزرار أعتقد KeyPress , KeyDown هذان الحدثين على ما أذكر واحد منهما قادر على إلتقاط محارف التحكم للوحة المفاتيح إن شاء الله

أتمنى أن أكون قد أفدت

أخوكم في الله : سامر

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#3

الله يجزيك الخير أخي العزيز سامر

أنا فعلا استخدمت RichTextBox ووجدته مناسب للعمل

واستخدمت arraylist حتى أضيف الاحداث فيها ( أقصد الحروف المدخلة الى اللوحة)

اتا تقريبا انهيت بعض المشاكل التي كانت تعيق العمل

بارك الله فيك أخي مرة أخرى وجزاك عني كل الخير

دمتم بعزّ

#4

ولماذا تستخدم ArrayList لحفظ الحروف المدخلة؟؟ :unsure:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#5
اقتباس
المشروع الذي بين يدي هو عمل editor محرر نصوص باستخدام c# وهو مشروع مادة data structure المطلوب منا عمل هذا المحرر باستخدام مجموعة من ال data structure مثل sequence stack queue وما الى ذلك

الموضوع اوضح ما يكون بما انك اتيت على ذكر الـ data structure فهذا يعنى انك ستقوم بعمل محرر نصوص من الصفر و اعنى بهذ انك ستقوم بجز مساحة من الذاكره لحفظ الحروف المدخله بداخله و تقوم بعملية رسم الحروف بنفسك، بمعنى اخر ان تصنع محرر نصوص من الصفر.

توجد العديد من محررات النصوص التى صنعت بهذا الشكل و اغلبها الخاص بلعات البرمجه مثل محرر الفيجوال ستديو او محرر netbeans او محرر sharpDevelop و غيرهم. (اياك ان تعتقد انهم يستخدموا RichTextBox !!).

كنت قد صنعت واحد من قبل، صراحة الموضوع ليس بالسهل و لكنه ممتع جدا.

المرفق التالى هو كود محرر SharpDevelop و هو بالـ C# بالطبع.

ICSharpCode.TextEditor.rar

المرفق التالى هو كتاب Data Structures For Text Sequences و هو يشرح لك انواع الـ DS المستخدمه فى محررات النصوص و بعض الخوازميات التى تتيح لك حذف و اضافة و تعديل النصوص و غيرهم. (تم تحديث المرفق)

Data Structures For Text Sequences.rar

يوجد ايضا كتاب ممتاز فى هذا المضمار و اسمه The Craft of Text Editing و يمكنك تحميله من هنـــا

ايضا اذا كنت مبرمج C++ فستفرح عندما اقول لك انه بموقع www.catch22.net يوجد حوالى 12 درس لصنع محرر نصوص من الصفر اسمه Neatpad و المفترض انه موجهه للمبرمجين بمعنى انك ستجد به Syntax Coloring و Expand/Collapse لمناطق معينه من النصوص و ايضا يدعم Unicode.

حتى الأن لم يتم اضافة Syntax Coloring و Expand/Collapse و لكن دعم Unicode موجود لإن الكاتب يستخدم تقنية Uniscribe، الدروس حتى الأن قيد التطوير لإنه يتم اضاضفة المزيد منهم كل فتره.

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 23 ديسمبر 2009 في 15:47

مدونتي: C++ Tips and Tricks

#6

محمد كالعادة تحتاج إلى دورة فى ضغط الملفات :D

ملف الكتاب لا يعمل ياريس :wink:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7

هرفع الكتاب تانى، و بالنسبه للكود شغال و لا ايه ؟؟

مدونتي: C++ Tips and Tricks

#8

الملفات GlobalAssemblyInfo.cs , nunit.framework.dll غير موجودة

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#9

حقيقة أعجز عن شكرك أخي Muhammad alaa

أرحتني كثيرا بمشاركتك

دمت بعزّ

#10

نا أثني على كلام الزميل GHOST2010

الملفات GlobalAssemblyInfo.cs , nunit.framework.dll غير موجودة

الرجاء ارسالها او ارسال المشروع كامل مرة اخرى

الله يبارك فيك

مواضيع مشابهة