VB 0.6 TreeView Control Lesson Part2

بسم الله الرحمن الرحيم
Microsoft Visual Basic 6.0 TreeView Control

توقفنا فى الجزء الاول عند انشاء الـ Nodes 
اليوم نتحدث عن الجزء الثانى من TreeView Control فى بيئة الـ Visual Basic 0.6 و هو :

أولا :
TreeView LineStyles Property أو خاصية أشكال رسمة الـخط

- نعرف الان كل TreeView لها ImageList عباره عن الاشكال من الأيقونات و الخطوط التى تظهر فى أداة الـ TreeView و منها الخطوط التى تربط الـ Nodes ببععضها و تمثل شكل العلاقه بين الـ Nodes كما بالصورة رقم (1) .
LineStyles
- كود تحديد شكل الخط :
Object.LineStyle = number
- حيث :
Object هو : عادة يكون الـ TreeView
number هو : رقم أو ثابت يدل على نوع شكل الخط كما سيوضح فى الاعدادات Settings الاتيه
- الاعدادات Settings :
الثابتالقيمةالوصف
tvwTreeLines
0
الشكل الافتراضى.
يظهر بشكل خطوط بين الـ Nodes فى نفس المستوى Siblings و ابائها فى مستوى أعلى
tvwRootLines
1
رسم خطوط تمثل العلاقه بين الـ Nodes فى نفس المستوى و بين الـ Nodes فى مستوى أعلى و ايضا رسم خطوط تمثل العلاقه بين الـ Nodes الاباء Parents فى مستوى أعلى بين بعضها البعض .



- مثال :
اضف TreeView3 على الـ Form1 ثم فى الحدث Form_Load فى نهاية كود الحدث اضف الكود التالى ....
   Dim Nods As Node
   Set Nods = TreeView3.Nodes.Add(, , "P1", "Root1")
    Set Nods = TreeView3.Nodes.Add("P1", tvwChild, "Pp1", "Child1")
    Set Nods = TreeView3.Nodes.Add("P1", tvwChild, "Pp2", "Child2")
    Set Nods = TreeView3.Nodes.Add("P1", tvwChild, "Pp3", "Child3")
    Set Nods = TreeView3.Nodes.Add(, tvwChild, "Pp4", "Root2")
    TreeView3.LineStyle = 0
'   TreeView3.LineStyle = 1
ثم قم بتجربة المثال مره عند القيمة = صفر و مره عند القيمة = 1 و لاحظ شكل الخطوط بين الـ Nodes الـ Child و الـ Nodes الـ Root .

ثانيا :
LabelEdit Property أو خاصية تعديل الاسم



- كل Node فى الـ TreeView لها :
1) اسم
2) علاقه
3) مفتاح مميز لها
4) صورة أو ايقونه
5) رقم ضمن مجموعة الـ Nodes .
- لذا كلما نضيف Node نراعى هذه العوامل و من هذه العوامل عامل Name أو الاسم و هو الذى يظهر عند تشغيل البرنامج و يكون نوعه Label مثل شكل الخظ الذى يمثل العلاقه نوعه ImageList .
- يمكن تعديل الاسم Name لكل نوع اذا حددت خاصيه LabelEdit ...
- كود :
Object.LabelEdit= integer


Object هو : عادة يكون الـ TreeView
integer هو : رقم صحيح integer يحدد ما اذا كان Node يمكن تعديلة أم لا كما فى الاعدادات Settings .
- الاعدادات Settings :
الثابتالقيمةالوصف
tvwAutomatic
0
الشكل الافتراضى.
يظهر الحدث BeforeLabelEdit عندما يضغط المستخدم على Label لاى Node
tvwManual
1
يظهر الحدث BeforeLabelEdit فقط عندما يبدأ الحدث StartLabelEdit
سنقوم باضافة TreeView4 الى الفورم و مفتاح Command3 حيث اصبحت الفورم بهذا الشكل :
TreeView Control Example
- سنقوم بعمل كود يقوم بتعديل الـ Nodes مالم تكن Roots اباء , و يجب ان يكون نوع خاصية LabelEdit = tvwmanual و نلصق الكود التالى بعد أخر سطر كود فى المشروع فى الحدث Form_Load
Dim nodXa As Node
Dim i As Integer
TreeView4.LabelEdit = tvwManual  
' ما لم تقم تحديدها فى شاشة الخصائص
Set nodXa = TreeView4.Nodes.Add(, , , " Node 1")
'اضافة الـ Node الاول وهو سيكون Root
For i = 1 To 5  
'اضافى عدد (5) Node سيكونوا Child
Set nodXa = TreeView4.Nodes.Add(i, tvwChild, , "Node " & CStr(i + 1))
Next i
nodXa.EnsureVisible  
'التأكد من أن كل الـ Nodes ظاهره عند التشغيل .
الان سنقوم باضافة الكود التالى الى الفورم بعد اخر سطر كود فى الفورم
الكود فى الحدث Command3_Click
Private Sub Command3_Click()
   ' Invoke the StartLabelEdit method on the selected node,
   ' which triggers the BeforeLabelEdit event.
   TreeView4.StartLabelEdit
End Sub

الكود فى الحدث BeforeLabelEdit و لاحظ انه اجراء موضوع و ليس جزءا من اجراءات الـ TreeView أى أنه User Defined
Private Sub TreeView_BeforeLabelEdit(Cancel As Integer)
' If the selected item is the root, then cancel the edit.
اذا كان الـ Node المختار نوعه Root اذا لا تقم بالتعديل
If TreeView4.SelectedItem Is TreeView4.SelectedItem.Root Then
Cancel = True
End If
End Sub
الكود فى الحدث AfterLabelEdit و لاحظ انه اجراء موضوع و ليس جزءا من اجراءات الـ TreeView أى أنه User Defined و يتم تنفيذ هذا الاجراء عند بداية كتابة اسم الـ Label الجديد الخاص بالـ Node التى تم اختيارها و تصلح للتعديل أى انها ليست Root .
لاحظ أن ترك الـ Label فارغ طبيعى أى ان البرنامج سيقبل Label بدون String
Private Sub TreeView_AfterLabelEdit _
(Cancel As Integer, NewString As String)
' Assume user has entered some text and pressed the ENTER key.
' Any nonempty string will be valid.
If Len(NewString) = 0 Then
Cancel = True
End If
End Sub
- قم بتجريب البرنامج و اضغط مره على أى Node لتعديلها لاحظ انها لا يتم تعديلها ثم اضغط على Command3 و لاحظ انه يمكنك الكتابه فى الـ Node .
تابعونا فى الجزء الثالث ان شاء الله مع :
- Nodes Property بالكامل
- DataBase MS Access 2003 & TreeView

VB6 Popular Posts

Visual Basic Online Course - Function Keys (F1 to F12)

VB 0.6 - Save Files Using DialogBox Control

Free download Visual Basic 6 Documentation MSDN