PDA

View Full Version : طرز استفاده از treeview



mostafag
یک شنبه 07 فروردین 1390, 11:33 صبح
با سلام خدمت دوستان
فرض کنید یک treeview و یک RichTextBox داخل فرم وجود داره! حالا میخوام کاربر از لیست درختی موضوع خودش رو انتخاب کنه و متن مورد نظر از آدرس خونده بشه و داخل تکست نشون داده بشه!!

حالا چند تا سوال دارم:

1. من میخوام آدرس فایل هایی که میخواد نمایش داده بشه رو داخل بانک ذخیره کنم و زمانی که کاربر یکی از موضوع ها رو انتخاب کرد موضوع رو از آدرس مورد نظر بخونه و داخل RichTextBox نمایش بده!!

حالا میخواستم بدونم چطوری میتونم این کار رو انجام بدم یعنی چطوری کاربر بعد از کلیک بر روی موضوع به سیستم بگم بره و از بانک اون آدرس رو بخونه؟؟!! اصلا آیا خوندن از آدرس کار درستیه یا نه!!!؟؟؟ :متفکر: و به طور کلی اصلا از treeview چطوری برای نمایش چیزی استفاده میشه (مثلا همین لیست درختی سمت چپ ویندوز چطوری عمل میکنه؟؟!!)


2. همه عناوینی که قراره داخل treeview نمایش داده بشه داخله بانک قرار داره من برای نمایش اونها از این کد استفاده کردم اما نمیدونم چرا همه عنوان ها رو به صورت شاخه یا نود اصلی میاره و زیرشاخه قرار نمیده در صورتی که همه کلید ها و relative ها رو هم درست داخل بانک نوشته شده اما....( کلمه هایی که داخل پرانتز هستند و اولشون lbl هست لیبل هایی هستند که به بانک متصل شدند!! :گیج:)


For i = 1 To Adodc1.Recordset.RecordCount
Set nodex = TreeView1.Nodes.Add(lblrelative, lblrelationship, lblkey, lbltext)
Adodc1.Recordset.MoveNext
Next i




3. آیا برای نمایش متنی که داخله word نوشته شده بهترین گزینه RichTextBox هست یا ocx بهتری هم برای این کار وجود داره؟؟؟!!

4. من از treeview ابزار code jock استفاده می کنم می خواستم ببینم آیا این ابزار برای این کار مناسب هست یا همون treeview خود وی بی بهتر هست؟؟!!


دوستان اگه میتونید ازتون خواهش میکنم به این سوالات پاسخ بدید چون واقعا کارم گیره؟؟!! :اشتباه:
با تشکر از همه دوستانی که پاسخ میدن! :لبخندساده:

javadt
یک شنبه 07 فروردین 1390, 12:21 عصر
اگر می خوای شبیه ویندوز باشه دنبال ExplorerBarXP2 بگرد
برای کار شما کد جاک چیز مناسبیه

1- برای متوجه شدن کلیک شما باید از رویداد دابل کلیک Treeview استفاده کنی و توسط کد زیر key آیتم کلیک شده رو بگیری
Private Sub TreeView1_DblClick()
MsgBox TreeView1.SelectedItem.Key
End Sub

2- کدی که استفاده می کنی درست نیست از این کد استفاده کن تا بفهمی
TreeView1.Nodes.Add , , "Root", "Root"
TreeView1.Nodes.Add "Root", xtpTreeViewChild, "1", "Node1"
TreeView1.Nodes.Add "Root", xtpTreeViewChild, "2", "Node2"
TreeView1.Nodes("Root").Expanded = True
TreeView1.Nodes("Root").Bold = True

ircast
یک شنبه 07 فروردین 1390, 12:53 عصر
سلام

این تابع در VB.Net خوب جواب میده برای بایند کردن TreeView به بانک شاید کمکتون کنه

Public Function InsertNode(ByVal N As TreeNode, ByVal PID As Integer) As Boolean
Try
Dim SqlCon As New SqlConnection(SqlConection)
SqlCon.Open()
Dim Cmd As New SqlCommand("SELECT * FROM [module] WHERE parent_module='" & PID & " ' ORDER BY module_id ", SqlCon)
Dim Dr As SqlDataReader = Cmd.ExecuteReader()
While Dr.Read()
Dim T As New TreeNode(Dr(1).ToString)
InsertNode(T, Convert.ToInt32(Dr(0)))
If N Is Nothing Then
TViw.Nodes.Add(T)
Else
N.Nodes.Add(T)
End If
End While
Dr.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
End Function

mostafag
یک شنبه 07 فروردین 1390, 13:52 عصر
خیلی ممنون از دوستانی که به این سرعت پاسخ دادند! :خجالت:



2- کدی که استفاده می کنی درست نیست از این کد استفاده کن تا بفهمی
TreeView1.Nodes.Add , , "Root", "Root"
TreeView1.Nodes.Add "Root", xtpTreeViewChild, "1", "Node1"
TreeView1.Nodes.Add "Root", xtpTreeViewChild, "2", "Node2"
TreeView1.Nodes("Root").Expanded = True
TreeView1.Nodes("Root").Bold = True

ممنون از پاسختون مشکلم برای پیدا کردن آیتم انتخاب شده حل شد:لبخندساده:
برای اضافه کردن عنوان به treeview من میخوام عنواین موجود توی treeview رو از داخل بانک بخونم و نمیدونم چطور باید این کار رو انجام بدم! و کد شما فقط به طور معمولی عنوانین رو اضافه میکنه!!!



سلام

این تابع در VB.Net خوب جواب میده برای بایند کردن TreeView به بانک شاید کمکتون کنه


از شما هم تشکر میکنم اما اگه میتونید یکمی در مورد اینکه تابع چطوری عمل میکنه توضیح بدید.


راستی دوستان میخواستم بدونم اصلا آیا روشی که میخوام استفاده کنم درسته و مشکل سرعت و ... برخورد نمیکنم یا نه روش دیگه ای هم برای این کار وجود داره؟؟!!!
باز هم ممنون :لبخندساده:

ircast
یک شنبه 07 فروردین 1390, 18:10 عصر
برای اضافه کردن عنوان به treeview من میخوام عنواین موجود توی treeview رو از داخل بانک بخونم و نمیدونم چطور باید این کار رو انجام بدم!


تابعی که من نوشتم دقیقا همین کار رو برای شما انجام میده!!!
اینجوری ازش استفاده کنید

InsertNode(Nothing,0)

اگه بازم مشکل داشتید بگید در خدمتم

mostafag
یک شنبه 07 فروردین 1390, 19:42 عصر
خیلی ممنون دوست عزیز
اما من اصلا نمیدونم چطور باید از این کد داخل vb6 استفاده کنم!!!
شما مطمنید که طرز کار treeview در vb.net با vb6 یکیه؟!!!؟

اگه میتونید کد مربوط به vb6 رو قرار بدید یا اینکه در مورد همین کد بالا توضیح بدید که از چه الگوریتمی استفاده کردید تا شاید خودم بتونم کدش رو بنویسم!!
بازم تشکر

ircast
یک شنبه 07 فروردین 1390, 20:34 عصر
راستش من اصلا VB6 کار نکردم، اما همون برنامه رو با Vb.net 2010 براتون نوشتم امیدوارم کمکتون کنه اگه دیر شد ببخشید. البته تغییراتی توی بانکتون ایجاد کردم

Imports System.Data.OleDb
Public Class Form1
Public Function InsertNode(ByVal N As TreeNode, ByVal PID As Integer) As Boolean
Try
Dim Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\database.mdb")
Con.Open()
Dim Cmd As New OleDbCommand("SELECT * FROM Nodes WHERE Parent_ID=" + PID.ToString + " ORDER BY ID ", Con)
Dim Dr As OleDbDataReader = Cmd.ExecuteReader()
While Dr.Read()
Dim T As New TreeNode(Dr(1).ToString)
InsertNode(T, Convert.ToInt32(Dr(0)))
If N Is Nothing Then
TreeView1.Nodes.Add(T)
Else
N.Nodes.Add(T)
End If
End While
Dr.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InsertNode(Nothing, 0)
End Sub
End Class
67958