การใช้ฟังก์ชันการเชื่อมต่อใน Delphi7 เมื่อเราใช้ Delphi7 เพื่อพัฒนาระบบแอปพลิเคชัน เรามักจะต้องใช้ฟังก์ชันการเชื่อมต่อหน้าต่างย่อยบนหน้าต่างหลัก หากคุณไม่คุ้นเคยกับส่วนนี้ คุณมักจะไปที่ CSDN และเว็บไซต์อื่นๆ ค้นหาการควบคุมต่างๆ ที่เกี่ยวข้อง หรืออ้างอิงถึงรูทีน Docking ที่มาพร้อมกับ Delphi ฉันจะแนะนำวิธีการง่ายๆ ที่สามารถใช้ได้ให้กับคุณ 1. เพิ่มพาเนลสี่พาเนลและตัวแยกสี่ตัวให้กับหน้าต่างหลัก และตั้งค่าการจัดตำแหน่งที่ด้านบน ล่าง ซ้าย และขวา
2. ตั้งค่าแอตทริบิวต์ DockSite ของแผงทั้งสี่เป็น True
3. เพิ่มเหตุการณ์ OnDockDrop, OnDockOver และ OnUnDock ไปที่แผงด้านซ้ายและขวาดังนี้:
กระบวนการ TfrmMain.pnlLeftUnDock (ผู้ส่ง: TObject; ไคลเอ็นต์: TControl;
เป้าหมายใหม่: TWinControl; var อนุญาต: บูลีน);
เริ่ม
ถ้า (ผู้ส่งเป็น TPanel).VisibleDockClientCount = 1 แล้ว
เริ่ม
(ผู้ส่งเป็น TPanel) ความกว้าง := 1;
จบ ;
สิ้นสุด ; ขั้นตอน TfrmMain.pnlLeftDockDrop (ผู้ส่ง: TObject;
ที่มา: TDragDockObject; X, Y: จำนวนเต็ม);
เริ่ม
(ผู้ส่งเป็น TPanel).Width := max(source.Control.UndockWidth,(ผู้ส่งเป็น TPanel).Width);
สิ้นสุด ; ขั้นตอน TfrmMain.pnlLeftDockOver (ผู้ส่ง: TObject;
แหล่งที่มา: TDragDockObject; X, Y: จำนวนเต็ม; สถานะ: TDragState;
varAccept: บูลีน);
เริ่ม
ถ้า State = dsDragEnter แล้ว
เริ่ม
(ผู้ส่งเป็น TPanel).Width := max(Source.Control.UndockWidth, (ผู้ส่งเป็น TPanel).Width);
จบ
อื่น
เริ่ม
ถ้า State = dsDragLeave แล้ว
เริ่ม
(ผู้ส่งเป็น TPanel) ความกว้าง := 1;
จบ;
จบ;
จบ;
แผงด้านซ้ายและขวาตอบสนองต่อรหัสเหตุการณ์ด้วยรหัสเดียวกัน 4. เพิ่มเหตุการณ์ OnDockDrop, OnDockOver และ OnUnDock ไปที่แผงด้านบนและด้านล่างดังนี้:
ขั้นตอน TfrmMain.pnlBottomUnDock (ผู้ส่ง: TObject; ลูกค้า: TControl;
เป้าหมายใหม่: TWinControl; var อนุญาต: บูลีน);
เริ่ม
ถ้า (ผู้ส่งเป็น TPanel).DockClientCount = 1 แล้ว
เริ่ม
(ผู้ส่งเป็น TPanel) ความสูง := 1;
จบ;
จบ; ขั้นตอน TfrmMain.pnlBottomDockDrop (ผู้ส่ง: TObject;
ที่มา: TDragDockObject; X, Y: จำนวนเต็ม);
เริ่ม
(ผู้ส่งเป็น TPanel).Height := max(source.Control.UndockHeight,(ผู้ส่งเป็น TPanel).Height);
สิ้นสุด ; ขั้นตอน TfrmMain.pnlBottomDockOver (ผู้ส่ง: TObject;
แหล่งที่มา: TDragDockObject; X, Y: จำนวนเต็ม; สถานะ: TDragState;
varAccept: บูลีน);
เริ่ม
ถ้า State = dsDragEnter แล้ว
เริ่ม
(ผู้ส่งเป็น TPanel).Height := max(Source.Control.UndockHeight, (ผู้ส่งเป็น TPanel).Height);
จบ
อื่น
เริ่ม
ถ้า State = dsDragLeave แล้ว
เริ่ม
(ผู้ส่งเป็น TPanel) ความสูง := 1;
จบ;
จบ;
จบ;
แผงด้านบนและด้านล่างตอบสนองต่อโค้ดเหตุการณ์ด้วยโค้ดเดียวกัน 5. สร้างแบบฟอร์มใหม่เพื่อเชื่อมต่อกับแบบฟอร์มหลัก
6. ตั้งค่า DragKind รูปแบบใหม่เป็น dkDock และ DragMode เป็น dmAutomatic
7. เพิ่มรหัสต่อไปนี้ลงในเหตุการณ์ OnClose ของแบบฟอร์มใหม่:
ถ้า self.HostDockSite <> ไม่มี เลย
เริ่ม
self.ManualDock (ไม่มี);
จบ ;
การกระทำ := caHide;
8. ตั้งค่าแบบฟอร์มใหม่ไม่ให้สร้างโดยอัตโนมัติ
9. สร้างแบบฟอร์มใหม่ในเนื้อหาโฆษณาหลักแล้วแสดง ข้อควรจำ: ใช้ Show ไม่ใช่ ShowModal วิธีการนี้ไม่ได้มาตรฐานมากนัก หากคุณต้องการการควบคุมที่มีรายละเอียดมากขึ้น วิธีที่ดีที่สุดคือดูตัวอย่าง Docking ของ Delphi หากคุณเปลี่ยน Panel ในตัวอย่างนี้เป็น TabControl หรือ PageConrol คุณจะได้ผลลัพธ์ที่ดีขึ้น แต่ต้องเปลี่ยนโค้ดเล็กน้อย เพื่อนที่สนใจสามารถลองใช้ได้