Implementasi teknologi docking di Delphi:
Dengan kemajuan teknologi perangkat lunak yang berkelanjutan, antarmuka perangkat lunak menjadi semakin indah dan pengoperasian menjadi semakin nyaman.
Melihat berbagai software profesional yang ada di pasaran, kita akan menemukan bahwa sebagian besar menyediakan fungsi form docking, terutama software tool, yang pada dasarnya kurang lebih memiliki fungsi docking.
Tentu saja, Delphi juga mendukung docking, dan terintegrasi erat dengan VCL, yang merupakan keuntungan besar bagi sebagian besar pemrogram Delphi. Mari hemat waktu pengkodean yang membosankan. Fokus pada konsepsi program inti.
Mari kita tinjau dulu struktur VCL. Ada properti DockSite (boolean) di kelas TWinControl. Fungsinya adalah untuk memungkinkan kontrol lain dipasang di sana. Ada properti DragKind di kelas TControl Untuk dapat melakukan docking pada kontrol lain, atur properti DragKind ke dkDock. Sesederhana itu, cukup atur propertinya, dan program yang mendukung docking selesai.
Tentu saja, langkah di atas hanyalah langkah paling dasar. Dengan dua langkah di atas, kita dapat terus menulis kode untuk mengimplementasikan fungsi yang lebih kompleks.
Umumnya, program yang mendukung docking dapat di-dock di bagian atas, bawah, kiri, dan kanan jendela utama. Artinya, lebih baik meletakkan kontrol yang dapat di-dock di sisi jendela utama (selama mereka diwarisi dari TWinControl), umumnya kita memilih TPanel, untuk memudahkan pemahaman pembaca, kita dapat berasumsi bahwa sisi kiri jendela utama dapat di-dock, jadi letakkan atribut Align pada jendela utama dengan Panel lLeft diberi nama LeftDockPanel, lebarnya 0, dan atribut DockSite adalah True. Tentu saja, LeftDockPanel kita harusnya bisa diubah ukurannya, jadi letakkan TSplitter di sisi kanannya, beri nama LeftSplitter, dan Align. atributnya semuanyaKiri. Berikutnya adalah kontrol docking. Umumnya, kontrol docking program adalah formulir, jadi kami juga membuat formulir dan menamainya DockableForm. Properti DragKind disetel ke dkDock dan properti DragMode disetel ke dmAutomatic (docking otomatis).
Sekarang kita bisa menjalankan program ini, apa? Tidak efektif? Formulir yang dipasang ke dok akan hilang setelah dipasang ke dok!
Oh, saya hampir lupa, Delphi akan menghasilkan beberapa event ketika form yang di-dock di-dock, yaitu
1. OnDockOver(Pengirim: TObject; Sumber: TDragDockObject;
X, Y: Integer; Status: TDragState; var Terima: Boolean);
2. OnDockDrop(Pengirim: TObject; Sumber: TDragDockObject;
X, Y: Bilangan Bulat);
3. OnGetSiteInfo(Pengirim: TObject; DockClient: TControl;
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
4. OnStartDock(Pengirim: TObject;
var DragObject: TDragDockObject);
5. OnEndDock(Pengirim, Target: TObject; X, Y: Integer);
6. OnUnDock(Pengirim: TObject; Klien: TControl;
Target Baru: TWinControl; var Izinkan: Boolean);
Wah banyak sekali, jangan khawatir, biar saya jelaskan secara detail:
Mari kita lihat event pertama terlebih dahulu
OnDockOver dipicu ketika kontrol yang digandeng (DockableForm) melewati kontrol yang digandeng (LeftDockPanel). Sumber berisi informasi tentang operasi docking dan drag. Salah satu atribut penting adalah Control, yaitu DockableForm. Atribut penting lainnya adalah DockRect, yang merupakan posisi docking; dsDragLeave, dsDragMove, masing-masing berarti menyeret masuk, menyeret menjauh, dan menyeret untuk pindah. Terima berarti menyetujui docking. Fungsi utama dari event OnDockOver adalah untuk mengontrol posisi pratinjau formulir yang digandeng. Mari tambahkan kode berikut: