نمایش نتایج 1 تا 16 از 16

نام تاپیک: ایجاد search و سطح بندی در tree view

  1. #1

    ایجاد search و سطح بندی در tree view

    باسلام و عرض خسته نباشید خدمت تمامی دوستان گرامی
    دوستان بنده در فایل پیوستی یک نمونه از نمودار tree view قرار دادم که میخوام در واقع از طریق ایجاد ارتباط بین این نمودار و یک دیتابیس اکسس ، اطلاعاتم رو از طریق این نمودار وارد دیتابیس کنم
    اما مشکلم در اینجاست:
    1) چون حجم اطلاعات و تعداد شاخه های این نمودار در پروژه من خیلی زیاد میشه و دسترسی سریع به اطلاعات هم برام سخت میشه ، میخواستم توسط یک تکست باکس و یک دکمه برای این نمودار یه سیستم سرچ ساده درست کنم که با وارد کرد کلمه مدنظر اون شاخه منطبق با کلمه کلیدی select شود و با زدن دوباره دکمه به شاخه منطبق دیگر (منطبق با کلمه کلیدی) برود مثل find next برنامه هایی مثل word و اکسل و...
    2) یک سری دکمه هم وجود دره که میخوام با کلیک بر روی اونها سطح مشخصی از نمودار به نمایش دربیاد
    مثلاً وقتی رو دکمه سطح1 کلیک میکنم فقط سطح یک نمودار باز بشه و وقتی روی دکمه سطح3 کلیک میکنم نمودار فقط تا سطح3 نمایش داده بشه نه بیشتر و همینطور الی آخر
    مثلاً الان زمانیکه بر روی منوی Expand کلیک میکنیم تمام سطوح نمودار نمایش داده میشه.
    بعد یک سئوال دیگه هم دارم:
    چرا کار با این tree view اینقدر سخته؟
    آیا کنترل مشابهی وجود ندارد که کار باهاش راحت تر و برقراری ارتباطش با دیتابیس هم راحت تر باشه وجود نداره؟
    ممنون
    فایل های ضمیمه فایل های ضمیمه

  2. #2

    نقل قول: ایجاد search و سطح بندی در tree view

    باسلام
    با سرچ در اینترنت این کدها رو پیدا کردم:
    Search a treeview for a item
    The following code can be used to search a treeview for an item of text:
    'Purpose : Performs a recallable search on a treeview.
    'Inputs : tvFind The treeview to search.
    ' sFindItem The text to search for (supports wildcards)
    ' [bSearchAll] If True will search all nodes of the treeview, else
    ' will only search top level nodes.
    ' [lItemIndex] If specified will return this matching index.
    ' eg, if set to 2 then will return the second node which matches the search criteria.
    'Outputs : Returns the a matching treeview node or nothing if the item is not found

    Function TreeViewFindNode(tvFind As TreeView, ByVal sFindItem As String, Optional bSearchAll As Boolean = True, Optional lItemIndex As Long = 1) As Node
    Dim oThisNode As Node, bSearch As Boolean, lInstance As Long

    sFindItem = UCase$(sFindItem)
    bSearch = True

    For Each oThisNode In tvFind.Nodes
    If bSearchAll = False Then
    'Only Search Top Level Nodes
    If (oThisNode.Parent Is Nothing) = False Then
    bSearch = False
    Else
    bSearch = True
    End If
    End If
    If bSearch Then
    If (UCase$(oThisNode.Text) Like sFindItem) = True Then
    lInstance = lInstance + 1
    If lInstance >= lItemIndex Then
    'Found matching item
    Set TreeViewFindNode = oThisNode
    Exit For
    End If
    End If
    End If
    Next
    End Function

    Sub Test()
    Dim lItemIndex As Long, oFoundNode As Node
    Do
    lItemIndex = lItemIndex + 1
    Set oFoundNode = TreeViewFindNode(tvAccounts, "Red", True, lItemIndex)
    If tvAccounts Is Nothing Then
    'Didn't find any more items
    Exit Do
    End If
    oFoundNode.EnsureVisible
    If MsgBox("Found " & oFoundNode.Text & vbNewLine & "Find next matching item? ", vbQuestion + vbYesNo) = vbNo Then
    Exit Do
    End If
    Loop
    End Sub

    میشه از تون خواهش کنم این کدها رو در قالب یک پروژه vb بیارید.
    در ضمن یک سایت رو هم پیدا کردم که درش یک sample و نمونه فایل گذاشته بود
    ولی متاسفانه نتوستم اون رو در vb شبیه سازی کنم
    این هم آدرسش:

    http://www.dotnetheaven.com/Uploadfi...1-703568f063ff

    این سایت هم درش نمونه کد هست :
    http://vbcity.com/forums/p/35880/148075.aspx



    ممنون میشم با الهام از منابع فوق بنده رو راهنمایی بفرمائید.
    آخرین ویرایش به وسیله ali190 : سه شنبه 09 شهریور 1389 در 22:37 عصر

  3. #3
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: ایجاد search و سطح بندی در tree view

    براي جستجو:

    Dim j As Integer, c As Integer

    Private Sub Command1_Click()
    For j = c To TV1.Nodes.Count - 1
    If TV1.Nodes.Item(j).Text = text1.Text Then
    'MsgBox TV1.Nodes.Item(j).FullPath
    c = c + 3
    TV1.Nodes.Item(j).Selected = True
    TV1.SetFocus
    Exit For
    End If
    Next
    End Sub


  4. #4

    نقل قول: ایجاد search و سطح بندی در tree view

    سلام
    کدهارو اجرا کردم ارور داد؟
    آیا این کدها سرچ رو بصورت find next هم انجام میده
    آخه احتمال داره در یک نمودار شاخه درخت ما از یک اسم 3 تا داشته باشیم.

    منون
    آخرین ویرایش به وسیله ali190 : چهارشنبه 10 شهریور 1389 در 21:12 عصر

  5. #5

    نقل قول: ایجاد search و سطح بندی در tree view

    باسلام
    براي جستجو:
    کد:
     
    Dim j As Integer, c As Integer

    Private Sub Command1_Click()
    For j = c To TV1.Nodes.Count - 1
    If TV1.Nodes.Item(j).Text = text1.Text Then
    'MsgBox TV1.Nodes.Item(j).FullPath
    c = c + 3
    TV1.Nodes.Item(j).Selected = True
    TV1.SetFocus
    Exit For
    End If
    Next
    End Sub
    من کدها رو طبق فایل ضمیمه که خدمتتون گذاشتم جاگذاری کردم ولی خطای زیر رو دریافت کردم:


    من در واقع میخوام با استفاده از یک حلقه تمامی node های این tree view مورد جستجو قرار بگیره و هر وقت که مقدارش با مقدار text1 برابر بود سلکت بشه
    مثال:
    فرض کنید در یک نمودار شاخه درخت من از کلمهABC چهار تا دارم
    عملیات سرچ انجام میشه اولین ABC پیدا میشه بعد


    فقط قبلش باید یه حلقه تعریف بشه که این عملیات جستجو در تمام شاخه ها انجام بشه.
    For Each node In tv1.nodes


    ممنون میشم کمکم کنید
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله ali190 : پنج شنبه 11 شهریور 1389 در 09:46 صبح

  6. #6

    نقل قول: ایجاد search و سطح بندی در tree view

    بیا علی جان کدتو درستش کردم
    مشکلش خیلی ساده بود
    من فقط این قسمتو
    For j = c To TV1.Nodes.Count - 1
    رو به این صورت تغییر دادم
    For j = 1 To TV1.Nodes.Count - 1

    چون Node شماره 0 وجود نداشت ارور می داد و من بهش گفتم از node شماره 1 شروع کن
    موفق باشی
    فایل های ضمیمه فایل های ضمیمه

  7. #7

    نقل قول: ایجاد search و سطح بندی در tree view

    سلام
    ممنون از همه شما عزیزان
    ولی در همون مثال بالا مثلاً از کلمه cat دوتا در این نمودار وجود دارد
    با این کد فقط یکی از اونها پیدا میشه نه هر دو اونها!؟

  8. #8
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: ایجاد search و سطح بندی در tree view

    Dim j As Integer, c As Integer

    Private Sub Command1_Click()
    'TV1.Nodes(j).Text
    'MsgBox TV1.Nodes.Item(9).Text
    For j = c To TV1.Nodes.Count
    'MsgBox CStr(j) & ": " & TV1.Nodes.Item(j).Text
    If TV1.Nodes.Item(j).Text = text1.Text Then
    'List1.AddItem j
    'MsgBox TV1.Nodes.Item(j).FullPath
    c = j + 1
    'MsgBox TV1.Nodes.Item(j).Text
    TV1.Nodes.Item(j).Selected = True
    TV1.SetFocus
    Exit For
    End If
    c = 1
    Next
    End Sub

    Private Sub Form_Load()
    c = 1
    End Sub

  9. #9

    نقل قول: ایجاد search و سطح بندی در tree view

    ممنون parselearn عزیز از جوابی که دادی واقعاً عالی بود
    فقط 3 تا درخواست کوچیک:
    الف) اگر موردی یافت نشد پیغام دهد که "موردی یافت نشد"
    ب) زمانیکه به پایان حلقه رسید و تمام موارد رو جستجو کرد پیغام بدهد که "پایان جستجو"
    ج) آیا این امکان هست که بعد از پایان حلقه و اتمام جستجو بازدن روی کمه جستجو دوباره حلقه جستجو تکرار گردد؟
    آقا شرمنده
    خیلی شما رو اذیت کردم و زحمت دادم
    واقعاً ممنون

  10. #10
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: ایجاد search و سطح بندی در tree view

    1 - يك متغيير منطقي
    2- شرط پاسخ 3
    3- اين كد رو بعد از حلقه اضافه كنيد
    If TV1.Nodes.Count + 1 = c Then c = 1



    Dim b As Boolean
    'TV1.Nodes(j).Text
    'MsgBox TV1.Nodes.Item(11).Text
    For j = c To TV1.Nodes.Count
    'MsgBox CStr(j) & ": " & TV1.Nodes.Item(j).Text
    If TV1.Nodes.Item(j).Text = text1.Text Then
    'List1.AddItem j
    'MsgBox TV1.Nodes.Item(j).FullPath
    c = j + 1
    'MsgBox TV1.Nodes.Item(j).Text
    TV1.Nodes.Item(j).Selected = True
    TV1.SetFocus
    b = True
    Exit For
    End If
    Next
    If b = False Then MsgBox "Not Found"
    If TV1.Nodes.Count + 1 = c Then c = 1

  11. #11
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: ایجاد search و سطح بندی در tree view

    در مورد كد بالا در صورتي كه كلمه car را دوبار جستجو كنيد. پيغام Not Found دريافت مي كنيد
    بهتره يك تابع جدا براي جستجو از ابتداي TV ايجاد كنيد كه در صورتي كه نبود پيغام دهد
    If b = False and CheckExis(text1.Text) Then MsgBox "Not Found"
    كدش هم با كد اوليه شما فرقي نداره
    آخرین ویرایش به وسیله parselearn : پنج شنبه 11 شهریور 1389 در 16:46 عصر دلیل: ويرايش كد

  12. #12

    نقل قول: ایجاد search و سطح بندی در tree view

    ممنون
    از پاسختون
    این کد رو به کدوم قسمت از sub اضافه کنم؟

  13. #13
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: ایجاد search و سطح بندی در tree view

    If b = False Then MsgBox "Not Found"
    Replace->
    If b = False & CheckExis(text1.Text) Then MsgBox "Not Found"


    CheckExis مثلا تابع چك كردن شما از ابتداي TV
    آخرین ویرایش به وسیله parselearn : پنج شنبه 11 شهریور 1389 در 16:24 عصر دلیل: ويرايش كد

  14. #14

    نقل قول: ایجاد search و سطح بندی در tree view

    ممنون
    کد رو اجرا میکنم به من ارور میده
    مگه نباید از قیل تابع CheckExis رو قبلاً ایجاد کرده باشم؟

  15. #15

    نقل قول: ایجاد search و سطح بندی در tree view

    باسلام
    میخوام در text1 عملیات جستجو به تمام کلمات مشابه هم بیرون کشیده شود
    مثلاً زمانی که کلمه خودکار رو سرچ میزنم
    تمام کلمات زیر مثلاً سرچ شود
    خودکار آبی
    خودکار سبز
    خودکار سیاه
    خلاصه هر کلمه ای که درش خودکار وجود دارد
    فکر کنم باید از عملگر like استفاده کنم
    ولی نمیدونم چطوری
    میشه راهنماییم کنید؟
    ممنون

  16. #16
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: ایجاد search و سطح بندی در tree view

    از like هم ميشه
    http://msdn.microsoft.com/en-us/library/swf8kaxw.aspx
    از instr هم ميشه
    http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
    نمونش هم در سايت زياده

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •