cxGrid satır renklendirme (koşulsuz)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sunye
Üye
Mesajlar: 87
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

cxGrid satır renklendirme (koşulsuz)

Mesaj gönderen sunye » 21 Kas 2017 02:47

Merhaba,

cxGrid ile gösterdiğim bilgilerin her satırda farklı renkte olmasını istiyorum. Ancak bununla ilgili bir çözüm bulamadım.
Forumda ve internetteki örneklerde hep field değerine göre renk değiştiriyor. Benim istediğim 1. satır sarı, 2. satır kırmızı renk olarak sürekli devam edecek.

Kod: Tümünü seç

procedure TFSiparisListesi.EDTSiparisViewCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  if TBLSiparis.RecNo Mod 2 = 0 then
    ACanvas.Brush.Color := clRed
  else
    ACanvas.Brush.Color := clYellow;
end;
kodu ile yaptığımda son satırın rengi ne ise tüm grid aynı renk oluyor.
Bildiğim tek şey, hiç bir şey bilmediğim.

Kullanıcı avatarı
ihalilcoban
Üye
Mesajlar: 76
Kayıt: 10 Ara 2015 10:39

Re: cxGrid satır renklendirme (koşulsuz)

Mesaj gönderen ihalilcoban » 21 Kas 2017 08:14

Ben bu şekilde kullanıyorum. Aktif satırın rengi mavi olur diğer satırlar da ona göre renklenir. Umarım işine yarar.

Kod: Tümünü seç

type
  TCustomDBGridCracker = class(TCustomDBGrid);


procedure TCari_Islemler_Pen.JvDBUltimGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin

If gdSelected in State Then Exit;
  If JvDBUltimGrid1.DataSource.DataSet.RecNo mod 2 = 0 Then
     JvDBUltimGrid1.Canvas.Brush.Color := clRed
  Else
     JvDBUltimGrid1.Canvas.Brush.Color := clYellow;
  with TCustomDBGridCracker(JvDBUltimGrid1) Do
  If DataLink.ActiveRecord = Row-1 Then
     Canvas.Brush.Color := ClSkyBlue;
     JvDBUltimGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
  
  
  

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7440
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Re: cxGrid satır renklendirme (koşulsuz)

Mesaj gönderen mussimsek » 21 Kas 2017 08:58

Styles kısmında ContentEven ve ContentOdd özellikleri var. Sadece birine veya her ikisine atama yaparak istediğinizi elde edebilirsiniz.

Kolay gelsin.

Kullanıcı avatarı
sunye
Üye
Mesajlar: 87
Kayıt: 24 Ağu 2004 03:49
Konum: izmir

Re: cxGrid satır renklendirme (koşulsuz)

Mesaj gönderen sunye » 22 Kas 2017 09:55

Merhaba,

Mustafa Şimşek'in dediği gibi yaparak çözdüm,

Kod: Tümünü seç

Uses cxVariants; // Eklenmesi gerekiyor

procedure TFSiparisListesi.EDTDetayViewStylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; var AStyle: TcxStyle);
var
  I, J: Integer;
  V1, V2: Variant;
begin
  J := 0;
  for I := 0 to ARecord.Index-1 do
  begin
    V1 := TcxGridTableView(Sender).ViewData.Rows[I].Values[EDTSiparisViewSiparisNo.Index];
    V2 := TcxGridTableView(Sender).ViewData.Rows[I + 1].Values[EDTSiparisViewSiparisNo.Index];
    if not VarEqualsExact(V1, V2) then
       Inc(J);
  end;
  if J mod 2 = 0 then
    AStyle := FMain.CXSari
  else
    AStyle := FMain.CXBeyaz;
end;
Bildiğim tek şey, hiç bir şey bilmediğim.

Cevapla