PDA

View Full Version : چند سوال در مورد TreeView



samiasoft
جمعه 24 مهر 1394, 21:29 عصر
سلام دوستان

- چگونه کل مقادیر کنترل TreeView1 رو برابر TreeView2 قرار بدیم؟

TreeView2=TreeView1

- چگونه تعداد ایتم های یک نود انتخاب شده با موس رو بدست بیاریم؟

برای مثال در تصویر زیر آیتم های fff (کلیک شده) رو که برابر 2 هست. در واقع میخواستم با یه شرط بررسی کنیم که نود انتخاب شده ایا دارای آیتم هست یا نه.


http://s3.picofile.com/file/8217608150/2015_10_16_221655.jpg

vbhamed
دوشنبه 27 مهر 1394, 06:04 صبح
سلام
برای تعداد آیتم ها از نمونه زیر استفاده کنید
TreeView1.Nodes.Add , , "Sample", "Primary"
TreeView1.Nodes.Add , , "Sample2", "Primary2"
TreeView1.Nodes.Add "Sample", tvwChild, "Sample3", "Child"

MsgBox TreeView1.Nodes(1).Children
'or
MsgBox TreeView1.Nodes("Sample").Children
'or
MsgBox TreeView1.SelectedItem.Children
اولین دستور تعداد آیتم ها با توجه به اندیس نود و دومین دستور با توجه به کلید نود و سومین دستور نود انتخاب شده جاری رو برمی‌گردونه

برای کپی همه آیتم ها هم دستوری ساده که این رو مساوی اون قرار بده وجود نداره و باید کد بنویسید، البته بعد از نوشتن کد دیگه فرض کنید این دستور وجود داره !

یک دکمه و دو عدد Treeview بزارید و کدهای زیر رو قرار بدید

Option Explicit

Private Sub Command1_Click()

CopyTreeview TreeView1, TreeView2

End Sub

Private Sub CopyTreeview(objTVSrc As TreeView, objTVDest As TreeView)

Dim nodeRoot As Node

objTVDest.Nodes.Clear

For Each nodeRoot In objTVSrc.Nodes

If (nodeRoot.Parent Is Nothing) Then CopyTVParentNode nodeRoot, objTVDest.Nodes
Next

End Sub

Private Sub CopyTVParentNode(nodeParent As Node, nodesDest As Nodes)

Dim nodeDummy As Node
Dim nodeChild As Node

Set nodeDummy = CopyNode(nodeParent, nodesDest)
Set nodeChild = nodeParent.Child

Do While Not (nodeChild Is Nothing)

If nodeChild.Children Then
CopyTVParentNode nodeChild, nodesDest

Else
Set nodeDummy = CopyNode(nodeChild, nodesDest)

End If

Set nodeChild = nodeChild.Next

Loop

End Sub

Private Function CopyNode(nodeSrc As Node, nodesDest As Nodes) As Node

With nodeSrc

If (.Parent Is Nothing) Then
Set CopyNode = nodesDest.Add(, , .Key, .Text, .Image, .SelectedImage)
CopyNode.Expanded = True

Else
Set CopyNode = nodesDest.Add(.Parent.Index, tvwChild, .Key, .Text, .Image, .SelectedImage)
CopyNode.Expanded = True

End If

End With

End Function

Private Sub Form_Load()

TreeView1.Nodes.Add , , "Sample", "Primary"
TreeView1.Nodes.Add , , "Sample2", "Primary2"
TreeView1.Nodes.Add "Sample", tvwChild, "Sample3", "Child"

End Sub