Visual Basic Online Course - TreeView Control lesson Part4

بسم الله الرحمن الرحيم
توقفنا فى الجزء الثالث السابق عند خاصية Style .
و موضوع اليوم ان شاء الله عن خواص الـ Nodes .
Nodes Properties - خواص الـ Nodes
تعريف الـ Node : هى كائن Object من كائنات اداة Control الـ TreeView بينما الـ Nodes هى مجموعه Collection من الـ Nodes .... و الفرق كما ذكرنا أن الـ Nodes مرتبطه ببعضها البعض و كلها معا تمثل TreeView واحده و يميز الـ Node عن الاخرى الـ Index و الـ Key و كلاهما مميز بينما الـ Node بمفردها هى Object مستقل له Index و Key و لها خصائص للتعامل معها و لكن التعامل معها يكون عن طريق الـ TreeView حيث :
الاكواد :
TreeView.Nodes - تمثل مجموعة الـ Nodes داخل TreeView واحده .
TeeView.Nodes.Index - تمثل الـ Node المميزه برقم الـ Index المميز لها .
الخصائص :


و سنقوم بدراسة كل و خاصيه على حدى بالتفصيل .....


أولا : خاصية Bold

و هى خاصية عامه للأدوات ليست للـ Node فقط و وظيفتها تغيير حالة الخط String من الحاله العاديه الى الحالة السميكه (سميك - عادى)
و الكود الخاص بها :
Object.Bold = Boolean

حيث Object تشير الى Node فى هذا المثال . و Boolean أى ان النتيجه ستكون True أو False أو (0 - 1) و سنبدأ الان بتحديث المثال الذى نعمل عليه :

سنضيف TreeView5 الى الفورم و سنضيف Command5 كما بالصورة (1)
صورة رقم 1
سنقوم بتسمية Command5 باسم Bold و فى المثال عند الضغط على مفتاح Bold فان الـ Node المختاره بالماوس تتحول الى Bold سواء كانت Root أو Child .
الاكواد :
فى الحدث Form_Load
بعد اخر سطر كود سنضيف الاتى :
Dim Nodd As Node
   Set Nodd = TreeView5.Nodes.Add(, , "P", "Root")
   Set Nodd = TreeView5.Nodes.Add("P", tvwChild, "P1", "Child1")
   Set Nodd = TreeView5.Nodes.Add("P", tvwChild, "P2", "Child2")
   Set Nodd = TreeView5.Nodes.Add("P", tvwChild, "P3", "Child3")
   Set Nodd = TreeView5.Nodes.Add(, , "PP", "Root1")
   Set Nodd = TreeView5.Nodes.Add("PP",
tvwChild, "PP1", "Child1")
و هذا سيقوم بانشاء Nodes كما بالشكل (2) عند تشغيل البرنامج :
شكل رقم 2
ثم فى الحدث Command5_Click نضع الكود :
TreeView5.SetFocus
Dim n_INDEX As Integer
n_INDEX = TreeView5.SelectedItem.INDEX
TreeView5.Nodes.Item(n_INDEX).Bold = True


حيث :
- خاصية SetFocus للـ TreeView عند تشغيل البرنامج تمنع رسالة الخطأ Run-Time Error 91 حيث عند الضغط على Command5 المفروض ان يعود بقيمة و اذا لم تكن خاصية SetFocus للـ TreeView5 متحققة فان القيمة ستكون 0 و بالتالى تظهر رسالة الخطأ Run-Time Error 91 و التى تفيد أن القيمة العائده عير مضبوطه .
- ثم نقوم بتعريف متغير n_INDEX كمتغير رقمى Integer لتخزين القيمة العائده من الـ TreeView عند الضغط على أحد مكوناتها و هو Node المراد معرفة رقم الـ Index الخاص به لتغيير حالة خطه .
- المتغير n_INDEX = رقم الـ Index للعنصر المختار من اداة الـ TreeView5
- خاصية Bold للعنصر ذو رقم الـ Index المساوى للرقم العائد من ضغطة الـ Click عليه وهو True = n_INDEX
- قم بتجربة البرنامج الان و اضغط على Bold حتى قبل أن تختار Node معين و لاحظ أن خاصية SetFocus فى أول الكود مفيده ثم اختار أى Node و تعامل معه .


ثانيا : خاصية Checked
و هى خاصية عامه للأدوات ليست للـ Node فقط و لها وظيفه فقط عندما تكون خاصية CheckBoxes للـ TreeView متحققة أو = True . 
و الكود الخاص بها :
Object.Checked = Boolean

حيث Object تشير الى Node فى هذا المثال . و Boolean أى ان النتيجه ستكون True أو False أو (0 - 1) قم بفتح المثال و اجعل خاصية CheckBoxes للـ TreeView من شاشة الخصائص  = True كما بالصورة (3) 
CheckBoxes = True
ستجد أن شكل الـ TreeView5 تغير و ظهرت CheckBoxes بجوار الـ Nodes .
الان أضف Command6 بجوار و غير اسمه Caption الى Check و اضف الكود الاتى الى الحدث
Command6_Click :
TreeView5.SetFocus
Dim n_INDEX As Integer
n_INDEX = TreeView5.SelectedItem.INDEX
TreeView5.Nodes.Item(n_INDEX).Checked = True
لاحظ أنه لايختلف عن الكود السابق الا كلمة واحده و هى Checked .
قم بتجربة المثال .


ثالثا : خاصية Child
وهى احدى الخصائص التى تنتمى الى Node فقط حيث :


Object.Child

و هذه الخاصيه يمكنها تحديد متغيرات الـ Node و ايضا تعود بقيمتها بمعنى :
الـ Child هى نوع من أنواع الـ Node نفسها فعندما تكون الـ Node درجة قرابتها فى الـ TreeView هى Child معناه أنها لها Root أو Parent أو لها Node فى مستوى أعلى منها و هى فرعيه منها. و كونها Child له خصائص مستقله عن الـ TreeView مثل Key و Index و Text و Image ....
اذا Object فى الكود السابق هو Node .
من ناحيه أخرى Child تعنى اننا سنتعامل مع Child و ليس Root و بالتالى فان Object فى الكود السابق هو Node نعم و لكنه ليس Child بل Root أو Parent حيث من خلال سيتم تحديد الـ Child و التعامل معه .
فى المثال قم باضافة Command7 و اسمه Child حيث عند الضغط عليه سيقوم بتغيير خصائص أول Child بعد الـ Root المختار .
و يكون الكود :
TreeView5.SetFocus
Dim n_INDEX As Integer
n_INDEX = TreeView5.SelectedItem.INDEX
With TreeView5.Nodes.Item(n_INDEX).Child
.Key = "New Key"
.Text = "Just This Child"
.BackColor = vbRed
End With
- قم بعمل Run للبرنامج و اضغط على Child و لاحظ عند فتح علامة + تغير الـ Node التى تلى الـ Root الذى قمت باختيارة .


رابعا : خاصية Children
هذه الخاصية وظيفتها تعود بقيمة الـ Child Nodes الموجوده فى Node معين فى الـ TreeView .




Object.Children

يفضل استخدام هذه الخاصية قبل التعامل مع الـ Nodes خصوصا الـ Root حيث أنها تتأكد بل و تعود بقيمه هى عدد الـ Child Nodes الموجوده فى الـ Node .

و سنجرى تطبيق صغير على مثالنا :
سنقوم بكتابة كود يعود بعدد الـ Child Nodes اذا كان الـ Node به Child Nodes .
فى نهاية الـ Form بعد اخر كود نقوم بلصق الكود التالى :
Private Sub TreeView5_NodeClick(ByVal Node As MSComctlLib.Node)
'Children Property
If Node.Children > 0 Then
MsgBox "Node Starts With Child Called : " & Node.Child.Text _
& vbCrLf _
& "and it has : " _
& TreeView5.Nodes(TreeView5.SelectedItem.Index).LastSibling.Index _
& " Childs"
End If
End Sub
نقوم بتجربة البرنامج Ctrl+F5 .

و الى هنا نصل الى نهاية خصائص الـ Nodes و يمكنك السؤال عن أى خاصيه فى Comment أو فى الجروب على الفيسبوك .
ننتقل الى الموضوع التالى و هو : ربط الـ TreeView بقاعدة بيانات من نوع MS Access 2003 ان شاء الله الدرس القادم و الاخير - تابعونا .


Comments

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