PDA

View Full Version : سوال: رنگی کردن موردی که توسط جستجو پیدا شده



nedaei
شنبه 11 دی 1395, 13:18 عصر
با سلام من یک برنامه قرآنی دارم آماده میکنم میخام وقتی آیه ای یا کمله ای رو در قرآن سرچ کردم جواب رو رنگی نشون بده ضمنا من با ریچ تکس باکس کار میکنم
ممنون میشم

windowsyar
شنبه 11 دی 1395, 19:13 عصر
سلام
چون برنامه تون قرآنی هست احتمالا می خواهید در بین کلمات با اعراب جستجو کنید و کلمات را رنگی کنید
متنی که می خواهید جستجو شود در txt_search بنویسید
حدیثتون که در Rich_matn1.Text قرار دارد

Dim _Txt As String = Rich_matn1.Text
Dim erab As String = "[ًٌٍَُِّْ]*"
Dim tx() As Char = Far2Ar(txt_search.Text)
Dim xt(tx.Length - 1) As String
For h As Integer = 0 To tx.Length - 1
xt(h) = tx(h)
Next
Dim rg As String = Join(xt, erab) & erab
rg = rg.Replace("ک", "[كک]").Replace("ي", "[یىي]").Replace("ا", "[آاإأ]")



'Clear Prevous Highlighting
Dim matchs As MatchCollection = Regex.Matches(_Txt, rg)
For m As Integer = matchs.Count - 1 To 0 Step -1
Dim s As Integer = matchs(m).Index
Dim l As Integer = matchs(m).Length
Rich_matn1.Select(s, l)
Rich_matn1.SelectionColor = Color.Blue
Rich_matn1.SelectionBackColor = Me.BackColor
Next


و این تابع را هم وارد کنید

Friend Function Far2Ar(ByRef Valus As String) As String


Valus = Valus.Replace("ی", "ي").Replace("ک", "ك").Replace("ة", "ه")


Return Valus


End Function

windowsyar
شنبه 11 دی 1395, 22:43 عصر
با توجه به این که فرمودید جستجو بدون اعراب را در ریچ تکس باکس می خواهید کد آن را هم در این سورس برای شما قرار دادم
----------------
من نمی دانم برنامه شما به چه صورتی است
ولی در برنامه هایی که من برای قرآن نوشتم و از سورس هایی که برای قرآن دیدم
دو ستون کردن فقط برای یافتن نتایج جستجو کاربرد دارد
ولی هنگامی که شما یک آیه را با اعراب به کاربر نمایش دادید
باید با کد جستجو با اعراب آن کلمه را دارای رنگ متفاوت کنید
-----------------
در کل خوشحال می شم بتونم در این کار خیر کمکتون بکنم

nedaei
یک شنبه 12 دی 1395, 20:18 عصر
با سلام این هم کدها


Dim a, b, d As String
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader
While dr.Read()
a = dr("Ayehtext").ToString
b = dr("AyehNo").ToString
'c = dr("FaTranslate").ToString
d = dr("SorehName").ToString
RichTextBox1.Text += (a + "(" + b + "/" + d + ")" + vbCrLf)
End While


Dim x As Integer = 0
x = RichTextBox1.Text.IndexOf(TextBox1.Text, x)
Do While x <> -1
RichTextBox1.Select(x, TextBox1.Text.Length)
x += 1
RichTextBox1.SelectionColor = Color.Red
x = RichTextBox1.Text.IndexOf(TextBox1.Text, x)


Loop


cnn.Close()

windowsyar
یک شنبه 12 دی 1395, 22:03 عصر
از این کد استفاده کنید

Dim a, b, d As String
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader
While dr.Read()
a = dr("Ayehtext").ToString
b = dr("AyehNo").ToString
'c = dr("FaTranslate").ToString
d = dr("SorehName").ToString
RichTextBox1.Text += (a + "(" + b + "/" + d + ")" + vbCrLf)
End While
Dim _Txt As String = RichTextBox1.Text
Dim erab As String = "[ًٌٍَُِّْ]*"
Dim tx() As Char = Far2Ar(TextBox1.Text)
Dim xt(tx.Length - 1) As String
For h As Integer = 0 To tx.Length - 1
xt(h) = tx(h)
Next
Dim rg As String = Join(xt, erab) & erab
rg = rg.Replace("ک", "[كک]").Replace("ي", "[یىي]").Replace("ا", "[آاإأ]"
Dim matchs As MatchCollection = Regex.Matches(_Txt, rg)
For m As Integer = matchs.Count - 1 To 0 Step -1
Dim s As Integer = matchs(m).Index
Dim l As Integer = matchs(m).Length
RichTextBox1.Select(s, l)
RichTextBox1.SelectionColor = Color.Red
Next
cnn.Close()


و در آخر قبل از End Class بنویسید

Friend Function Far2Ar(ByRef Valus As String) As String
Valus = Valus.Replace("ی", "ي").Replace("ک", "ك").Replace("ة", "ه")
Return Valus
End Function

در اول این را هم imports کنید

Imports System.Text.RegularExpressions