الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اظهار اسم النود المتفرع منه

بدأه booknet في 24 أغسطس 2009 · 9 رد · 676 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل من الممكن اظهار اسم النود الأب دائما، مثلا:

لوكان عندي شجرة بها أول اسم "عائلة"

ويتفرع منها اسم "الأب" ، ويتفرع منه "ولد" و "ولد الولد" و "ولد ولد الولد"

فلو تم الضغط على "ولد" أو "ولد الولد" أو "ولد ولد الولد"

يظهر اسم الأب

وهكذا لو أضفنا أولاد أكثر يظهر اسم الأب عند الضغط على أحدهم

ولو أضفنا أب ثاني وأولاده يظهر اسم الأب الثاني فقط

وشكرا

#2

السلام عليكــم ورحمـة الله وبركاتــه ،،

استخدم الكود التالى

		If TreeView1.SelectedNode.Parent IsNot Nothing Then
			MsgBox(TreeView1.SelectedNode.Parent.Text)
		End If

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3
GHOST2010 كتب:
السلام عليكــم ورحمـة الله وبركاتــه ،،

استخدم الكود التالى

		If TreeView1.SelectedNode.Parent IsNot Nothing Then
			MsgBox(TreeView1.SelectedNode.Parent.Text)
		End If

وعليكــم السـلام ورحمة الله وبركاتـه..

أخي العزيز

بالكود السابق لو ضغطت على اسم "ولد الولد" سيعطيك اسم "الولد" وليس اسم الأب

شكرا

#4

السلام عليكــم ورحمـة الله وبركاتــه ،،

يبدو أننى فهمتك بطريقة خاطئة

حسنا ,, لنفرض أن الشجرة بهذا الشكل

post-47088-1251092320_thumb.jpg

أنت تريد عند الضغط على أى فرع من الفروع التى تندرج تحت الأب يظهر لك إسم الأب

إذاً فأنت تريد دائما أن تظهر اسم الـTreeNode الذى فى المستوى الثانى

أتمنى أن أكون قد فهمتك بصورة صحيحة هذه المرة :blink:

إذا كان الأمر كذلك فيمكنك استخدام الكود التالى

	Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
		If e.Node.Parent IsNot Nothing AndAlso e.Node.Parent IsNot TreeView1.Nodes(0) Then
			Dim node As TreeNode = e.Node.Parent
			While node.Parent IsNot TreeView1.Nodes(0)
				node = node.Parent
			End While
			MsgBox(node.Text)
		End If
	End Sub

فى انتظار النتيجة ,,

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#5

وعليكــم السـلام ورحمة الله وبركاتـه.

هذا هو المطلوب

جزاك الله خيرا، وزادك علما

بقى شيئا آخر أخي العزيز لو تفضلت به علي، وهو:

هل من الممكن إذا حذفت اسم "الأب" ينحذف معه أسماء الأولاد من الشجرة والداتا بيس

او حذفت اسم "الولد" ينحذف معه اسم "ولد الولد" من دون اسم "الأب" من الشجرة والداتا بيس

يعني السؤال بمعنى أبسط إذا حذفت الفرع ينحذف معه الأقل مستوى وليس الأكثر من الشجرة والداتا بيس

وجزاك الله خيرا

تم تعديل هذه المشاركة بواسطة booknet في 24 أغسطس 2009 في 09:28

#6

نعم أخى الكريم يمكن عمل ذلك على الشجرة وفى قاعدة البيانات

بالنسبة للشجرة فهى تفعل ذلك تلقائيا أى أنك عند حذف أحد الفروع فإنها تحذف الفروع التى تتبعه

أما بالنسبة لقاعدة البيانات فالطريقة تتوقف على كيفية تصميم الجداول ,, فهل يمكنك توضيح تصميم الجدول الذى تتعامل الشجرة معه؟

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7
GHOST2010 كتب:
نعم أخى الكريم يمكن عمل ذلك على الشجرة وفى قاعدة البيانات

بالنسبة للشجرة فهى تفعل ذلك تلقائيا أى أنك عند حذف أحد الفروع فإنها تحذف الفروع التى تتبعه

أما بالنسبة لقاعدة البيانات فالطريقة تتوقف على كيفية تصميم الجداول ,, فهل يمكنك توضيح تصميم الجدول الذى تتعامل الشجرة معه؟

أخي العزيز

البرنامج مرفق

وجزاك الله خيرا

family_tree.rar

تم تعديل هذه المشاركة بواسطة booknet في 24 أغسطس 2009 في 20:35

#8

السلام عليكــم ورحمـة الله وبركاتــه ،،

أخي الكريم GHOST2010

لقد أضفت شيئا من الكود للحذف ولكنه غير محترف وبطيء فإذا تستطيع التعديل عليه

جزاك الله خيرا

family_tree2.rar

#9

السلام عليكــم ورحمـة الله وبركاتــه ،،

توجد مشاكل فى البرنامج وأنا حاليا فى العمل فلن أتمكن من إصلاحها لعدم توافر الوقت

بالنسبة للحذف فإليك الفكرة

أولا عليك إضافة حقل جديد فى الجدول الذى تعمل عليه بإسم BinPath من النوع Text بطول 255

عند الحفظ قم بحفظ ناتج هذه الدالة فى الحقل الجديد

  1.  
  2. Private Function GetBinPath(ByVal node As TreeNode) As String
  3. If node.Parent Is Nothing Then
  4. Return "0"
  5. End If
  6.  
  7. Dim buffer As String = Space(50)
  8. While node.Parent IsNot Nothing
  9. buffer = buffer.Insert(0, node.Index)
  10. node = node.Parent
  11. End While
  12.  
  13. Return "0" & buffer.Trim
  14. End Function
  15.  

بعد إتمام هذه الخطوات ستكون عملية الحذف سهلة جدا وسريعة جدا إن شاء الله حيث أنك ستقوم بالحذف بدلالة هذا الحقل

  1.  
  2. "Delete * From tblNodes Where BinPath Like '" & rs.FIELDS("BinPath").Value & "*'"
  3.  

ملحوظة : أنا لا أتعامل مع الأكسس فقد تكون طريقة صياغة الجملة خاطئة لكن أتمنى أن تكون قد وضحت الفكرة

سؤال : لماذا لا تستخدم فئات الـADO.NET عند تعاملك مع قواعد البيانات فهى أسهل بكثير فى التعامل

إذا كانت الفكرة غير واضحة فأنا فى انتظارك إن شاء الله ,,

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#10

وعليكــم السـلام ورحمة الله وبركاتـه..

لقد حاولت ولم استطع ان أصل الى نتيجة، الرجاء تعديل المثال المرفق بالكود الذي كتبته

وشكرا

مواضيع مشابهة