hai sobat hibhib yang budiman, dbgrid bawaan standar delphi sering menyuguhkan warna secara default yang tidak bisa di ubah pada menu properties, warna tersebut biasanya adalah putih pada fontnya dan hitam pada backgroundnya saaat diselec record. hal ini sudah lumrah, tapi akan menjadi malasalah mana kala warna bacgroud dasarnya di ganti dan di utak atik, atau pingin lebih dengan warna sesuai custom atau yang kita inginkan,milsal Highlighting Mouse Pointer. berikut adalah cara hack atau mengubah tampilan dasar dari dbgrid atatu crdbgrid pada komponen mydac untuk delphi.
kami anggap anda sudah menguasai struktur dari unit.pas delphi
kami anggap anda sudah menguasai struktur dari unit.pas delphi
pada bagian code dibawah type tambahkan baris perintah berikut
THackingGrid = class(TDBGrid);
Arahkan kursor pada bagian deklarasi private dan public.
Tepat dibawah deklarasi private, sebelum public tambahkan deklarasi variabel, procedure dan property baru seperti ini:
Tepat dibawah deklarasi private, sebelum public tambahkan deklarasi variabel, procedure dan property baru seperti ini:
Private fMouseOver: Integer; procedure SetMouseOver(const Value: Integer); property MouseOver: integer read fMouseOver write SetMouseOver;
Arahkan kursor ke bagian implementation (dibawah kata kunci implementation), buat procedure SetMouseOver yang sudah dideklarasikan sebelumnya, menjadi seperti ini:
procedure TForm1.SetMouseOver(const Value: Integer); begin if fMouseOver <> Value then begin fMouseOver:= Value; DBGrid1.Repaint; end; end;
Klik ganda menu OnMouseMove sehingga code editor akan mengantar kita bada kerangka kode event tersebut. Tepat diatas kata kunci begin, deklarasikan variabel baru:
var point: TGridCoord; begin point:= DbGrid1.MouseCoord(x, y); MouseOver:= point.Y; end;
yang terakhir harus dilakukan adalah membuat koding yang terkait pada event untuk membuat highlighting baris data pada saat mouse melewati baris data DBGrid1. Untuk menyelesaikan tujuan itu, kembali ke Object Inspector, arahkan pada events OnDrawColumnCell lalu klik ganda hingga kerangka events terbuka pada code editor. Ketikkan kode seperti ini, tepat dibawah kata kunci begin:
procedure TForm1.DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (THackDBGrid(DBGrid1).DataLink.ActiveRecord + 1 = THackDBGrid(DBGrid1).Row) or (gdFocused in State) or (gdSelected in State) then begin DBGrid1.Canvas.Brush.Color := clSkyBlue; DBGrid1.Canvas.Font.Style := DBGrid1.Canvas.Font.Style + [fsBold]; DBGrid1.Canvas.Font.Color := clRed; end; end;sumber
hibhib.com
Tidak ada komentar:
Posting Komentar