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

سؤال: البحث عن الكلمة بغض النظر عن حجم الحروف

مغلق
بدأه maayah في 2 يوليو 2007 · 6 رد · 856 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي سؤال في طريقة البحث عن كلمة معينة مثلا كلمة Visual

داخل RichTextBoxعند الضغط على زر Button مثلا يقوم

بتظليل الكلمة Visual وعند الضغط مرة ثانية يلغي التظليل عن

الكلمة Visual القديمة ويظلل الكلمة Visual التالية ولكن بشرط

أن يبدأ البحث من الأسفل الى الأعلى وليس من بداية النص.

يعني عملية بحث اذا كان عندي نص كبير يوجد فيه العديد من

الكلمات يقوم بالبحث عن كلمة معينة يوجد منها العديد في

النص ويظلل الكلمة من أسفل النص بالتدريج الى اخر كلمة في النص.

ملاحظة: لقد أرفقت مثال يقوم بالبحث من الأعلى الى الأسفل ولم

استطع التعديل عليه لكي يبحث من الأسفل الى الأعلى.

مع شكري للجميع...

shading.zip

#2

إليك تعديلي لكودك

أولا - البحث سيتم للأمام باستخدام IndexOf وللخلف بواسطة LastIndexOf

ثانيا - قمت بتعديل متغيراتك من

	Dim Result As Integer
	Dim Position As Integer = 1

إلى

	Dim Position As Integer = -1
	Dim Revpos As Integer = -1

وذلك كي تتوافق ورؤيتي الجديدة للدالة Search الخاصة بك التي لم أبق من دالتك القديمة سوى رسالة الخطأ وفيما يلي الدالة الجديدة

	Public Sub Search(ByVal Word As String, Optional ByVal Reverse As Boolean = False)
		If Revpos = -1 Then
			Revpos = Me.RichTextBox1.TextLength
		End If

		If Reverse = False Then
			Position = Me.RichTextBox1.Text.IndexOf(Word, Position + 1)
		Else
			Position = Me.RichTextBox1.Text.LastIndexOf(Word, Revpos)
		End If

		If Position >= 0 Then
			Me.RichTextBox1.SelectionStart = Position
			Me.RichTextBox1.SelectionLength = Word.Length
			Me.RichTextBox1.ScrollToCaret()
			Revpos = Me.RichTextBox1.SelectionStart
		Else
			MsgBox("La chaine recherché n'exist pas dans la feuille . . !!", vbExclamation, "Resultat de recherche")
			Revpos = -1
		End If

	End Sub

واستخدامها سهل

للبحث للأمام

Search(TextBox1.Text)

or

Search(TextBox1.Text, False)

بما أن البارامتر الثاني اختياري وقيمته الافتراضية False

وللبحث للخلف

Search(TextBox1.Text, True)

كما قمت بضبط الخاصية HideSelection لـ RichTextBox إلى False حتى يظهر النص المظلل حتى لو لم يكن الـ RichTextBox يملك التركيز

تم تعديل هذه المشاركة بواسطة msas في 3 يوليو 2007 في 01:35

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

كما يمكن عمل تطوير بسيط آخر على الدالة بحيث يمكنك تجاهل الحالة أثناء البحث وفيما يلي الدالة Search المعدلة بعد إضافة الخيار MatchCase لبارامتراتها

	Public Sub Search(ByVal Word As String, _
			Optional ByVal Reverse As Boolean = False, _
			Optional ByVal MatchCase As Boolean = True)

		If Revpos = -1 Then
			Revpos = Me.RichTextBox1.TextLength
		End If

		If MatchCase = True Then
			If Reverse = False Then
				Position = Me.RichTextBox1.Text.IndexOf(Word, Position + 1)
			Else
				Position = Me.RichTextBox1.Text.LastIndexOf(Word, Revpos)
			End If
		Else
			If Reverse = False Then
				Position = Me.RichTextBox1.Text.ToUpper().IndexOf(Word.ToUpper, Position + 1)
			Else
				Position = Me.RichTextBox1.Text.ToUpper().LastIndexOf(Word.ToUpper, Revpos)
			End If
		End If

		If Position >= 0 Then
			Me.RichTextBox1.SelectionStart = Position
			Me.RichTextBox1.SelectionLength = Word.Length
			Me.RichTextBox1.ScrollToCaret()
			Revpos = Me.RichTextBox1.SelectionStart
		Else
			MsgBox("La chaine recherché n'exist pas dans la feuille . . !!", vbExclamation, "Resultat de recherche")
			Revpos = -1
		End If

	End Sub

وهذا مثال للدالة الجديدة

Search(TextBox1.Text, True, False)

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

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

كيف ابحث عن كلمة داخل نص بغض النظر

عن حجم الحروف.

يعني اذا قمت بالبحث عن الكلمة Visual

في النص التالي welcome to visual basic .net

النص يكون موجود في Richtextbox

وكانت كلمة Visual التي ادخلتها في Textbox للبحث عنها

تحتوي حرف كبير او اكثر من حرف كبير والكلمة الموجودة في

النص لا تحتوي حروف كبير فكيف اجعله يظلل الكلمة المهم ان

تكون نفس المعنى بغض النظر عن حجم الحروف.

ملاحظة: ادرجت مرفق يحتوي البرنامج لكن يحتاج الى تعديل

مع شكري للجميع ...

ShadingUpAndDown.zip

#5

في طرق البحث موجود دائما طريقتين للبحث وهي

binary و text

فاذا تم استخدام طريقة indexof للبحث يوجد بها هذا الخيار مثل

indexof("anything",CompareMethod.Text)

#6

يمكنك ايضا استعمال ال regular expression فهى موحده فى كل لغات البرمجه

وتقول له casesensisitive=false

#7

لقد تمت إجابتك عن هذا السؤال في موضوعك سؤال: البحث عن الكلمة من الأسفل الى الأعلى وحتى قبل أن تقومي بالسؤال عنه وذلك في المشاركة الأخيرة في الموضوع المذكور المشاركة رقم 3

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 8 يوليو 2007 في 01:43

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

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