تنفيذ تقنية الإرساء في دلفي:
مع التقدم المستمر لتكنولوجيا البرمجيات، أصبحت واجهة البرنامج أكثر جمالا وأصبحت العملية أكثر وأكثر ملاءمة.
بالنظر إلى البرامج الاحترافية المختلفة الموجودة في السوق، سنجد أن معظمها يوفر وظيفة الإرساء النموذجية، وخاصة برامج الأدوات، التي تحتوي بشكل أساسي على وظيفة إرساء أكثر أو أقل.
وبطبيعة الحال، تدعم دلفي أيضًا الإرساء، وهي متكاملة بشكل وثيق مع VCL، والتي تعد نعمة عظيمة لغالبية مبرمجي دلفي. دعونا نوفر وقت البرمجة الممل. التركيز على مفهوم البرنامج الأساسي.
دعونا نراجع أولاً بنية VCL. توجد خاصية DockSite (منطقية) في فئة TWinControl، وتتمثل وظيفتها في السماح بتثبيت عناصر التحكم الأخرى عليها لتتمكن من الإرساء على عناصر التحكم الأخرى، قم بتعيين الخاصية DragKind إلى dkDock. الأمر بهذه البساطة، فقط قم بتعيين الخصائص، وسيكتمل البرنامج الذي يدعم الإرساء.
بالطبع، ما ورد أعلاه ليس سوى الخطوات الأساسية. من خلال الخطوتين المذكورتين أعلاه، يمكننا الاستمرار في كتابة التعليمات البرمجية لتنفيذ وظائف أكثر تعقيدًا.
بشكل عام، يمكن إرساء البرامج التي تدعم الإرساء في الجزء العلوي والسفلي واليسار واليمين من النافذة الرئيسية، وهذا يعني أنه من الأفضل وضع عناصر تحكم يمكن إرساءها على جانب النافذة الرئيسية (طالما أن لقد تم توريثها من TWinControl)، بشكل عام نختار TPanel، لتسهيل فهم القراء، يمكننا أن نفترض أنه يمكن إرساء الجانب الأيسر من النافذة الرئيسية، لذا ضع سمة Align على النافذة الرئيسية باستخدام تُسمى لوحة lLeft LeftDockPanel، والعرض هو 0، وسمة DockSite صحيحة بالطبع، يجب أن يكون LeftDockPanel الخاص بنا قادرًا على تغيير الحجم، لذا ضع TSplitter على الجانب الأيمن منه، يسمى LeftSplitter، ثم قم بـ Align. السمة هي كل اليسار. التالي هو عنصر التحكم في الإرساء بشكل عام، تكون عناصر التحكم في إرساء البرنامج عبارة عن نماذج، لذلك نقوم أيضًا ببناء نموذج وتسميته DockableForm. يتم تعيين خاصية DragKind على dkDock ويتم تعيين خاصية DragMode على dmAutomatic (الإرساء التلقائي).
الآن يمكننا تشغيل هذا البرنامج، ماذا؟ غير فعالة؟ يختفي النموذج الذي تم إرساءه بعد إرساءه!
أوه، لقد نسيت تقريبًا أن دلفي ستولد بعض الأحداث عندما يتم إرساء النموذج، فهي كذلك
1. OnDockOver(Sender: TObject; المصدر: TDragDockObject;
X، Y: عدد صحيح؛
2. OnDockDrop(Sender: TObject; المصدر: TDragDockObject;
X، Y: عدد صحيح)؛
3. OnGetSiteInfo(Sender: TObject; DockClient: TControl;
var InfluenceRect: TRect؛
4. OnStartDock(Sender: TObject;
var DragObject: TDragDockObject);
5. OnEndDock(Sender, Target: TObject; X, Y: Integer);
6. OnUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl varallow: Boolean);
واو، كثير جدًا، لا تقلق، دعني أشرح لك بالتفصيل:
دعونا نلقي نظرة على الحدث الأول أولا
يتم تشغيل OnDockOver عندما يقوم عنصر التحكم المُرسى (DockableForm) بتمرير عنصر التحكم المُرسى (LeftDockPanel). يحتوي المصدر على معلومات حول عمليات الإرساء والسحب. إحدى السمات المهمة هي Control، وهي DockableForm. وهناك سمة مهمة أخرى هي DockRect، وهي موضع الإرساء X وY، وحالة الحالة هي dsDragEnter. dsDragLeave، dsDragMove، على التوالي يعني السحب للداخل، والسحب بعيدًا، والسحب للتحرك؛ ويعني القبول ما إذا كنت تريد الموافقة على الإرساء أم لا. تتمثل الوظيفة الرئيسية لحدث OnDockOver في التحكم في موضع معاينة النموذج الذي تم إرساؤه، فلنضف الكود التالي: