تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تحديد كلمة من مجموعة كلمات في التكست بوكس
#1
بسم الله الرحمن الرحيم


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


كيف يمكن تحديد كلمة من مجموعة كلمات في TextBox أو RichTextBox عند الوقوف عليها وضغط زر الموس الأيمن وهذه الكلمات مفصولة بالمسافة
مثال:
يوجد تكس بوكس مكتوب به My name is Ismail
عند الوقوف مثلا على كلمة name وضغط زر الموس الأيمن يتم تظليل الكلمة name فقط ويتم ظهور القائمة التي بها نسخ لصق الخ طبعا عند الصغط نسخ يتم نسخ الكلمة المظله فقط
شكرا مقدما
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته

تفضل أخي الكريم
وإن شاء الله الشرح يكون واضح

كود :
[color=#0000FF]Public Class [/color][COLOR="#2B91AF"]Form1
[/COLOR][color=#0000FF]#Region [/color][COLOR="#A31515"]"API Declaration"
    [/COLOR][color=#0000FF]Private Declare Sub [/color][color=#000000]mouse_event [/color][color=#0000FF]Lib [/color][color=#A31515]"user32" [/color][color=#0000FF]Alias [/color][color=#A31515]"mouse_event" [/color][color=#000000]([/color][color=#0000FF]ByVal [/color][color=#000000]dwFlags [/color][color=#0000FF]As UInteger[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]dx [/color][color=#0000FF]As UInteger[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]dy [/color][color=#0000FF]As UInteger[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]cButtons [/color][color=#0000FF]As UInteger[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]dwExtraInfo [/color][color=#0000FF]As UInteger[/color][COLOR="#000000"])
    [/COLOR][color=#0000FF]Private Const [/color][color=#000000]MOUSEEVENTF_LEFTDOWN = &H2 [/color][COLOR="#008000"]' left button down
    [/COLOR][color=#0000FF]Private Const [/color][color=#000000]MOUSEEVENTF_LEFTUP = &H4 [/color][COLOR="#008000"]' left button up
    [/COLOR][color=#0000FF]Private Const [/color][color=#000000]MOUSEEVENTF_MIDDLEDOWN = &H20 [/color][COLOR="#008000"]' middle button down
    [/COLOR][color=#0000FF]Private Const [/color][color=#000000]MOUSEEVENTF_MIDDLEUP = &H40 [/color][COLOR="#008000"]' middle button up
    [/COLOR][color=#0000FF]Private Const [/color][color=#000000]MOUSEEVENTF_RIGHTDOWN = &H8 [/color][COLOR="#008000"]' right button down
    [/COLOR][color=#0000FF]Private Const [/color][color=#000000]MOUSEEVENTF_RIGHTUP = &H10 [/color][COLOR="#008000"]' right button up
[/COLOR][COLOR="#0000FF"]#End Region
    Private Sub [/COLOR][color=#000000]TextBox1_Click([/color][color=#0000FF]ByVal [/color][color=#000000]sender [/color][color=#0000FF]As Object[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]e [/color][color=#0000FF]As [/color][color=#000000]System.[/color][color=#2B91AF]EventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles [/color][COLOR="#000000"]TextBox1.Click
        [/COLOR][COLOR="#0000FF"]Try
            [/COLOR][COLOR="#008000"]'التأكد من وجود نص داخل أداة النص
            [/COLOR][color=#0000FF]If [/color][color=#000000]TextBox1.Text = [/color][color=#A31515]"" [/color][COLOR="#0000FF"]Then Exit Sub
            [/COLOR][COLOR="#008000"]'متغيرين لتحديد بداية ونهاية الكلمة
            [/COLOR][color=#0000FF]Dim [/color][color=#000000]FirstLetter, LastLetter [/color][COLOR="#0000FF"]As Integer
            [/COLOR][COLOR="#008000"]'تحديد بداية الكلمة
            'وذلك عن طريق البحث عن مسافة أمام الكلمة
            [/COLOR][color=#000000]FirstLetter = TextBox1.Text.Substring(0, TextBox1.SelectionStart).LastIndexOf([/color][color=#A31515]" "[/color][COLOR="#000000"]) + 1
            [/COLOR][COLOR="#008000"]'لتحديد نهاية الكلمة
            [/COLOR][color=#000000]LastLetter = TextBox1.Text.IndexOf([/color][color=#A31515]" "[/color][COLOR="#000000"], FirstLetter)
            [/COLOR][COLOR="#008000"]'إذا كان نهاية الكلمة أصغر من بدايتها
            'فهذا يعني أن الكلمة المطلوبة تقع آخر النص
            [/COLOR][color=#0000FF]If [/color][color=#000000]LastLetter < FirstLetter [/color][color=#0000FF]Then [/color][COLOR="#000000"]LastLetter = TextBox1.TextLength
            [/COLOR][COLOR="#008000"]'تظليل الكلمة بعد أن عرفنا البداية والنهاية
            [/COLOR][COLOR="#000000"]TextBox1.SelectionStart = FirstLetter
            TextBox1.SelectionLength = LastLetter - FirstLetter
            [/COLOR][COLOR="#008000"]'هنا اظهرنا القائمة وذلك بطريقة
            'محاكاة النقر زر الفأرة الأيمن
            [/COLOR][COLOR="#000000"]mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
            mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
        [/COLOR][color=#0000FF]Catch [/color][color=#000000]ex [/color][color=#0000FF]As [/color][COLOR="#2B91AF"]Exception

        [/COLOR][COLOR="#0000FF"]End Try
    End Sub
End Class
[/COLOR]

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#3
شكرا لك أخي sooriaty03 ولكن أريد تظليل الكلمة عتد الضغط على زر الموس الأيمن وليس الأيسر لكي أستطيع تعديل الكلمة مثلا
وياريت إن كان في طريقة غير استخدام دوال API كنت وجدت طريقة في موقع أجنبي تستخدم الحدث MouseDown ولكن تظلل الكلمة عند الضغط على زر الموس الأيسر
شكرا مرة أخرى
الرد }}}
تم الشكر بواسطة:
#4
وويش فيها الAPI ؟

لعلمك الدوت نت نفسه يستعمل الAPI

انما الدوال التي تراها مجرد "تغليف" للAPI

--

يمكنك استعمال الحدث Mouse_click لمعرفة الزر الذي تم الضغط عليه :
PHP كود :
Private Sub textBox1_MouseClick(sender As ObjectAs MouseEventArgsHandles textbox1.text
    
If e.Button MouseButtons.Right Then
               
'ضع كود اخي sooriaty03'
    
End If
End Sub 
الرد }}}
تم الشكر بواسطة:
#5
السلام عليكم ورحمة الله وبركاته

تفضل أخي الكريم

كود :
[color=#0000FF]Public Class [/color][COLOR="#2B91AF"]Form1
    [/COLOR][color=#0000FF]Private Sub [/color][color=#000000]TextBox1_MouseDown([/color][color=#0000FF]ByVal [/color][color=#000000]sender [/color][color=#0000FF]As Object[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]e [/color][color=#0000FF]As [/color][color=#000000]System.Windows.Forms.[/color][color=#2B91AF]MouseEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles [/color][COLOR="#000000"]TextBox1.MouseDown
        [/COLOR][color=#0000FF]If [/color][color=#000000]e.Button = MouseButtons.Right [/color][COLOR="#0000FF"]Then
            Try
                [/COLOR][COLOR="#008000"]'التأكد من وجود نص داخل أداة النص
                [/COLOR][color=#0000FF]If [/color][color=#000000]TextBox1.Text = [/color][color=#A31515]"" [/color][COLOR="#0000FF"]Then Exit Sub
                [/COLOR][COLOR="#008000"]'متغيرين لتحديد بداية ونهاية الكلمة
                [/COLOR][color=#0000FF]Dim [/color][color=#000000]FirstLetter, LastLetter [/color][COLOR="#0000FF"]As Integer
                [/COLOR][COLOR="#008000"]'تحديد بداية الكلمة
                'وذلك عن طريق البحث عن مسافة أمام الكلمة
                [/COLOR][color=#000000]FirstLetter = TextBox1.Text.Substring(0, TextBox1.SelectionStart).LastIndexOf([/color][color=#A31515]" "[/color][COLOR="#000000"]) + 1
                [/COLOR][COLOR="#008000"]'لتحديد نهاية الكلمة
                [/COLOR][color=#000000]LastLetter = TextBox1.Text.IndexOf([/color][color=#A31515]" "[/color][COLOR="#000000"], FirstLetter)
                [/COLOR][COLOR="#008000"]'إذا كان نهاية الكلمة أصغر من بدايتها
                'فهذا يعني أن الكلمة المطلوبة تقع آخر النص
                [/COLOR][color=#0000FF]If [/color][color=#000000]LastLetter < FirstLetter [/color][color=#0000FF]Then [/color][COLOR="#000000"]LastLetter = TextBox1.TextLength
                [/COLOR][COLOR="#008000"]'تظليل الكلمة بعد أن عرفنا البداية والنهاية
                [/COLOR][COLOR="#000000"]TextBox1.SelectionStart = FirstLetter
                TextBox1.SelectionLength = LastLetter - FirstLetter
            [/COLOR][color=#0000FF]Catch [/color][color=#000000]ex [/color][color=#0000FF]As [/color][COLOR="#2B91AF"]Exception

            [/COLOR][COLOR="#0000FF"]End Try
        End If
    End Sub
End Class
[/COLOR]

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#6
شكرا الشاكي لله وشكرا للأخ sooriaty03 الكود تمام ولكن يحتاج لمسه أخيره وهي أنه يتم تظليل الكلمة التي تحت المؤشر حتى عند الأنتقال للكلمة الأخري مثلا لو المؤشر في الكلمة التي في الوسط وذهبت للكلمة الأولى وضغط زر الموس الأيمن يتم تظليل الكلمة التي في الوسط أي التي بها مؤشر الكتابة نريد تظليل الكلمة التي يتم الضغط عليها
أشكر الجميع على التفاعل والمشاركة
الرد }}}
تم الشكر بواسطة:
#7
ismail2012 كتب :شكرا الشاكي لله وشكرا للأخ sooriaty03 الكود تمام ولكن يحتاج لمسه أخيره وهي أنه يتم تظليل الكلمة التي تحت المؤشر حتى عند الأنتقال للكلمة الأخري مثلا لو المؤشر في الكلمة التي في الوسط وذهبت للكلمة الأولى وضغط زر الموس الأيمن يتم تظليل الكلمة التي في الوسط أي التي بها مؤشر الكتابة نريد تظليل الكلمة التي يتم الضغط عليها
أشكر الجميع على التفاعل والمشاركة

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

هناك مشاركة لأخي وأستاذي أبورائد بهذا الخصوص وقد اقتبست منه الطريقة ليصبح الكود بالشكل التالي

كود :
[color=#0000FF]Public Class [/color][COLOR="#2B91AF"]Form1
    [/COLOR][color=#0000FF]Private Sub [/color][color=#000000]TextBox1_MouseDown([/color][color=#0000FF]ByVal [/color][color=#000000]sender [/color][color=#0000FF]As Object[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]e [/color][color=#0000FF]As [/color][color=#000000]System.Windows.Forms.[/color][color=#2B91AF]MouseEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles [/color][COLOR="#000000"]TextBox1.MouseDown
        [/COLOR][color=#0000FF]If [/color][color=#000000]e.Button = MouseButtons.Right [/color][COLOR="#0000FF"]Then
            Try
                [/COLOR][COLOR="#008000"]'التأكد من وجود نص داخل أداة النص
                [/COLOR][color=#0000FF]If [/color][color=#000000]TextBox1.Text = [/color][color=#A31515]"" [/color][COLOR="#0000FF"]Then Exit Sub
                [/COLOR][COLOR="#008000"]'هذه الخطوة مقتبسة من مثال للأخ الحبيب أبورائد
                'Richtextbox بعنوان كيف اعرف موقع الكلمة من الــ
                'http://vb4arb.com/vb/showthread.php?6229-%DF%ED%DD-%C7%DA%D1%DD-%E3%E6%DE%DA-%C7%E1%DF%E1%E3%C9-%E3%E4-%C7%E1%DC%DC-Richtextbox&p=24881&viewfull=1#post24881
                [/COLOR][color=#0000FF]Dim [/color][color=#000000]cursorAt [/color][color=#0000FF]As Integer [/color][COLOR="#000000"]= sender.GetCharIndexFromPosition(e.Location)
                [/COLOR][COLOR="#008000"]'متغيرين لتحديد بداية ونهاية الكلمة
                [/COLOR][color=#0000FF]Dim [/color][color=#000000]FirstLetter, LastLetter [/color][COLOR="#0000FF"]As Integer
                [/COLOR][COLOR="#008000"]'تحديد بداية الكلمة
                'وذلك عن طريق البحث عن مسافة أمام الكلمة
                [/COLOR][color=#000000]FirstLetter = TextBox1.Text.Substring(0, cursorAt).LastIndexOf([/color][color=#A31515]" "[/color][COLOR="#000000"]) + 1
                [/COLOR][COLOR="#008000"]'لتحديد نهاية الكلمة
                [/COLOR][color=#000000]LastLetter = TextBox1.Text.IndexOf([/color][color=#A31515]" "[/color][COLOR="#000000"], FirstLetter)
                [/COLOR][COLOR="#008000"]'إذا كان نهاية الكلمة أصغر من بدايتها
                'فهذا يعني أن الكلمة المطلوبة تقع آخر النص
                [/COLOR][color=#0000FF]If [/color][color=#000000]LastLetter < FirstLetter [/color][color=#0000FF]Then [/color][COLOR="#000000"]LastLetter = TextBox1.TextLength
                [/COLOR][COLOR="#008000"]'تظليل الكلمة بعد أن عرفنا البداية والنهاية
                [/COLOR][COLOR="#000000"]TextBox1.SelectionStart = FirstLetter
                TextBox1.SelectionLength = LastLetter - FirstLetter
            [/COLOR][color=#0000FF]Catch [/color][color=#000000]ex [/color][color=#0000FF]As [/color][COLOR="#2B91AF"]Exception

            [/COLOR][COLOR="#0000FF"]End Try
        End If
    End Sub
End Class[/COLOR]

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#8
بارك الله فيك أخي sooriaty03 هذا هو المطلوب
لدي طلب آخر لو سمحت
كيف يمكن إضافة خانة جديدة في القائمة التي تظهر عند ضغط زر الموس الأيمن
مثلا كيف يمكن إضافة خانة باسم Word تحت SelectAll في القائمة وبها قائمة فرعية بحجم الكلمة المظلله وتحتوي علي الكلمة المظلله ويكون ذلك في القائمة الإفتراضية للتكست بوكس وليس ContextMenustrip
الرد }}}
تم الشكر بواسطة:
#9
توجد مشكلة في الكود SelectAll غير مقعله
الرد }}}
تم الشكر بواسطة:
#10
عفوا الخطأ في برنامجي Big Grin
لقد أضفت ContextMenustrip وأضفت ليها عنصر وكتبت به SelectAll ونسيت أن أضيف الكودRolleyes
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم