TTreeView Delphi komponen menampilkan daftar item yang hierarkis— simpul pohon. Node disajikan oleh teks node dan gambar opsional. Setiap node dalam tampilan hierarki adalah turunan dari kelas TTreeNode.
Meskipun Anda dapat mengisi tampilan hierarki dengan item pada waktu desain, menggunakan Editor Item TreeView, pada sebagian besar kasus, Anda akan mengisi tampilan hierarki saat dijalankan — tergantung dari apa aplikasi Anda.
Editor Item TreeView mengungkapkan hanya ada beberapa informasi yang dapat Anda "lampirkan" ke sebuah node: teks dan beberapa indeks gambar (untuk keadaan normal, diperluas, dipilih dan sama-sama).
Intinya, komponen tampilan pohon mudah diprogram untuk dilawan. Ada beberapa metode untuk menambahkan node baru ke pohon dan mengatur hierarki mereka.
Berikut cara menambahkan 10 node ke tampilan hierarki (bernama "TreeView1"). Perhatikan bahwa properti Item menyediakan akses ke semua node di pohon. AddChild menambahkan simpul baru ke tampilan hierarki. Parameter pertama adalah simpul orangtua (untuk membangun hierarki) dan parameter kedua adalah teks simpul.
AddChild mengembalikan TTreeNode yang baru ditambahkan. Di atas contoh kode, semua 10 simpul ditambahkan sebagai simpul akar (tidak memiliki simpul induk).
Dalam situasi yang lebih kompleks, Anda ingin agar simpul Anda membawa lebih banyak informasi — lebih disukai memiliki beberapa nilai khusus (properti) yang spesifik untuk proyek yang Anda kembangkan.
Katakanlah Anda ingin menampilkan data item pesanan pelanggan dari database Anda. Setiap pelanggan dapat memiliki lebih banyak pesanan dan setiap pesanan terdiri dari lebih banyak item. Ini adalah hubungan hierarkis yang dapat ditampilkan dalam tampilan hierarki:
Dalam database Anda akan ada lebih banyak info untuk setiap pesanan dan untuk setiap item. Tampilan hierarki menampilkan kondisi saat ini (hanya baca) - dan Anda ingin melihat per pesanan (atau bahkan per item) detail untuk pesanan yang dipilih.
Saat pengguna memilih simpul "Order_1_1" Anda ingin detail pesanan (jumlah total, tanggal, dll) ditampilkan kepada pengguna.
Anda dapat, pada saat itu mengambil data yang diperlukan dari database, TETAPI Anda perlu mengetahui pengidentifikasi unik (katakanlah nilai integer) dari pesanan yang dipilih untuk mengambil data yang benar.
Kami membutuhkan cara untuk menyimpan pengidentifikasi pesanan ini bersama dengan simpul tetapi kami tidak dapat menggunakan properti Teks. Nilai khusus yang perlu kita simpan di setiap node adalah integer (hanya sebuah contoh).
Ketika situasi seperti itu terjadi, Anda mungkin tergoda untuk mencari properti Tag (banyak komponen Delphi miliki) tetapi properti Tag tidak diekspos oleh kelas TTreeNode.
Tambahkan Data Khusus Ke Tree Node: The TreeNode. Properti Data
Properti Data dari simpul pohon memungkinkan Anda untuk mengaitkan data khusus Anda dengan simpul pohon. Data adalah a penunjuk dan bisa menunjuk ke objek dan rekaman. Data XML (RSS Feed) Menampilkan dalam TreeView menunjukkan cara menyimpan a jenis rekaman variabel menjadi properti Data dari simpul pohon.
Banyak kelas tipe item memperlihatkan properti Data — Anda dapat menggunakan untuk menyimpan objek apa pun bersama dengan item. Contohnya adalah TListItem dari komponen TListView. Ini dia cara menambahkan objek ke properti Data.
Tambahkan Data Khusus Ke Tree Nodes: The TreeView. CreateNodeClass
Jika Anda tidak ingin menggunakan properti Data dari TTreeNode, tetapi Anda ingin memiliki TreeNode sendiri diperpanjang dengan beberapa properti, Delphi juga memiliki solusi.
Katakanlah Anda ingin dapat melakukannya
Berikut cara memperluas TTreeNode standar dengan beberapa properti Anda sendiri:
- Buat TMyTreeNode Anda dengan memperpanjang TTreeNode.
- Tambahkan properti string MyProperty.
- Menangani OnCreateNodeClass untuk tampilan hierarki untuk menentukan kelas node Anda harus dibuat.
- Paparkan sesuatu seperti properti TreeView1_SelectedNode pada level formulir. Ini akan menjadi tipe TMyTreeNode.
- Menangani OnChange tampilan pohon untuk menulis ke SelectedNode nilai dari simpul yang dipilih.
- Gunakan TreeView1_Selected.myProperty untuk membaca atau menulis nilai khusus baru.
Berikut kode sumber lengkap (TButton: "Button1" dan TTreeView: "TreeView1" pada formulir):
Kali ini properti Data dari kelas TTreeNode tidak digunakan. Sebaliknya, Anda memperluas kelas TTreeNode untuk memiliki versi sendiri simpul pohon: TMyTreeNode.
Menggunakan acara OnCreateNodeClass dari tampilan hierarki, Anda membuat simpul dari kelas kustom Anda alih-alih kelas TTreenode standar.