Dbgridi İsteğe göre renklendirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
macsonfor
Üye
Mesajlar: 118
Kayıt: 14 Haz 2004 04:59

Dbgridi İsteğe göre renklendirme

Mesaj gönderen macsonfor »

Bu konu hakkında kodbank 3.1'de bazı kodlar var ama bunlar benim ihtiyaçlarıma tam olarak cevap veremiyor
örnek bir kod vereyim

Kod: Tümünü seç

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.
Bilgi Paylaşıldıkça Çoğalır
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
:ara ma yaptınmı? :Nevil çünki bu konuda çok konuşuldu.

Kod: Tümünü seç

  MyValue := JvDBGrid1.DataSource.DataSet.FieldByName('CINSI').Value; 
satırında myvalue değişkenine müşterinin borcu olup olmadığını alacaksın.
sonrada bunu kontrol edeceksin.

Kod: Tümünü seç

if musterininborcuvar then
   JvDBGrid1.Canvas.Brush.Color := clRed
else
JvDBGrid1.Canvas.Brush.Color := clwindowtext;
işlem tamam.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
macsonfor
Üye
Mesajlar: 118
Kayıt: 14 Haz 2004 04:59

Mesaj gönderen macsonfor »

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..
Bilgi Paylaşıldıkça Çoğalır
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Mesaj gönderen vampir261 »

Kod: Tümünü seç

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;

Resim


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
Cevapla