dxDBGrid de şartlı satır renklendirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

dxDBGrid de şartlı satır renklendirme

Mesaj gönderen mudipasa »

S.A sayın delphici arkadaşlar. dxDBGrid de diyelimki cinsiyeti KIZ ise satırın rengi Kırmızı, yazı rengi beyaz, ERKEK ise satır Mavi, yazı rengi siyah olsun. cxGrid de falan varmış ama onda daha önce çok sorun yaşadım. uğraşmak için zamanım yok. bu yüzde dxDBGrid kullanıyorum. Teşekkür ederim.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Normal Db grid için Drawcolumncell de

Kod: Tümünü seç

begin
  if  DBGrid.DataSource.DataSet.RecordCount <> 0 THEN
      begin
        if DBGrid.Fields[0].AsInteger mod 2=1 then
           DBGrid.Canvas.Brush.Color := clactiveborder
       else DBGrid.Canvas.Brush.Color := $00CEADFC;
           DBGrid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
         end;   
    end; 
rakamın tek çift oluşuna göre tüm satırı renklendiriyorum.
Sanırım buna uygun olarak ilgili fieldı göstererek AsInteger yerine Asstring kullanarak gerekli koşulu verebilirsin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

procedure TFRM_Chart.VIW_ChartCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  t: Integer;
begin
  t := AViewInfo.GridRecord.Values[VIW_ChartTIPI.Index];
  if odd(t) then
    ACanvas.Brush.Color := ACanvas.Brush.Color + 150
  else
    ACanvas.Brush.Color := ACanvas.Brush.Color - 150;
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
zyildiz
Üye
Mesajlar: 115
Kayıt: 09 Mar 2004 01:22
Konum: Adapazarı

Mesaj gönderen zyildiz »

bir baska yöntem

formun üstüne bir adet cxStyleRepository nesnesi eklenir. cxgridin cxGrid1DBTableView1StylesGetContentStyle events ine aşagıdaki kod yazılır.

Kod: Tümünü seç

procedure TForm1.cxGrid1DBTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
var 
AColumn: TcxCustomGridTableItem; 
begin

    AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('id');
    if VarToStr(ARecord.Values[AColumn.Index]) = '1' then
    AStyle := cxStyle1;

end;
Id satırında 1 olan degerler farklı bir renk alır bu rengin ne olacagı style repositorynin üzerine çift tıklandıgında style çeşitleri gorunur istenilen renk buradan ayarlanabilir. 1 değeri değiştirilerek yeni seçenekler oluşturulabilir.
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Mesaj gönderen mudipasa »

ilginize teşekkür ederim. Ben heralde çok şey yazdığım için tam anlatamamışım. Benim sorun dxDBGrid de yapmak. dxDBGrid böyle bir özellik yok mu acaba ?
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bu kullanımda dxDBGrid ile cxGrid arasında bu kullanım şekline göre pek fark yok (her ikisi de aynı anda kurulu olmadığından kıyaslama şansım yok). Grid in değil de üzerine koyduğunuz View in OnDrawCell inde ya da View e eklediğiniz alanın OnDrawCell inde yapıyorsunuz bu işi :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla