تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
معلومة ::: TreeView
#11
يمكن أن نعرض مسار عنصر معين - وهذا شئ مهم لو أردت أن تعرض مسار حساب معين مثلاً كفكرةلاستخدام هذا الأمر


بالطبع يجب قبل أن نستخدم أمر يعتمد على عنصر محدد - أن نتأكد أن العنصر محدد كما تعودنا



كود :
If TreeView1.SelectedNode Is Nothing Then
Exit Sub
End If

هناك خاصية خاصة بأداة TreeView اسمها PathSeparator يمكن أن نسند لها قيمة كفاصل بين المسار والمسار



كود :
TreeView1.PathSeparator = " >> "

ثم نظهر المسار الآن



كود :
MessageBox.Show(TreeView1.SelectedNode.FullPath)
}}}
تم الشكر بواسطة: asemshahen5
#12
العناصر بجانبها كائن اختيار CheckBox

لنظهر ذلك نقوم بتعديل الخاصية CheckBoxes ونجعلها تساوي True


أو بالكود



كود :
TreeView1.CheckBoxes = True
}}}
تم الشكر بواسطة: asemshahen5
#13
تكلمنا فى الرد السابق عن اظهار مربع تحديد للعنصر CheckBox

ونستفيد به بحيث لو المستخدم اختار عدة اختيارات وتريد تنفيذ أمر ما فى حالة اختياره


كود :
If TreeView1.SelectedNode Is Nothing Then
Exit Sub
End If


If TreeView1.SelectedNode.Checked Then
MessageBox.Show("العنصر محدد")
Else
MessageBox.Show("العنصر غير محدد")
End If
}}}
تم الشكر بواسطة: asemshahen5
#14
الآن لنري أمر ذوى جدوي وعملى أكثر


هل فكرت فى عرض أى ملف XML فى شجرة العرض TreeView

تعال نقوم بذلك


أولأ لابد أن نصل لملف Xml

ولنقوم بذلك يمكن أن ندرج أداة OpenFileDialog أو أن ننشأها بالكود




كود :
' أنشأنا متغير اسميناه dlgOpen من نوع OpenFileDialog

Dim dlgOpen As New OpenFileDialog

' سنقوم بعمل فلتر له لنحدد نوع الملفات التى يطلع عليها هذا الكائن

dlgOpen.Filter = "(*.xml)|*.xml"

' فى حالة تحديد ملف من قبل المستخدم

If dlgOpen.ShowDialog = Windows.Forms.DialogResult.OK Then

' قمنا بتعريف متغير xmlDoc من نوع XmlDocument

Dim xmlDoc As New XmlDocument

' جعلناه يساوي الملف XML الذى اختاره المستخدم

xmlDoc.Load(dlgOpen.FileName)

' عرفنا متغير xmlRoot من نوع XmlElement وجعلناه يساوي xmlDoc.DocumentElement

' بحيث نصل للعناصر التى فى ملف XML

Dim xmlRoot As XmlElement = xmlDoc.DocumentElement

' عرفنا متغير trvRoot من نوع TreeNode

Dim trvRoot As New TreeNode

' قمنا فى هذا الاجراء بمسح أى عنصر موجود فى شجرة العرض TreeView
' فى حالة لو وجد فيها عناصر من ملف سابق

TreeView1.Nodes.Clear()

' ارسلنا المتغير xmlRoot و المتغير trvRoot كوسيطات للاجرائية MakeTree
' المسئولة عن تكوين العناصر فى شجرة العرض TreeView وسنتكلم عليها الآن

MakeTree(xmlRoot, trvRoot)

' قمنا باضافة العناصر لشركة العرض TreeView

TreeView1.Nodes.Add(trvRoot)


End If


الاجرائية MakeTree

حتى نستخدمها لابد أن نعلن فى قسم الكود العام عن فضاء الاسم الخاص بالتعامل مع ملفات XML


كود :
Imports System.Xml


كود :
Private Sub MakeTree(ByVal xmlParent As System.Xml.XmlElement, ByRef trvParent As TreeNode)
If xmlParent.HasChildNodes Then
For I As Integer = 0 To xmlParent.ChildNodes.Count - 1
If xmlParent.ChildNodes(I).GetType.ToString().IndexOf("XmlElement") >= 0 Then
Dim xmlChild As XmlElement = xmlParent.ChildNodes(I)
Dim trvChild As New TreeNode

trvChild.Text = xmlChild.Name

If xmlChild.HasChildNodes Then
MakeTree(xmlChild, trvChild)
End If
trvParent.Nodes.Add(trvChild)
ElseIf xmlParent.ChildNodes(I).GetType.ToString().IndexOf("XmlText") >= 0 Then
Dim trvChild As New TreeNode
trvChild.Text = xmlParent.ChildNodes(I).InnerText
trvParent.Nodes.Add(trvChild)
End If
Next
End If
End Sub





إذا أردت تكوين ملف XML كمثال


قم بانشاء ملف نصي وضع فيه هذا الكود


كود :
<?xml version="1.0" encoding="shift_jis"?>
<ADDRESS_DATA>
<ZIP>010-3012</ZIP>
<ADDRESS>Egypt-Cairo</ADDRESS>
<NAME>BADRMEDIA</NAME>
</ADDRESS_DATA>

وعند حفظ الملف ضع له اسم مع الملحقة .XML



}}}
تم الشكر بواسطة: asemshahen5 , asemshahen5
#15
العناصر متباعدة عن الجذر بمسافة كبيرة غير ما كنا نعتاد

كيف ذلك ؟


الخاصية Indent هى المسئولة عن ذلك

غير القيم فيها وستعرف الفرق




كود :
TreeView1.Indent += 2
}}}
تم الشكر بواسطة: asemshahen5
#16
فى المثال المرافق لنا أن عند تحديد عنصر يتم تحديد الصف بالكامل

كيف ذلك ؟


هذا هو المثال المرافق لنا



كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim rootNode As New TreeNode
Dim childNode1 As New TreeNode
Dim childNode2 As New TreeNode
Dim grandChildNode1 As New TreeNode
Dim grandChildNode2 As New TreeNode
Dim grandChildNode3 As New TreeNode
rootNode.Text = "الجذر الرئيسى"
childNode1.Text = "الأبن1"
childNode2.Text = "الأبن2"
grandChildNode1.Text = "الحفيد1"
grandChildNode2.Text = "الحفيد2"
grandChildNode3.Text = "الحفيد3"
childNode1.Nodes.Add(grandChildNode1)
childNode1.Nodes.Add(grandChildNode2)
childNode2.Nodes.Add(grandChildNode3)
rootNode.Nodes.Add(childNode1)
rootNode.Nodes.Add(childNode2)
TreeView1.Nodes.Add(rootNode)

TreeView1.ExpandAll()

End Sub

لكن بعد أن ننشأه نضع هذا الكود


كود :
TreeView1.ShowLines = False
TreeView1.FullRowSelect = True
فيجب أولاً جعل الخاصية ShowLines = False

ثم بعد ذلك نجعل الخاصية FullRowSelect = True

}}}
تم الشكر بواسطة: asemshahen5
#17
سنجد أن الخط بين العناصر لونه أزرق وذلك من الخاصية


LineColor



كود :
TreeView1.LineColor = Color.Blue

}}}
تم الشكر بواسطة: asemshahen5



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم