Implementasi posisi dan pewarnaan baris di DBGrid di DELPHI
Saat mengoperasikan sistem database, saya menemukan bahwa baris data dalam kontrol DBGrid tidak dapat diposisikan dan setelah menemukan baris tertentu, baris saat ini tidak dapat ditandai dengan jelas (seperti mengubah warna). informasi, saya menemukan bahwa pada dasarnya tidak ada pengenalan konten ini, termasuk beberapa warna baris atas yang dinamis. Artikel seperti Se berbicara tentang operasi yang dilakukan selama inisialisasi data, tetapi tidak memiliki fungsi reposisi setelah sumber data disegarkan, jadi saya memutuskan untuk menyelesaikan masalah ini setelah seharian meneliti DELPHI dan meninjau informasi terkait, saya menemukan sedikit Xiaocheng, sekarang tuliskan dan pelajari bersama semua rekan saya. Tolong beri saya nasihat jika ada ketidaksesuaian.
Pertama, saya mencari kontrol Ttable dan Tquery dan tidak menemukan metode yang dapat langsung menemukan baris data. Saya juga mencari DBGrid dan tidak menemukan fungsi terkait yang dapat langsung menemukan baris data tertentu kumpulan data.Setelah upaya terus menerus, saya akhirnya menemukannya. Saya menemukan metode di TdataSet: GoToBookmark.
Setelah menemukan metode ini, masalahnya hanya setengah terselesaikan. Warna baris data yang ditunjuk oleh penunjuk saat ini juga harus diubah dan yang aneh di DBGrid). (Kecuali untuk bookmark yang jelas) Ini jelas diterapkan di kontrol DBGrid. Ada kejadian OnDrawDataCell di kontrol DBGrid. Kelebihan metode ini dapat mengubah warna baris data yang ditentukan.
Proses penggunaan spesifiknya adalah sebagai berikut:
(1) Posisikan baris data secara dinamis
//------------------------------------------------ ===============
//Nama proses: DyDbgDataLine
//Penulis: Haiti
//Tanggal: 22-02-2003
//Fungsi: Secara otomatis berpindah ke baris data di kontrol DBGrid yang memenuhi kondisi ini berdasarkan kondisi yang ditentukan pengguna
//Parameter masukan:
// sValue: Nilai baris yang saat ini perlu dipindahkan;
// tab: data dari tabel terkait di DBGrid saat ini;
// dsr: sumber data yang saat ini perlu dioperasikan;
//Nilai kembalian: Tidak ada
//Ubah catatan:
//------------------------------------------------ ================
Prosedur DyDbgDataLine(sValue:string;tab:Ttable;dsr:TDatasource)
var
penanda buku:TBookMark;
mulai
//Rekam baris yang ditandai saat ini;
bookmark:=self.tab.GetBookmark;
self.tab.pertama;
sementara tidak self.tab.Eof lakukan
mulai
jika self.tab.FieldByName('cpbh').AsString= sValue maka
mulai
bookmark:=self.tab.GetBookmark;
merusak;
akhir;
self.tab.Selanjutnya;
akhir;
self.dsr.DataSet.GotoBookmark(penunjuk(bookmark));
Akhir;
Deskripsi: Tabel yang digunakan telah terikat ke DBGrid pada antarmuka tampilan saat ini;
(2) Ubah warna untuk menandai baris data saat ini
Pertama, atur properti DefaultDrawing DBGrid ke false; lalu panggil fungsi berikut di fungsi acara OnDrawDataCell:
//------------------------------------------------ ===============
//Nama proses: DrawLine
//Penulis: Haiti
//Tanggal: 22-02-2003
//Fungsi: Mengubah warna baris tertentu di Dbgrid sebagai tanda;
//Parameter masukan:
// zdm: nama bidang;
// Rect: unit baris yang perlu dimasukkan dan keluar;
// Bidang: bidang yang sedang ditampilkan;
// state: status tampilan baris saat ini;
// zdz: Nilai baris yang saat ini perlu dipindahkan;
// tab: data dari tabel terkait di DBGrid saat ini;
// dbg: DBGrid yang saat ini perlu dioperasikan;
//Nilai kembalian: Tidak ada
//Ubah catatan:
//------------------------------------------------ ================
procedurDrawLine(tab:Ttable;const Rect:Trect;Field:Tfield;state:TgridDrawState;dbg:TDBGrid)
mulai
jika (tab.fieldbyname(zdm).asstring=zdz)lalu
mulai
dbg.canvas.font.color:=clred;
dbg.kanvas.kuas.warna:=clkuning;
akhir;
dbg.DefaultDrawDataCell(Rect,Field,State);
akhir;