procedure TOEMLISTE1.JvDBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
MyValue: String;
begin
if gdSelected in State then Exit;
MyValue := JvDBGrid1.DataSource.DataSet.FieldByName('CINSI').Value;
if MyValue ='ANAKART' then
JvDBGrid1.Canvas.Brush.Color := clYellow
else
if MyValue ='CPU' then
JvDBGrid1.Canvas.Brush.Color := $000080FF
else
if MyValue ='CDROM' then
JvDBGrid1.Canvas.Brush.Color := clRed
JvDBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Benim istediğim ise tabloda ödeme tarihi geçmiş aboneleri kırmızı renkle boyaması yani işlem tarihi 01.02.2004 ödeme tarihi ise 15.03.2004 bu tarih geldi ama abone ödeme yapmadı hemen kırmızıya boyalayacak . Bu işlemi ben acizane yapamadım yardımlarınızı bekliyorum.
Kolay gelsin..
En son macsonfor tarafından 26 Kas 2004 02:39 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kusura bakmayın ilk mesajı yanlış yazmıştım düzelttim tekrar okursanız anlarsınız. Arama Sonucunda da dbgridi renklendirme konusunda 4 mesaj var ama beni tatmin etmediler.
Kolay gelsin..
procedure TForm2.suiDBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
MyValue: string;
zaman:TDate;
label cikis;
begin
if gdSelected in State then Exit;
MyValue := suiDBGrid1.DataSource.DataSet.FieldByName('durum').AsString;
//ödenmiş ise yeşile boya (yeşile yakın bi renk=$0040FF00)
if MyValue='true' then
begin
suiDBGrid1.Canvas.Brush.Color := $0040FF00;
suiDBGrid1.Canvas.Font.Color:=clNavy;
end;
//ödenmemiş ise kırmızıya boya(kırmızıya yakın bi renk= $000F0FFF)
if MyValue='false' then
begin
suiDBGrid1.Canvas.Brush.Color := $000F0FFF;
suiDBGrid1.Canvas.Font.Color:=clwhite;
end;
//tarih alanı boş ise vazgeç ve çık
if suiDBGrid1.DataSource.DataSet.FieldByName('tarih').AsString='' then
goto cikis;
zaman:=suiDBGrid1.DataSource.DataSet.FieldByName('tarih').AsDateTime;
//zamanı gelmemiş ve ödenmemiş ise turuncu yap
if ((zaman>Now) and (MyValue='false'))then
begin
suiDBGrid1.Canvas.Brush.Color := $004080FF;
suiDBGrid1.Canvas.Font.Color:=clwhite;
end;
cikis:
suiDBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
malum burada yeşil renk ödenen taksitler , kırmızı olanlar günü geçmiş ve ödenmemiş taksitler ve turuncuda günü gelmemiş ve ödenmemiş taksitler kolay gelsin. bu arada aslangeri kardeşim sana veriyi myvalue değişkenine at ve ona göre if yapıları ile istediğin kadar farklı işlem yapıp renklendirmen için yol göstermiş. yani illada tarihli bir örnek olması şart değil. ipin ucu verilir gerisi sana kalmış kolay gelsin. resim görülmez ise sağ tıkla göster, show,viev gibi bişiler tıkla