منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف اعرف موقع الكلمة من الــ Richtextbox
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله
أخواني كيف اعرف موقع الكلمة في الــ RichTextBox إن كانت الاولى او الثانية او ....
مثلا هذا الكود يعطيك عدد الكلمات الموجودة في الــ RichTextBox
PHP كود :
MsgBox(RichTextBox1.Text.Split.Count

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

ارجو الافادة بارك الله فيكم
السلام عليكم
تفضل اخي هذا الكود لكل حالة طلبتها
إقتباس :لكن انا ريد عند وضع المؤشر على أي كلمة ان ياتيني برقمها التسلسلي
TextBox2.Text = RichTextBox1.SelectionStart
إقتباس :أو
ياتي بالكلمة نفسها اذا وضعت المؤشر عليها
TextBox1.Text = RichTextBox1.SelectedText
شكرا اخ محمود
ولكن الذي اقصدة ان ياتيني برقم الكلمة وليس الحرف وكل شيء
يعني لوكن في الــ Richtextbox هذه العبارة
إقتباس :بسم الله الرحمن الرحيم
ووضعن المؤشر فوق كلمة
إقتباس :الرحمن
اريده يعطيني رقم 3 لانها ثالث كلمة أما بالطرقة التي وضعتها انت فانه يعطيني الرقم 13 لانه حسب الحروف والمسافات
هل تقصد عندما تضللها ام فقط وضعت المؤشر على الكلمة
لا فقط عند وضع المؤشر عليها
لان طريقة تظليل الكلمة اعرفها
سأحاول اعطيني فرصة للغد :o
بعد إذنك أخي محمود أكرم، كتبت هذا الكود إن شاء الله يلبي طلبك أخي أبو ريناد الحربي
PHP كود :
Public Class Form1

    
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        MsgBox
("Index: " GetWordIndex(RichTextBox1.TextRichTextBox1.SelectionStart_
               
vbCrLf _
               
"Length: " GetWordLength(RichTextBox1.TextRichTextBox1.SelectionStart))

    
End Sub

    
Public Function GetWordIndex(ByVal text As StringByVal selection As Integer) As Integer
        Dim length 
As Integer text.Length
        
If selection >= length OrElse selection 0 Then Return -1
        Dim index 
As Integer selection
        
Do Until index 0
            
If text.Chars(index) = " "c OrElse text.Chars(index) = vbCrLf Then Exit Do
            
index -= 1
        Loop
        Dim splt 
As String() = text.Split(New Char() {" "cvbCrLf})
        
Dim count As Integer 0
        
For As Integer 0 To splt.Length 1
            
If count index Then
                
Return 1
            End 
If
            If 
0 Then
                count 
+= splt(I).Length 1
            
Else
                
count += splt(I).Length
            End 
If
        
Next
        
Return -1
    End 
Function

    Public Function 
GetWordLength(ByVal text As StringByVal selection As Integer) As Integer
        Dim length 
As Integer text.Length
        
If selection >= length OrElse selection 0 Then Return -1
        Dim index 
As Integer selection
        
Do Until index 0
            
If text.Chars(index) = " "c OrElse text.Chars(index) = vbCrLf Then Exit Do
            
index -= 1
        Loop
        
If index 0 Then
            Dim firstSpace 
As Integer text.IndexOf(" "c)
            
Dim firstLine As Integer text.IndexOf(vbCrLf)
            If 
firstSpace = -1 AndAlso firstLine = -1 Then Return text.Length
            
If firstSpace = -1 Then Return firstLine
            
If firstLine = -1 Then Return firstSpace
            
If firstLine firstSpace Then Return firstSpace Else Return firstLine
        End 
If
        
Dim spaceIndex As Integer text.Substring(index 1).IndexOf(" "c)
        
Dim lineIndex As Integer text.Substring(index 1).IndexOf(vbCrLf)
        If 
spaceIndex = -1 AndAlso lineIndex = -1 Then Return text.Substring(index 1).Length
        
If spaceIndex = -1 Then Return lineIndex
        
If lineIndex = -1 Then Return spaceIndex
        
If spaceIndex lineIndex Then
            
Return lineIndex
        
Else
            Return 
spaceIndex
        End 
If
        Return -
1
    End 
Function
End Class 
السلام عليكم وبعد اذنك اخ Aly El-Haddad هذا كود اسهل للفهم وللسرعة
بما انك اخ Aly El-Haddad استعملت اداة القطع Split لذا استخدمتها بشكل اسهل واسرع
إقتباس :Dim wd
Dim m, x As Long
wd = Split(RichTextBox1.Text, " ")
For Each y In wd
x = x + Len(y) + 1
If x > RichTextBox1.SelectionStart Then
m = x - (Len(y) + 1)
MsgBox(y)
RichTextBox1.SelectionStart = m
RichTextBox1.SelectionLength = Len(y)
RichTextBox1.Focus()
Exit For
End If
Next
Big GrinBig GrinBig GrinBig Grin

استمتعوا بالكود ارجوا ان يكون هو المطلوب
جزاكم الله خيرا يا اخوان
كنت اظن ان هنالك كود صغير من ضمن خيارة الــ RichTextBox لكن يبد انه لا يوجد
شكرا مرة اخرى
أبو ريناد الحربي كتب :أو
ياتي بالكلمة نفسها اذا وضعت المؤشر عليها


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



الحمد لله الذي بنعمته تتم الصالحات



إذا كنت تقصد بالمؤشر مؤشر الماوس وليس مؤشر الكتابة جرب هذا المثال (وجدته بمواقع متعددة وقمت بتحسينه)







السلام عليكم ورحمة الله وبركاته
الصفحات : 1 2