DbGridde satır boyama

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

DbGridde satır boyama

Mesaj gönderen y.kulac »

dbgridde satırları daha iyi ayırt edebilmek için şu şekilde boyama yapabiliriz.
dbgrrid in DrawColumnCell olayına şu koldarı yazınız.

Kod: Tümünü seç

if DBGrid1.DataSource.DataSet.RecNo mod 2 =  0 then // çift sayılı alanların rengi 0,2,4....
     Dbgrid1.Canvas.brush.Color := $00AEEBF0
 else
if DBGrid1.DataSource.DataSet.RecNo mod 2 =  1 then // tek sayılı alanların rengi 1,3,5...
     Dbgrid1.Canvas.Brush.Color := clWindow;

with DBGrid1.Canvas do
begin
      if (gdSelected in State) then // seçili alanın renk ve yazı fontu
      begin
          Brush.Color := $00E2D032; //seçim rengi
          Font.Color := ClBlack; // yazı rengi
          Font.Size:=10; // yazı büyüklüğü
          Font.Style := font.Style + [fsBold]; // yazı kalın olsun
          FillRect(rect);
      end;
 end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
drf1
Üye
Mesajlar: 9
Kayıt: 11 Tem 2010 10:34

Re: DbGridde satır boyama

Mesaj gönderen drf1 »

Teşekkürler hocam . Birde benim bir sorum olacak .
Datasette locate yaptıktan sonra , dbgrid üstünde konumlandığı satırı boyayabilirmiyiz.yani tek satır rengi değişecek .
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: DbGridde satır boyama

Mesaj gönderen sabanakman »

Kod: Tümünü seç

var SatirYeri:TBookmarkStr;

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
  SatirYeri:=Table1.Bookmark;
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2 =  0 then // çift sayılı alanların rengi 0,2,4....
     Dbgrid1.Canvas.brush.Color := $00AEEBF0
else
if DBGrid1.DataSource.DataSet.RecNo mod 2 =  1 then // tek sayılı alanların rengi 1,3,5...
     Dbgrid1.Canvas.Brush.Color := clWindow;

with DBGrid1.Canvas do
begin
      if (gdSelected in State) then // seçili alanın renk ve yazı fontu
      begin
          Brush.Color := $00E2D032; //seçim rengi
          Font.Color := ClBlack; // yazı rengi
          Font.Size:=10; // yazı büyüklüğü
          Font.Style := font.Style + [fsBold]; // yazı kalın olsun
          FillRect(rect);
      end else if Table1.Bookmark=SatirYeri then begin //üzerinde bulunulan satır
          Brush.Color := clAqua; //seçim rengi
          Font.Color := ClBlack; // yazı rengi
          Font.Size:=10; // yazı büyüklüğü
          Font.Style := font.Style + [fsBold]; // yazı kalın olsun
          FillRect(rect);
      end;
end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: DbGridde satır boyama

Mesaj gönderen denizfatihi »

Merhaba,

Benim söyle bir sorunum var BDE nin Query sini kullanınca RecNO sürekli -1 döndüğü için renklendirme yapmıyor, IBQuery kullanınca renklendirme işlemi yapıyor sebebi nedir ?

Yardımınız ve ilginiz için şimdiden teşekkürler.

Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: DbGridde satır boyama

Mesaj gönderen sabanakman »

Sorun çıkaran Query'de Last ile son kayda konumlanmayı deneyin bir de.

Kod: Tümünü seç

Query1.Last;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: DbGridde satır boyama

Mesaj gönderen denizfatihi »

Aşağıdaki gibi birşey mi olacak?

procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Icon: TBitmap;
begin
Icon:=TBitmap.Create;
If (gdSelected in state) then // eğer seçili ise
begin
DBGrid2.Canvas.Brush.Color := clBlack; // zemin rengi
DBGrid2.Canvas.Font.Color := clWhite; // font rengi
end
else if (DBGrid2.datasource.dataset.recno mod 2) =0
then DBGrid2.Canvas.Brush.Color := clSkyBlue
else DBGrid2.Canvas.Brush.Color := clWhite;
DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Label3.Caption := (inttostr (Query2.RecNo)); //Recno Kontrol
Query2.Last;
Cevapla