DBGrid ve Renk

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

DBGrid ve Renk

Mesaj gönderen canset »

Herkese selamlar, hayırlı Ramazan'lar;

İki ayrı formda birbirleri ile ilişkili iki adet table'ım var...1.ci formdaki dbgrid yapılan satışın ana hatlarını içerirken, bu griddeki ayrıntı istediğim satışın üzerine tıkladığımda, 2.ci form ve dolayısı ile dbgrid'de ayrıntılara ulaşılacak şekilde düzenledim...

Sorum ise şu şekilde...: 2.ci formdaki ayrıntıları gösteren dbgrid için bir kaydet butonu koydum, bunu kaydettiğim anda da 1.ci formdaki dbgrid'in o satışa ait satırını farklı bir renk yapmasını istiyorum...Yani başka bir deyişle, satışı sonlandıracak butona tıkladığımda, sonlandırdığım satış kırmızı renkte görünürken, sonlanmamış satışlar yeşil görünecek gibi...

Ayrıca, arşivden incelediğim kadarı ile dbgrid renklendirmede dbgrid'in DrawColumnCell olayı kullanılmış, acaba renklendirmeyi kaydet butonuna ekleyeceğimiz bir kod ile yapacağımdan yazacağım yer farkedecek midir?
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1526
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

satış işleminin sonlanıp sonlanmadığını bir alan ile kontrol ediyorsan

Kod: Tümünü seç

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  if Field.Value = "xx" then
    DBGrid1.Canvas.Brush.Color := clWhite
  else
    DBGrid1.Canvas.Brush.Color := clSkyBlue; 
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;
Resim

..::|YeşilMavi|::..
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Sn. Lazio;

DBGrid'de bir koşul var, yalnız DBGridDrawDataCell değil de DBGridDrawColumnCell'de renklendirme yapabildim, ikisi arasındaki fark nedir acaba?

Kod şu şekilde:

Kod: Tümünü seç

procedure TForm3.DBGrid4DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if table6DURUM.Text='true' then
dbgrid4.Canvas.Brush.Color:= clSkyblue
else
dbgrid4.Canvas.Brush.Color:= clRed;
dbgrid4.DefaultDrawColumnCell(Rect,DataCol, Column,State);
end;
Bu kod form3'de kullanılacak, ama koşulu yani table6DURUM kolonundaki 'true' koşulunu form5'deki işleme göre verdirmekteyim...
Yani önce form3'de bir işlem yarım olarak yapıp kaydediyorum, form5'de ise işlem tamamına eriyor ve buradaki bir butonla işlemi sonlandır dediğimde form5 kapanıp form3 açılacak ve tamamlanmış olan işlem grid satırında SkyBlue gözükürken, tamamlanmamış işlemler Red olarak gözükecek...

Şimdi yukarıdaki kodla bütün satırlar, true olsun ya da olmasın kırmızı görünmekte...
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Sn. Lazio;

Aşağıdaki kod işimi gördü, table ile olmuyormuş demek ki, bu arada bunu da öğrenmiş oldum...Yardımlarınız için teşekkürler..


Kod: Tümünü seç


procedure TForm3.DBGrid4DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (DBGrid4.Fields[5]).Value='true' then
dbgrid4.Canvas.Brush.Color:= clSkyblue
else
dbgrid4.Canvas.Brush.Color:= clRed;
dbgrid4.DefaultDrawColumnCell(Rect,DataCol, Column,State);
end;
Cevapla