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

كود البحث في أداة TreeView لا يعمل ؟؟؟

بدأه Visual Studio في 13 أبريل 2010 · 9 رد · 1,342 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي أداة TreeView اسمها TV1

و Textbox اسمه txtsearch

وز

كتبت الكود الآتي في زر أمر لعملية البحث وللأسف لم أحصل على أي نتيجة للبحث ولا أدري ما هو السبب ؟؟

Dim a As Integer
For a = 1 To TV1.Nodes.Count
If TV1.Nodes(a).Text = txtSearch.Text Then
TV1.Nodes(a).Selected = True
TV1.SetFocus
Exit Sub
End If
Next a
#3

السلام عليكم...

السبب هو أن المقارنة الافتراضية للنصوص في VB هي مقارنة ثنائية (Binary) حيث يكون هناك فرق بين الحروف الكبيرة (Capital) و الحروف الصغيرة (Small).

لديك حلان:

1. إما أن تعدل كود البحث باستعمال الدالة UCase (أو LCase) لتحويل النصين إلى حروف كبيرة (أو صغيرة):

Private Sub Command1_Click()
    Dim a As Integer

    For a = 1 To TV1.Nodes.Count
        If UCase$(TV1.Nodes(a).Text) = UCase$(txtSearch.Text) Then
            TV1.Nodes(a).Selected = True
            TV1.SetFocus
            Exit Sub
        End If
    Next a
End Sub

2. و إما أن تجعل المقارنة الافتراضية مقارنة نصية (Text) و ذلك بكتابة العبارة: Option Compare Text في بداية كود النافذة الموجود بها كود البحث. هذه الطريقة تجعل مقارنة النصوص في جميع أكواد هذه النافذة نصية (لكنها لا تؤثر في النوافذ الأخرى.).

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#6

السلام عليكم...

نعم يمكنك ذلك باستعمال العامل LIKE بدل = مع المقارنة بنمط (Pattern). هذا كود البحث بعد التعديل:

Private Sub Command1_Click()
    Dim a As Integer
    Dim Pattern As String

    ' ننشئ نمط البحث
    Pattern = "*" & UCase$(txtSearch.Text) & "*"

    For a = 1 To TV1.Nodes.Count
        ' نبحث بالمقارنة الجزئية
        If UCase$(TV1.Nodes(a).Text) Like Pattern Then
            TV1.Nodes(a).Selected = True
            TV1.SetFocus
            Exit Sub
        End If
    Next a
End Sub

طبعاً حسب الحلقة في هذا الكود، البحث سيبدأ دائماً عند أول Node في الـ TreeView و يتوقف عند أول تطابق جزئي، لكن يمكنك أن تجعل الحلقة تبدأ عند الـ SelectedItem في الـ TreeView للبحث عن التالي، و هكذا...

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#7
Visual Studio كتب:

السلام عليكم

عندي أداة TreeView اسمها TV1

و Textbox اسمه txtsearch

وز

كتبت الكود الآتي في زر أمر لعملية البحث وللأسف لم أحصل على أي نتيجة للبحث ولا أدري ما هو السبب ؟؟

Dim a As Integer
For a = 1 To TV1.Nodes.Count
If TV1.Nodes(a).Text = txtSearch.Text Then
TV1.Nodes(a).Selected = True
TV1.SetFocus
Exit Sub
End If
Next a

الأخ الفاضل الكود سليم ولكن يجب مراعاة حالة الأحرف

يمكنك استبدال السطر

If TV1.Nodes(a).Text = txtSearch.Text Then

بالسطر

If UCase(TV1.Nodes(a).Text) = UCase(txtSearch.Text) Then

لتجنب حالة الأحرف

ويمكنك استبداله ايضا بالسطر التالى للبحث بجزء من الكلمة

If UCase(TV1.Nodes(a).Text) Like UCase(txtSearch.Text) & "*" Then

كن كالنخيل عن الأحقاد مرتفعا .. يرمى بصخر فيرمى أطيب الثمر

#9

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

بعد إذن الإخوة الأفاضل

وضعت لك المثال مع تلوين الكلمة وأيضاً سيتم البحث عن التالي حتى لو كتبت داخل مربع النص دون ضغط الزر

وتستطيع إلغاء هذه الميزة

على كلٍ : الكود بالمرفقات اطلع عليه جيداً واقرأ الملاحظات

ولا تنسانا من دعاءك

:)

بحث في الشجرة.rar

فاعلم أنه لا إله إلا الله

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