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

نقل عناصر الشجرة TreeVeiwبالسحب و الافلات

مغلق
بدأه madi في 1 فبراير 2002 · 0 رد · 1,530 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1

سلام

لو اردت نقل عناصر TreeView فيما بينهم بطريقة السحب و الافلات

drag&drop ,

1- ضع TreeView على الفورم , قم بتكوين بعض العناصر و العناصر الفرعية فيها ,

2- في الحدت OnDragDrop ضع الأوامر التالية :

[l]

procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);

begin

    TreeView1.Items.AddChild(TreeView1.GetNodeAt(x,y),TreeView1.Selected.Text);

TreeView1.Selected.Delete;

end;

[/l]

الأمر الاول هو أمر اضافة العنصر المسحوب drag كأحد العناصر الفرعية Child للعنصر المسحوب اليه ,

الأمر الثاني هة أمر الغاء العنصر المسحوب من مكانه الاصلي , و لو قمت بازالة هدا الامر فتكون العملية بدل نقل للعنصر عملية نسخ له ,

3- الخطوت المهمة هي تغيير خاصية حالة السحب DragMode

من الحالة dmManual الى الحالة dmAutomatic

الآن نفد البرنامج , وحاول سحب العناصر و افلاتها ,

لو أردت مزيد من التحسيات البرمجية ,

مثلا لو اردنا العناصر الرئيسية تابتة لايمكن تغببر مكانها , فقط نستطيع نقل العناصر الفرعية فعليك بالاتجاه الى الحدث DragOver هدا الحدث ينفد كلما قمت بتحريك عنصر الى مكان معين , حيت ينفد هذا الحدت قبل تنفيد الحدث OnDragDrop و توجد به امكانية لقبول أو عدم قبول العملية Accept ,

متلا لتطبيق الفكرة السابقة بأن تكون العناصر الرئيسية تابتة , فعليك بمقارنة المستوى Level الذي أخدت منه العنصر ادا كان المستوى 0

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

[l]

procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;

 State: TDragState; var Accept: Boolean);

begin

 if TreeView1.Selected.Level=0 then

   Accept:=False;

end;

[/l]

الكود كاملا

[l]

procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;

 State: TDragState; var Accept: Boolean);

begin

 if TreeView1.Selected.Level=0 then

   Accept:=False;

end;





procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);

begin

    TreeView1.Items.AddChild(TreeView1.GetNodeAt(x,y),TreeView1.Selected.Text);

TreeView1.Selected.Delete;

end;

[/l]

وشكرا

هذا الموضوع مغلق.

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