تنفيذ وظيفة الإرساء في Delphi7 عندما نستخدم Delphi7 لتطوير أنظمة التطبيقات، غالبًا ما نحتاج إلى استخدام وظيفة الإرساء للنوافذ الفرعية في النافذة الرئيسية. إذا لم تكن على دراية بهذا الجزء، فعادةً ما تنتقل إلى CSDN ومواقع الويب الأخرى ابحث عن العديد من عناصر التحكم ذات الصلة، أو بالرجوع إلى روتين الإرساء الذي يأتي مع دلفي، سأقدم لك طريقة بسيطة يمكن استخدامها. 1. أضف أربع لوحات وأربعة فاصل إلى النافذة الرئيسية، واضبط المحاذاة على الجوانب العلوية والسفلية واليسرى والأيمن.
2. قم بتعيين سمة DockSite للوحات الأربع على True.
3. قم بإضافة أحداث OnDockDrop، وOnDockOver، وOnUnDock إلى اللوحات اليسرى واليمنى كما يلي:
الإجراء TfrmMain.pnlLeftUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl varallow: Boolean);
يبدأ
إذا (المرسل كـ TPanel).VisibleDockClientCount = 1 إذن
يبدأ
(المرسل كـ TPanel).Width := 1;
نهاية ؛
نهاية ؛ إجراء TfrmMain.pnlLeftDockDrop(Sender: TObject;
المصدر: TDragDockObject; X, Y: Integer);
يبدأ
(المرسل كـ TPanel).Width := max(source.Control.UndockWidth,(Sender as TPanel).Width);
نهاية ؛ إجراء TfrmMain.pnlLeftDockOver(Sender: TObject;
المصدر: TDragDockObject؛ X، Y: عدد صحيح؛
varAccept: Boolean);
يبدأ
إذا كانت الحالة = dsDragEnter إذن
يبدأ
(المرسل كـ TPanel).Width := max(Source.Control.UndockWidth, (Sender as TPanel).Width);
نهاية
آخر
يبدأ
إذا كانت الحالة = dsDragLeave إذن
يبدأ
(المرسل كـ TPanel).Width := 1;
نهاية؛
نهاية؛
نهاية؛
تستجيب اللوحات اليمنى واليسرى لأكواد الأحداث بنفس الرمز. 4. أضف أحداث OnDockDrop وOnDockOver وOnUnDock إلى اللوحات العلوية والسفلية كما يلي:
الإجراء TfrmMain.pnlBottomUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl varallow: Boolean);
يبدأ
إذا (المرسل كـ TPanel).DockClientCount = 1 إذن
يبدأ
(المرسل كـ TPanel).الارتفاع := 1؛
نهاية؛
نهاية؛ الإجراء TfrmMain.pnlBottomDockDrop(Sender: TObject;
المصدر: TDragDockObject; X, Y: Integer);
يبدأ
(المرسل كـ TPanel).Height := max(source.Control.UndockHeight,(Sender as TPanel).Height);
النهاية ؛ الإجراء TfrmMain.pnlBottomDockOver(Sender: TObject;
المصدر: TDragDockObject؛ X، Y: عدد صحيح؛
varAccept: Boolean);
يبدأ
إذا كانت الحالة = dsDragEnter إذن
يبدأ
(المرسل كـ TPanel).Height := max(Source.Control.UndockHeight, (Sender as TPanel).Height);
نهاية
آخر
يبدأ
إذا كانت الحالة = dsDragLeave إذن
يبدأ
(المرسل كـ TPanel).الارتفاع := 1;
نهاية؛
نهاية؛
نهاية؛
تستجيب اللوحات العلوية والسفلية لأكواد الأحداث بنفس الرمز. 5. قم بإنشاء نموذج جديد للإرساء إلى النموذج الرئيسي.
6. قم بتعيين النموذج الجديد DragKind على dkDock وDragMode على dmAutomatic.
7. أضف الكود التالي إلى حدث OnClose للنموذج الجديد:
إذا self.HostDockSite <> لا شيء إذن
يبدأ
self.ManualDock(nil);
نهاية ؛
الإجراء := caHide;
8. قم بتعيين نماذج جديدة بحيث لا يتم إنشاؤها تلقائيًا.
9. إنشاء نموذج جديد في الجسم الإبداعي الرئيسي وعرضه. تذكر: استخدم Show، وليس ShowModal. هذه الطريقة ليست موحدة جدًا. إذا كنت بحاجة إلى تحكم أكثر تفصيلاً، فمن الأفضل الرجوع إلى مثال الإرساء الخاص بـ Delphi. إذا قمت بتغيير اللوحة في هذا المثال إلى TabControl أو PageConrol، فيمكنك الحصول على نتائج أفضل، ولكن يجب تغيير الرمز قليلاً ويمكن للأصدقاء المهتمين تجربته.