مشكلة في البحث في RichTextBox وهي عندما يتم البحث فيها عن كلمة ذلك ويكون في RichTextBox كلمة ذلك مشكلة ذَلِكَ يتم تحديد ذل وتترك الكاف بحكم ان الفتحة والكسرة اعتبرا كحرف فكيف اجعل التحديد يتم الكلمة كاملة
مشكلة في البحث في RichTextBox
السلام عليكم
حسن أخي
يجب العمل مع هذه المشكلة
إذا النص مشكولا كاملا وانت متأكد أنه مشكول كاملا فالامر سهل جدا
هذا قد يفي بالغرض
Dim FindPlace As Integer Dim FindThat As String FindThat = "ذلك" FindPlace = InStr(1, RichTextBox1.Text, FindThat) RichTextBox1.SetFocus RichTextBox1.SelStart = FindPlace RichTextBox1.SelLength = Len(FindThat) * 2
أما اذا لم يكن فلا بد من التلاعب بالنص أو البحث عن الكلمة حرفا حرفا
يعني البحث عن الحرف الاول ومن تم البحث عن الحرف الذي يليه والذي لا يكون
حرف شكل فتحة أو كسرة
أو
البحث عن الحرف الاول من الكلمة والحرف الاخير منها
وبعد ذلك تأخد الكلمة وتحذف حروف الشكل والتأكد من أنها الكلمة المرادة وإن لم تكن تذهب الى البحث انطلاقا من
المكان الذي وجد فيه الحرف أول مرة وهكذا آمل أن تحاول التعامل والتلاعب بالكود بهذا الشكل وآمل أن تجد الحل
وسأحاول أن أكتبه لك
إن شاء الله
حاول جرب توصل
أولا أود أن أشكرك أخي العزيز الفاضل على ردك واهتمامك ...
ثم إن فكرتك جميلة ،،، ،،،
ولكن النص الموجود في RichTextBox لا يكون دائما مشكولاً كاملا فمثلا يكون بعض الأحيان جزء من الكلمة مشكون فقط أو أحرف متفرقة ،،،، ولكن لماذا لا نستخدم RichTextBox1.Find في البحث في RichTextBox1 ،،،
،،، في المكتبة الشاملة موجودة هذه الطريقة فلو كتبت نص كلمة غير مشكولة تريد البحث عنها في RichTextBox1 وكان نص الكلمة في الـRichTextBox1 مشكولاً جزئيا أو كليا يتم تحديده بالتمام دون زيادة أو نقصان ،،، ،،،
المهم أخي أرجوا أن تعينني على كتابة الكود الصحيح -وهذا ظني فيك - ولك مني جزيل الشكر وجعله الله في ميزان حسناتك،،، في إنتظارك..
السلام عليكم
أخي الكريم ليس بوسعي إلا أن أعطيك بعض الافكار إلى أن نحصل على الطريقة المثلا
بخصوص find في RichTextBox فأنا شخصيا لا أعتقد أنها ققد تفيدك جيدا جدا
حسن ما رأيك في هذه الطريقة
تضع كل ما في RTB عندك في متغير وتزيل كل أدوات الشكل بواسطة الدالة REPLACE حيث تستبدل حرف الشكل
ب VbNullString وهكذا يصبح عندك نص غير مشكول وبعد ذلك تبحث عن الكلمة وبعد أن تجدها ستحصل على مكان أول حرف لها
بعد ذلك تحصل على أول فراغ بعد الحرف الاول وتفعل كما في المثال الاول
RichTextBox1.SetFocus RichTextBox1.SelStart = FindPlace RichTextBox1.SelLength = FindSpace - FindPlace
بحث FindSpace هنا هي المسافة المباشرة بعد إيجاد الكلمة
آمل أن يفيدك هذا المثال
ولكن المهم أن تكبته وتتبع بعض أخطائه حتى تحصل على الكود الكامل
آمل أن تفعل هذا
وآسف لانني لا أكتب الكود
شكرا جزيلا ،، ولكن هذا إذا يبحث عن كلمة كاملة ولكن نفترض أن المستخدم يبحث عن جزء من الكلمة مثلا كلمة (العربي) وبحث المستخدم بكلمة (عرب) وكانت كلمة (العربي) مشكلة فما هو الحل.....
السلام عليكم
اخي الكريم كلك نظر
أولا اخي الكريم هل كتبت الكود الاول أم أنك ما زلت في مرحلة التحليل
ما علينا
افعل التالي
ابحث عن الكلمة عرب
و من تم ستحصل على أول مكان أول حرف ومن تم وهو العين
وبعد ذلك ستبحث عن الباء الذي يلي مباشرة حرف العين
وهذا سيطرح معنا مشكلة أخرى وهي ماذا لو كان عندنا الكلمة (زلزال) وتريد البحث عن الكلمة كاملة
بهذه الطريقة ستحصل فقط على الحرفينا الاولين (زل) وبالطريقة الاولى لا مشكلة
لذلك علينا أن نضع شروطا على البحث عن الحرف الاخير هل سيكون المسافة الاولى بعد الحرف الاول
أم سيكون البحث عن الحرف الاخير من الكلمة التي نبحث بها في الكلمة التي نبحث عنها
وكلك نظــــــــــــــــــــر
أخب الكريم أكتب الكود لحالة من الحالات وحاول أن تقوم بالتغييرات اللازمة
آسف مرة أخرى على عدم كتابة الكود
سلام
تم تعديل هذه المشاركة بواسطة micheal R jordan في 26 يوليو 2007 في 15:23
السلام عليكم للإضافة
المشكلة
اقتباسوهذا سيطرح معنا مشكلة أخرى وهي ماذا لو كان عندنا الكلمة (زلزال) وتريد البحث عن الكلمة كاملةبهذه الطريقة ستحصل فقط على الحرفينا الاولين (زل) وبالطريقة الاولى لا مشكلة
حلها هو على الشكل التالي
بعد أن تحصل على كل ما سبق وعندما تصل إلى هذه المشكلة اعمل العكس تماما والطريدة تصبح الصياد
تأكد من الكلمة التي توصلت إليها هي الكلمة المطلوبة وذلك ب =
الكلمة المطلوبة والكلمة التي حصلت عليها أو استعمل الدالة StrComp
سلام
هذا الموضوع مغلق.