dbgrid satır renklendirme sorunu

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

dbgrid satır renklendirme sorunu

Mesaj gönderen sako »

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 03:10
Konum: İstanbul & Gebze Karışık

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen conari »

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 08:56
Konum: yine yeniden Ankara ^_^

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen unicorn64 »

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: 473
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako »

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: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen aslangeri »

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: 473
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako »

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 03:38

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen RamazanG »

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: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen aslangeri »

@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: 473
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako »

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: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen aslangeri »

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: 473
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen sako »

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 »

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: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: dbgrid satır renklendirme sorunu

Mesaj gönderen denizfatihi »

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