About Delphi de ki
Coloring DBGrid makalesindeki yontem isini gorecektir. Bir de daha once belirttigimiz
DBGrid’de Renklendirme Sorunu başlıklı bir konumuz var.
Ayrica gene not olarak duseyim.
Veritabanindan gelen veride reklendirme yapabilmek icin 1-0 seklinde bir kistasiniz yoksa oncelikle global olarak;
Kod:
DbGridRenk : integer;
seklinde bir tanim yapin.
Daha sonra DbGrid'in DrawColumnCell ozelliginin basina su satirlari ekleyin :
Kod:
if Column.FieldName = 'KOLON ADI' then
begin
if DbGridRenk = 1 then
DbGridRenk := 0
else
DbGridRenk := 1;
end;
Buradaki
KOLON ADI olan kısım DbGrid Columns'daki ilk kolonunuzun adı olarak değiştirin.
Bu kodlarin hemen altinda su sekilde bir cizim yapma teknigini ekleyin :
Kod:
if ( DbGridRenk = 1 ) then
myDrawColumnCell(Rect,DataCol,Column,State,COLOR_DBGRID_ACTIVE,COLOR_DBGRID_ACTIVE_FONT,DbGrid1);
if ( DbGridRenk = 0 ) then
myDrawColumnCell(Rect,DataCol,Column,State,COLOR_DBGRID_PASSIVE,OLOR_DBGRID_PASSIVE_FONT,DbGrid1);
Burada;
Kod:
COLOR_DBGRID_ACTIVE
COLOR_DBGRID_ACTIVE_FONT
COLOR_DBGRID_PASSIVE
COLOR_DBGRID_PASSIVE_FONT
degerleri formda daha onceden tanimlanmis const tipi sabitler.
myDrawColumnCell procedurunuzde soyle birsey olabilir :
Kod:
procedure TForm1.myDrawColumnCell(const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState;BgColor:TColor;FontColor:TColor;Grid:DbGrid);
begin
(Grid as TDbGrid).Canvas.Brush.Color := BgColor;
(Grid as TDbGrid).Canvas.Font.Color := FontColor;
(Grid as TDbGrid).DefaultDrawColumnCell(Rect,Datacol,Column,State);
if (gdFocused in State) or (gdSelected in State) then
begin
(Grid as TDbGrid).Canvas.Brush.Color := COLOR_DBGRID_HIGHLIGHT;
(Grid as TDbGrid).Canvas.Font.Color := COLOR_DBGRID_HIGHLIGHT_FONT;
(Grid as TDbGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
Burada ek olarak gördüğünüz :
Kod:
COLOR_DBGRID_HIGHLIGHT
COLOR_DBGRID_HIGHLIGHT_FONT
daha önce tanımlanmış const tipi sabitler. Yukarıda da referans verdiğim
şu konuda açıklamıştım.