Dbgrid Satır rengini satır satır değiştirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Dbgrid Satır rengini satır satır değiştirme

Mesaj gönderen conari »

ilk cümle ile seçilmiş alanın rengini değiştiriyorum.
İkinci kod ile de satırların rengini değiştirmeye çalışıyorum.
ama recno her satır da 2=2 oluyor sanki tüm satırlar çift değer miş gibi ve bütün satırlarım kırmızı oluyor.

Aslında satırdaki alanın değeri değiştiğinde bu işlemi yapmam lazım.

Nedeni ni çözemedim.Teşekkürler

Kod: Tümünü seç

 procedure TSform.osDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If (gdSelected in state)
  then osDBGrid.Canvas.Brush.Color := clred
  else osDBGrid.Canvas.Brush.Color := clwhite;
end;
      begin
      if (osDBGrid.datasource.dataset.recno mod 2) =0
      then osDBGrid.Canvas.Brush.Color := clGreen
      else osDBGrid.Canvas.Brush.Color := clRed;
      osDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    end;
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

Acemiliğinden kaynaklanabilir ama siz birinci koddan sonra end ile kapatmışsınız ardından ikinci kod için begin diyerek blok açmışsınız. buradan kaynaklanıyor olabilir mi?.

end; ile kapatmadan ziyade end else begin ile bir deneseniz.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

@bobasturk hocamın dediği gibi bloklamada hatalar olmuş. Şu şekilde değiştirirsen çalışacak;

Kod: Tümünü seç

procedure TForm1.osDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  If (gdSelected in state) then
    osDBGrid.Canvas.Brush.Color := clred
  else
  begin
    osDBGrid.Canvas.Brush.Color := clWhite;
    if (osDBGrid.datasource.dataset.recno) mod 2 = 0 then
      osDBGrid.Canvas.Brush.Color := clGreen
    else
      osDBGrid.Canvas.Brush.Color := clRed;
    osDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

rşimşek hocam
sizin düzelttiğiniz kodu aynen koydum ama yine aynı hepsi kırmızı oluyor :roll: :idea: :oops:
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
begin end problemi devam ediyor sanırım.

Kod: Tümünü seç

osDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
satırını en son endden önce yaz.
kolay gelisn.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bende bu şekliyle de çalıştı fakat doğrusu @aslangeri nin dediği gibi olmalı;

Kod: Tümünü seç

procedure TForm1.osDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  If (gdSelected in state) then
    osDBGrid.Canvas.Brush.Color := clred
  else
  begin
    osDBGrid.Canvas.Brush.Color := clWhite;
    if (osDBGrid.datasource.dataset.recno) mod 2 = 0 then
      osDBGrid.Canvas.Brush.Color := clGreen
    else
      osDBGrid.Canvas.Brush.Color := clRed;
  end;
  osDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Dbgrid Satır rengini satır satır değiştirme

Mesaj gönderen sabanakman »

conari yazdı:ilk cümle ile seçilmiş alanın rengini değiştiriyorum.
İkinci kod ile de satırların rengini değiştirmeye çalışıyorum.
ama recno her satır da 2=2 oluyor sanki tüm satırlar çift değer miş gibi ve bütün satırlarım kırmızı oluyor.

Aslında satırdaki alanın değeri değiştiğinde bu işlemi yapmam lazım.

Nedeni ni çözemedim.Teşekkürler

Kod: Tümünü seç

procedure TSform.osDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If (gdSelected in state)
  then osDBGrid.Canvas.Brush.Color := clred
  else osDBGrid.Canvas.Brush.Color := clwhite;
end;
      begin
      if (osDBGrid.datasource.dataset.recno mod 2) =0
      then osDBGrid.Canvas.Brush.Color := clGreen
      else osDBGrid.Canvas.Brush.Color := clRed;
      osDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    end;
yerine

Kod: Tümünü seç

if (TStringGrid(osDBGrid).Row mod 2) =0
then osDBGrid.Canvas.Brush.Color := clGreen
else osDBGrid.Canvas.Brush.Color := clRed;
kullan. Bu kodlar görüntüde saçma gelecektir ama çalışmayı test ettikten sonra göreceklerin seni şaşırtmasın.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Kod: Tümünü seç

procedure TSform.osDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin
 if (TStringGrid(osDBGrid).Row mod 2) =0
then osDBGrid.Canvas.Brush.Color := clGreen
else osDBGrid.Canvas.Brush.Color := clRed;
end;
Şaban hoca senin dediğin kodu denedim hatta seçilen alan rengini de boş vereyim dedim. ama olmadı.
rşimşek hocam sizin en son düzenlediğiniz kodu çalıştırdım yine hep kırmızı.

acaba benim gridde mi bir problem var?
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

kodu yeni bir App de denedim çalışıyor benim dbgridde ne problem olmuş olabilir bunu engelleyecek.
Cevapla