Menerapkan fungsi docking di Delphi7 Saat kita menggunakan Delphi7 untuk mengembangkan sistem aplikasi, kita sering kali perlu menggunakan fungsi docking sub-jendela di jendela utama. Jika Anda belum familiar dengan bagian ini, biasanya Anda membuka CSDN dan situs web lain untuk melakukannya temukan berbagai kontrol terkait, atau Mengacu pada rutinitas Docking yang disertakan dengan Delphi, saya akan memperkenalkan kepada Anda metode sederhana yang dapat digunakan. 1. Tambahkan empat Panel dan empat Splitter ke jendela utama, dan atur perataan ke sisi atas, bawah, kiri, dan kanan.
2. Atur atribut DockSite dari empat Panel ke True.
3. Tambahkan event OnDockDrop, OnDockOver, dan OnUnDock ke Panel kiri dan kanan sebagai berikut:
Prosedur TfrmMain.pnlLeftUnDock(Pengirim: TObject; Klien: TControl;
Target Baru: TWinControl; var Izinkan: Boolean);
mulai
if (Pengirim sebagai TPanel).VisibleDockClientCount = 1 maka
mulai
(Pengirim sebagai TPanel).Lebar := 1;
akhir ;
akhir ; prosedur TfrmMain.pnlLeftDockDrop(Pengirim: TObject;
Sumber: TDragDockObject; X, Y: Integer);
mulai
(Pengirim sebagai TPanel).Width := max(source.Control.UndockWidth,(Pengirim sebagai TPanel).Width);
akhir ; prosedur TfrmMain.pnlLeftDockOver(Pengirim: TObject;
Sumber: TDragDockObject; X, Y: Integer Negara: TDragState;
varTerima: Boolean);
mulai
jika Status = dsDragEnter maka
mulai
(Pengirim sebagai TPanel).Width := max(Source.Control.UndockWidth, (Pengirim sebagai TPanel).Width);
akhir
kalau tidak
mulai
jika Negara = dsDragLeave maka
mulai
(Pengirim sebagai TPanel).Lebar := 1;
akhir;
akhir;
akhir;
Panel kiri dan kanan merespons kode peristiwa dengan kode yang sama. 4. Tambahkan event OnDockDrop, OnDockOver, dan OnUnDock ke panel atas dan bawah sebagai berikut:
procedure TfrmMain.pnlBottomUnDock(Pengirim: TObject; Klien: TControl;
Target Baru: TWinControl; var Izinkan: Boolean);
mulai
if (Pengirim sebagai TPanel).DockClientCount = 1 maka
mulai
(Pengirim sebagai TPanel).Tinggi := 1;
akhir;
akhir; procedure TfrmMain.pnlBottomDockDrop(Pengirim: TObject;
Sumber: TDragDockObject; X, Y: Integer);
mulai
(Pengirim sebagai TPanel).Height := max(source.Control.UndockHeight,(Pengirim sebagai TPanel).Height);
akhir ; prosedur TfrmMain.pnlBottomDockOver(Pengirim: TObject;
Sumber: TDragDockObject; X, Y: Integer Negara: TDragState;
varTerima: Boolean);
mulai
jika Status = dsDragEnter maka
mulai
(Pengirim sebagai TPanel).Height := max(Source.Control.UndockHeight, (Pengirim sebagai TPanel).Height);
akhir
kalau tidak
mulai
jika Negara = dsDragLeave maka
mulai
(Pengirim sebagai TPanel).Tinggi := 1;
akhir;
akhir;
akhir;
Panel atas dan bawah merespons kode peristiwa dengan kode yang sama. 5. Buat form baru untuk docking ke form utama.
6. Atur form baru DragKind menjadi dkDock dan DragMode menjadi dmAutomatic.
7. Tambahkan kode berikut ke event OnClose pada form baru:
jika self.HostDockSite <> nihil maka
mulai
self.ManualDock(nihil);
akhir ;
Tindakan := caHide;
8. Atur formulir baru agar tidak dibuat secara otomatis.
9. Buat formulir baru di badan kreatif utama dan tampilkan. Ingat: gunakan Show, bukan ShowModal. Metode ini tidak terlalu terstandarisasi. Jika Anda memerlukan kontrol yang lebih detail, yang terbaik adalah merujuk pada contoh Docking Delphi. Jika Anda mengubah Panel pada contoh ini menjadi TabControl atau PageConrol, Anda bisa mendapatkan hasil yang lebih baik, namun kodenya perlu sedikit diubah. Teman-teman yang berminat bisa mencobanya.