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

تلوين كلمات الفيجول نيت

بدأه booknet في 30 أغسطس 2009 · 8 رد · 688 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

في المثال المرفق كود لتلوين كود الفيجول نيت، ولكن فيه بعض العيوب مثل أن الكلمات الزرقاء تبقى زرقاء حتى في السطور الخضراء

فإذا ممكن تعديله أو هناك كود بديل له.

جزاكم الله خيرا

Coloring.rar

تم تعديل هذه المشاركة بواسطة booknet في 30 أغسطس 2009 في 12:19

#2

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

استبدل كود الإجراء ColorLineNumber بهذا الكود

  1.  
  2. Public Sub ColorLineNumber(ByVal rtb As RichTextBox, ByVal LineIndex As Integer, ByVal lStart A
    s Integer)
  3. Dim Line As String = rtb.Lines(LineIndex).ToLower
  4. Dim i As Integer = 0
  5. Dim Instance, commentPos As Integer
  6. Dim SelectionAt As Integer = rtb.SelectionStart
  7.  
  8. ' Lock the update
  9. LockWindowUpdate(rtb.Handle.ToInt32)
  10.  
  11. ' Color the line black to remove any previous coloring
  12. rtb.SelectionStart = lStart
  13. rtb.SelectionLength = Line.Length 'test
  14. rtb.SelectionColor = Color.Black
  15.  
  16. ' Find any comments
  17. Instance = InStr(Line, "'")
  18. commentPos = Instance
  19.  
  20. ' If there are comments, color them
  21. If Instance <> 0 Then
  22. rtb.SelectionStart = (lStart + Instance - 1)
  23. rtb.SelectionLength = (Line.Length - Instance + 1)
  24. rtb.SelectionColor = Color.Green
  25. End If
  26.  
  27. ' There was a comment, so to aviod coloring over the comment
  28. ' we exit. Unfortunately, this can present a problem 'cuz
  29. ' what if the user comments at the end of a line with code on it.
  30. If Instance = 1 Then
  31. ' Unlock the update, restore the start and exit
  32. rtb.SelectionStart = SelectionAt
  33. rtb.SelectionLength = 0
  34. LockWindowUpdate(0)
  35. Exit Sub
  36. End If
  37.  
  38. ' Loop through all the Keywords
  39. While i < Words.Length
  40.  
  41. ' See if the word is in the Line
  42. Instance = InStr(Line, Words(i).Word)
  43.  
  44. ' If the lines contains the word, color it
  45. If Instance <> 0 AndAlso (commentPos = 0 OrElse Instance < commentPos) Then
  46. rtb.SelectionStart = (lStart + Instance - 1)
  47. rtb.SelectionLength = Words(i).Word.Length
  48. rtb.SelectionColor = Words(i).Color
  49. End If
  50.  
  51. i += 1
  52. End While
  53.  
  54. ' Restore the selectionstart
  55. rtb.SelectionStart = SelectionAt
  56. rtb.SelectionLength = 0
  57.  
  58. ' Unlock the update
  59. LockWindowUpdate(0)
  60. End Sub
  61.  

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

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

جزاك الله خيرا أخي العزيز وزادك الله علما

بقى شيئا واحدا، وهو هل من الممكن أن تصبح الكلمات التي بين الفاصلتين بلون أحمر مثل:

MsgBox("test")

وشكرا

#4

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

هناك شيئا آخر وهو إذا تكررت الكلمة في السطر أكثر من مرة يتم تلوين الكلمة الأولى فقط مثل تكرا كلمة ByVal في السطر الواحد.

وشكرا

#5

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

هذا هو الكود بعد التعديل

  1.  
  2. Public Sub ColorLineNumber(ByVal rtb As RichTextBox, ByVal LineIndex As Integer, ByVal lStart A
    s Integer)
  3. Dim Line As String = rtb.Lines(LineIndex).ToLower
  4. Dim i As Integer = 0
  5. Dim Instance, commentPos As Integer
  6. Dim SelectionAt As Integer = rtb.SelectionStart
  7.  
  8. ' Lock the update
  9. LockWindowUpdate(rtb.Handle.ToInt32)
  10.  
  11. ' Color the line black to remove any previous coloring
  12. rtb.SelectionStart = lStart
  13. rtb.SelectionLength = Line.Length 'test
  14. rtb.SelectionColor = Color.Black
  15.  
  16. ' Find any comments
  17. Instance = InStr(Line, "'")
  18. commentPos = Instance
  19.  
  20. ' If there are comments, color them
  21. If Instance <> 0 Then
  22. rtb.SelectionStart = (lStart + Instance - 1)
  23. rtb.SelectionLength = (Line.Length - Instance + 1)
  24. rtb.SelectionColor = Color.Green
  25. End If
  26.  
  27. ' There was a comment, so to aviod coloring over the comment
  28. ' we exit. Unfortunately, this can present a problem 'cuz
  29. ' what if the user comments at the end of a line with code on it.
  30. If Instance = 1 Then
  31. ' Unlock the update, restore the start and exit
  32. rtb.SelectionStart = SelectionAt
  33. rtb.SelectionLength = 0
  34. LockWindowUpdate(0)
  35. Exit Sub
  36. End If
  37.  
  38. ' Loop through all the Keywords
  39. While i < Words.Length
  40. Instance = 0
  41. Do
  42. ' See if the word is in the Line
  43. Instance = InStr(Instance + 1, Line, Words(i).Word)
  44.  
  45. ' If the lines contains the word, color it
  46. If Instance <> 0 AndAlso (commentPos = 0 OrElse Instance < commentPos) Then
  47. rtb.SelectionStart = (lStart + Instance - 1)
  48. rtb.SelectionLength = Words(i).Word.Length
  49. rtb.SelectionColor = Words(i).Color
  50. End If
  51. Loop Until Instance = 0
  52.  
  53. i += 1
  54. End While
  55.  
  56. ' Restore the selectionstart
  57. rtb.SelectionStart = SelectionAt
  58. rtb.SelectionLength = 0
  59.  
  60. ' Unlock the update
  61. LockWindowUpdate(0)
  62. End Sub
  63.  

أما عن طريقة تلوين النصوص بين علامتى الاقتباس فهو أمر يحتاج إلى بعض العمل الإضافى لكنى الآن فى العمل فانتظرنى حتى أعود للبيت وإن شاء الله تجد الحل

وبالمناسبة توجد طريقة للبحث عن الكلمات أسهل من هذه الطريقة ولا تعرضك لمثل هذه المشاكل وسأوضحها لك أيضا عند عودتى من العمل إن شاء الله ,,

لا تغير المحطة :D

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#6
GHOST2010 كتب:
السلام عليكــم ورحمـة الله وبركاتــه ،،

أما عن طريقة تلوين النصوص بين علامتى الاقتباس فهو أمر يحتاج إلى بعض العمل الإضافى لكنى الآن فى العمل فانتظرنى حتى أعود للبيت وإن شاء الله تجد الحل

وبالمناسبة توجد طريقة للبحث عن الكلمات أسهل من هذه الطريقة ولا تعرضك لمثل هذه المشاكل وسأوضحها لك أيضا عند عودتى من العمل إن شاء الله ,,

لا تغير المحطة :D

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

جزاك الله خيرا وزادك علما

وأنا في الإنتظار

شكرا

#7

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

أعتذر عن التأخير نظرا لبعض الظروف لدى

قمت بعمل هذا المثال سريعا

المثال به بعض القصور ويحتاج لبعض العمل لكنه يوضح الفكرة المطلوبة واعذرنى لأننى لم أجد الوقت الكافى لعمل المثال كاملا لكن إن شاء الله بمجرد انتهاء هذه الظروف سأقوم بعمل مثال كامل عن هذا الموضوع وبه كل ما تريد لكن هذا المثال كافيا الآن لتوضيح الفكرة

إن كانت لديك خبرة مع Regular Expressions فيمكنك تطبيق هذا الأمر بطريقة أسهل وأسرع بكثير من الطريقة المستخدمة حاليا

Keywords_Coloring.rar

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#8

شكرا لك أخي العزيز وبارك الله فيك وزادك علما

لقد استخدمت الكود الأخير وهو روعة في التلوين والسرعة ولقد جربته على 24 صفحة كود يلونها بضربة واحدة ولم أرى فيه أي عيوب سوى أنه لو وضعت الكود في "rtbCode_TextChanged" وكتبت أي شيئ يرجع مؤشر الماوس الى الكلمة السابقة.

شكرا لك

#9
booknet كتب:
شكرا لك أخي العزيز وبارك الله فيك وزادك علما

لقد استخدمت الكود الأخير وهو روعة في التلوين والسرعة ولقد جربته على 24 صفحة كود يلونها بضربة واحدة ولم أرى فيه أي عيوب سوى أنه لو وضعت الكود في "rtbCode_TextChanged" وكتبت أي شيئ يرجع مؤشر الماوس الى الكلمة السابقة.

شكرا لك

ياليت تتكرم تعديله ولك جزيل الشكر

وهل يمكن يتم تلقائي بدون الضغط على زر ؟

تم تعديل هذه المشاركة بواسطة أبومجاهد في 7 سبتمبر 2009 في 05:51

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