Daftar Drop Down Di dalam DBGrid

Inilah cara menempatkan daftar pilihan tarik-turun ke dalam DBGrid. Buat antarmuka pengguna yang lebih menarik secara visual untuk mengedit bidang pencarian di dalam DBGrid - menggunakan properti PickList dari kolom DBGrid.

Sekarang, Anda sudah tahu apa itu bidang pencarian, dan apa saja pilihan untuk menampilkan bidang pencarian DelphiDBGrid, saatnya untuk melihat cara menggunakan properti PickList dari kolom DGBrid untuk memungkinkan pengguna memilih nilai untuk bidang pencarian dari kotak daftar drop-down.

Info Cepat tentang Properti Kolom DBGrid

SEBUAH DBGrid control memiliki properti Columns - koleksi objek TColumn yang mewakili semua kolom dalam kontrol grid. Kolom dapat diatur pada waktu desain melalui editor Kolom, atau secara terprogram saat runtime. Anda biasanya akan menambahkan Kolom ke DBGird ketika Anda ingin menentukan bagaimana sebuah kolom muncul, bagaimana data dalam kolom ditampilkan dan untuk mengakses properti, acara, dan metode TDBGridColumns saat runtime. Kisi yang dikustomisasi memungkinkan Anda mengonfigurasi beberapa kolom untuk menyajikan berbagai tampilan yang sama dataset (pesanan kolom berbeda, pilihan bidang berbeda, dan warna dan font kolom berbeda, untuk contoh).

instagram viewer

Sekarang, setiap Kolom dalam kisi "ditautkan" ke bidang dari dataset yang ditampilkan dalam kisi. Terlebih lagi, setiap kolom memiliki properti PickList. Properti PickList mencantumkan nilai yang bisa dipilih pengguna untuk nilai kolom tertaut kolom.

Mengisi Daftar Pilih

Apa yang akan Anda pelajari di sini adalah bagaimana mengisi Daftar String itu dengan nilai-nilai dari dataset lain saat dijalankan.
Ingat, bahwa kami sedang mengedit tabel Artikel dan bidang Subjek hanya dapat menerima nilai dari tabel Subjek: situasi ideal untuk Daftar Pilih!

Berikut cara mengatur properti PickList. Pertama, kami menambahkan panggilan ke prosedur SetupGridPickList di event handler OnCreate.

prosedur TForm1.FormCreate (Pengirim: TObject);
mulai
SetupGridPickList ('Subjek', 'SELECT Name FROM Subjek');
akhir;

Cara termudah untuk membuat prosedur SetupGridPickList adalah pergi ke bagian pribadi dari deklarasi formulir, tambahkan deklarasi di sana dan tekan kombinasi tombol CTRL + SHIFT + C - Delphi akan menyelesaikan kode beristirahat:

...
Tipe
TForm1 = kelas (TForm)
...
prosedur privat SetupGridPickList (
const FieldName: tali;
const sql: tali);
publik
...

Catatan: prosedur SetupGridPickList mengambil dua parameter. Parameter pertama, FieldName, adalah nama bidang yang ingin kita bertindak seperti bidang pencarian; parameter kedua, SQL, adalah ekspresi SQL yang kami gunakan untuk mengisi PickList dengan nilai yang mungkin - secara umum, ekspresi SQL harus mengembalikan dataset dengan hanya satu bidang.

Begini tampilan SetupGridPickList:

prosedur TForm1.SetupGridPickList (const FieldName, sql: tali);
var
slPickList: TStringList;
Kueri: TADOQuery;
i: integer;
mulai
slPickList: = TStringList. Membuat;
Kueri: = TADOQuery. Buat (diri);
mencoba
Pertanyaan. Koneksi: = ADOConnection1;
Pertanyaan. SQL.Text: = sql;
Pertanyaan. Buka;
// Isi daftar stringsementaratidak Pertanyaan. EOF dobegin
slPickList. Tambahkan (Permintaan. Kolom [0] .AsString);
Pertanyaan. Lanjut;
akhir; //while
// tempatkan daftar di kolom yang benaruntuk i: = 0 untuk DBGrid1.Columns. Hitung-1 melakukan
jika DBGrid1.Columns [i] .FieldName = FieldName maka mulailah
DBGrid1.Columns [i] .PickList: = slPickList;
Istirahat;
akhir;
akhirnya
slPickList. Gratis;
Pertanyaan. Gratis;
akhir;
akhir; (* SetupGridPickList *)

Itu dia. Sekarang, ketika Anda mengklik kolom Subjek (untuk masuk ke mode edit).

Catatan 1: secara default, daftar turun bawah menampilkan 7 nilai. Anda dapat mengubah panjang daftar ini dengan mengatur properti DropDownRows.

Catatan 2: tidak ada yang menghentikan Anda dari mengisi Daftar Pilih dari daftar nilai yang tidak berasal dari tabel database. Jika, misalnya, Anda memiliki bidang yang hanya menerima nama hari kerja ('Senin',..., 'Minggu'), Anda dapat membuat Picklist "hard-coded".

"Eh, aku perlu mengklik Daftar Pilih 4 kali ..."

Perhatikan bahwa saat Anda ingin mengedit bidang yang menampilkan daftar turun bawah, Anda harus mengklik sel 4 kali untuk benar-benar memilih nilai dari daftar. Cuplikan kode berikutnya, ditambahkan ke event handler OnCellClick DBGrid, meniru hit ke tombol F2 diikuti oleh Alt + DownArrow.

prosedur TForm1.DBGrid1CellClick (Kolom: TColumn);
mulai// Membuat daftar pilihan drop-down muncul lebih cepatjika Kolom. PilihDaftar. Hitung> 0 maka mulailah
keybd_event (VK_F2,0,0,0);
keybd_event (VK_F2,0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0,0,0);
keybd_event (VK_DOWN, 0,0,0);
keybd_event (VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0, KEYEVENTF_KEYUP, 0);
akhir;
akhir;