dbgrid satır renklendirme sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sako
Üye
Mesajlar: 453
Kayıt: 11 Haz 2003 01:40
Konum: ERZURUM

dbgrid satır renklendirme sorunu

Mesaj gönderen sako » 01 Ara 2010 03:13

Aşağıdaki kodla satır renklendirmek istiyorum. Ama en son satırda hata veriyor. forumda aradım bir kişi daha aynı sorunla karşılaşmış ama o satırı silincie onunki düzelmiş. ben o satırı silince renklendirme işlemi yapmıyor.

procedure TForm1.DBGrid4DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If (gdSelected in state) then
DBGrid4.Canvas.Brush.Color :=clred
else
begin
DBGrid4.Canvas.Brush.Color := clWhite;
if (DBGrid4.datasource.dataset.recno) mod 2 = 0 then
DBGrid4.Canvas.Brush.Color := clwhite
else
DBGrid4.Canvas.Brush.Color := clMoneyGreen;
end;
DBGrid4.DefaultDrawColumnCell(Rect, DataCol, Column, State); [Error] Unit1.pas(553): Incompatible types
end;
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI

Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 02:10
Konum: İstanbul & Gebze Karışık

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen conari » 01 Ara 2010 05:55

iflerden sonraki işlemleri begin ile başlat

if ..... then begin

...
end else
begin
.....
end;

şeklinde
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim

Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 07:56
Konum: yine yeniden Ankara ^_^

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen unicorn64 » 02 Ara 2010 12:19

sorun sanırım if kontrolünde, parantez kullanmak iyidir :wink:

Kod: Tümünü seç

if ((DBGrid4.datasource.dataset.recno mod 2) = 0) then
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim

sako
Üye
Mesajlar: 453
Kayıt: 11 Haz 2003 01:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako » 02 Ara 2010 08:38

Yok benim yazdığım kodlarda bir problem yok onu anladım. Çünkü başka bir yerde denedim oldu. Benim programla alakalı bir durum söz konusu galiba...
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen aslangeri » 03 Ara 2010 09:58

s.a.
dediğiniz gibi sizin programla alakalı bir durum.
verdiği hata mesajı tip uyuşmazlığı gibi bir durum.
hata verdiği satırdaki değişkenler ile aynı isimde değişken kullanıyor olabilirmisiniz acaba?
yani programınızın herhangi bir yerinde
Rect, DataCol, Column, State isimlerinde bir değişkeniniz olabilirmi?
birde kodlarınızı "code " tagı içerisine alırsanız daha okunaklı olur.
birde kullandığınız delphinin versiyonu kaç.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim

sako
Üye
Mesajlar: 453
Kayıt: 11 Haz 2003 01:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako » 03 Ara 2010 10:32

Hayır değişken olarak kullanmamışım. Delphi 7
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI

RamazanG
Üye
Mesajlar: 73
Kayıt: 16 Tem 2010 02:38

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen RamazanG » 04 Ara 2010 12:23

Resim

TDBGrid İçindeki Satırları Renklendirmek

Kod: Tümünü seç

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);
Begin

if Table1.FieldByName('Salary').AsCurrency>36000 then
  DBGrid1.Canvas.Font.Color:=clMaroon;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;
eğer employe’s tablosundaki salary field’i 36000 den büyükse rengi BORDO olacak.

Sonraki: Dinamik olarak satır rengini değiştirmek

Kod: Tümünü seç

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);
Begin

if Table1.FieldByName('Salary').AsCurrency>36000 then
  DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;
Sonraki: Eğer hücrenin arka plan rengini renklendirmek istiyorsan

Kod: Tümünü seç

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn;State: TGridDrawState);
Begin

if Table1.FieldByName('Salary').AsCurrency>40000 then
begin
   DBGrid1.Canvas.Font.Color:=clWhite;
   DBGrid1.Canvas.Brush.Color:=clBlack;
end;
if DataCol = 4 then {4. Sütun 'Salary'}
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;
Eğer employe salary 40000 den büyükse salari hücresinin arka plan rengi siyah, metin rengi beyaz olur.

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen aslangeri » 04 Ara 2010 09:24

@sako;
dediğiniz gibi normalde kodlar çalışıyor.
bu durumda pas ve dfm dosyalarınızı gönderin bakalım demekten başka bir şey aklıma gelmiyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim

sako
Üye
Mesajlar: 453
Kayıt: 11 Haz 2003 01:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako » 05 Ara 2010 09:50

aslangeri yazdı:@sako;
dediğiniz gibi normalde kodlar çalışıyor.
bu durumda pas ve dfm dosyalarınızı gönderin bakalım demekten başka bir şey aklıma gelmiyor.
kolay gelsin.
Hocam dfm ve pas dosyaları aşağıdaki linkte. Yardımınız için teşekkürler...
http://rapidshare.com/files/435117552/dbgrid.rar
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen aslangeri » 06 Ara 2010 12:28

s.a.
malesef dosyaları açamadım.
kullandığın bileşenlerin oğu bende yok.
muhtemelen unitlerden birinde yukardaki mesajımda belirttiğim değişkenlerden biri global oalrak tanımlı.
sen dbgrid in proceduresindeki parametrelerin isimlerini değiştirip deneyin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim

sako
Üye
Mesajlar: 453
Kayıt: 11 Haz 2003 01:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako » 07 Ara 2010 02:48

Baktımki olmuyor bütün componentleri yeni bir forma attım sorun kalmadı :) Tşkler yardımlar için...
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI

aycen
Üye
Mesajlar: 20
Kayıt: 17 Mar 2008 03:08

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen aycen » 17 Ara 2010 11:27

Merhaba,

Bu kodlar Win7 de iş görmüyor. Win7 de Delphi 2010 uyum sorunu var galiba
Win7 görünümlü renklendirmeli DBGrid nasıl yaparız

kolay gelsin

denizfatihi
Üye
Mesajlar: 233
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen denizfatihi » 30 May 2011 02:07

Merhaba herkese kolay gelsin,
aşağıdaki kod ile DBGrid üzerinden satırları renklendiriyorum yanlız şöyle bir sorun var,
IBQuery ile çalıştırdığımda sorunsuz çalışıyor
Query olarak çalıştırdığımda ise reklendirme işlemini yapmıyor.

yardımınız ve ilginiz için şimdiden teşekürler.

Kod: Tümünü seç

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  with TDBGrid(Sender) do begin
    if SelectedRows.IndexOf(DataSource.Dataset.Bookmark) >= 0 then
      Canvas.Brush.Color := clPurple
    else if gdSelected in State then
      Canvas.Brush.Color := clHighlight
    else if (DataSource.Dataset.RecNo and 1) <> 0 then
        Canvas.Brush.Color := clCream
    else
      Canvas.Brush.Color := clSKYBLUE;
    DefaultDrawDataCell(Rect, Field, State);
  end;
end;

Cevapla