فهم عمليات السحب والإفلات في دلفي

"السحب والإسقاط" هو الضغط باستمرار على فأرة الحاسوب أثناء تحريك الماوس ، ثم حرر الزر لإسقاط الكائن. تسهل دلفي برمجة السحب والإفلات في التطبيقات.

يمكنك حقًا السحب والإفلات من / إلى أي مكان تريد ، مثل من نموذج إلى آخر ، أو من مستكشف Windows إلى التطبيق الخاص بك.

مثال للسحب والإسقاط

بدء مشروع جديد ووضع عنصر تحكم صورة واحد في نموذج. استخدم المفتش الكائن لتحميل صورة (خاصية الصورة) ثم قم بتعيين DragMode الملكية ل dm يدوي. سنقوم بإنشاء برنامج يسمح بنقل وقت تحكم TImage باستخدام تقنية السحب والإسقاط.

DragMode

تسمح المكونات بنوعين من السحب: التلقائي واليدوي. تستخدم دلفي خاصية DragMode للتحكم عندما يكون المستخدم قادرًا على سحب عنصر التحكم. القيمة الافتراضية لهذه الخاصية هي dmManual ، مما يعني أن سحب المكونات حول لا يسمح بالتطبيق ، إلا في ظل ظروف خاصة ، والتي يتعين علينا كتابة الكود المناسب. بغض النظر عن إعداد خاصية DragMode ، سينتقل المكون فقط إذا تمت كتابة الرمز الصحيح لإعادة وضعه.

OnDragDrop

يسمى الحدث الذي يتعرف على السحب والإفلات حدث OnDragDrop. نستخدمها لتحديد ما نريد أن يحدث عندما يسقط المستخدم كائنًا. لذلك ، إذا أردنا نقل مكون (صورة) إلى موقع جديد في نموذج ، يجب علينا كتابة التعليمات البرمجية لمعالج أحداث OnDragDrop للنموذج.

instagram viewer

المعلمة المصدر لحدث OnDragDrop هو الكائن الذي يتم إسقاطه. نوع المعلمة المصدر هو TObject. للوصول إلى خصائصه ، يجب أن نرسله إلى نوع المكون الصحيح ، وهو في هذا المثال TImage.

قبول

علينا استخدام حدث OnDragOver الخاص بالنموذج للإشارة إلى أن النموذج يمكنه قبول عنصر تحكم TImage الذي نريد إسقاطه عليه. على الرغم من القبول معامل افتراضيًا إلى True ، إذا لم يتم توفير معالج حدث OnDragOver ، يرفض عنصر التحكم الكائن المسحوب (كما لو تم تغيير معلمة Accept إلى False).

قم بتشغيل مشروعك وحاول سحب وإسقاط صورتك. لاحظ أن الصورة تظل مرئية في موقعها الأصلي أثناء السحب يتحرك مؤشر الماوس. لا يمكننا استخدام إجراء OnDragDrop لجعل المكون غير مرئي أثناء إجراء السحب لأن هذا الإجراء لا يتم استدعاؤه إلا بعد أن يسقط المستخدم الكائن (إن وجد).

DragCursor

إذا كنت تريد تغيير صورة المؤشر المقدمة أثناء سحب عنصر التحكم ، استخدم خاصية DragCursor. القيم المحتملة لخاصية DragCursor هي نفسها لخاصية المؤشر. يمكنك استخدام المؤشرات المتحركة أو أي شيء تريده ، مثل ملف صورة BMP أو ملف مؤشر CUR.

BeginDrag

إذا كان DragMode هو dmAutomatic ، فسيبدأ السحب تلقائيًا عندما نضغط على زر الماوس مع وجود المؤشر في عنصر التحكم. إذا تركت قيمة خاصية DragMode الخاصة بـ TImage على القيمة الافتراضية لـ dmManual ، فيجب عليك استخدام أساليب BeginDrag / EndDrag للسماح بسحب المكون. الطريقة الأكثر شيوعًا للسحب والإفلات هي تعيين DragMode على dmManual وبدء السحب عن طريق معالجة أحداث الفأرة لأسفل.

الآن ، سنستخدم Ctrl + MouseDown تركيبة لوحة المفاتيح للسماح بالسحب. جلس الصورةDragMode مرة أخرى إلى dmManual وكتابة معالج الأحداث MouseDown مثل هذا:

تأخذ BeginDrag معلمة منطقية. إذا قمنا بتمرير True (كما هو الحال في هذا الرمز) ، يبدأ السحب على الفور ؛ إذا كان خطأ ، فلن يبدأ حتى نقوم بتحريك الماوس على مسافة قصيرة. تذكر أنه يتطلب مفتاح Ctrl.

instagram story viewer