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: 105
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

cxGrid satır renklendirme (koşulsuz)

Mesaj gönderen sunye »

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.
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

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

Mesaj gönderen ihalilcoban »

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: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

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

Mesaj gönderen mussimsek »

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: 105
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

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

Mesaj gönderen sunye »

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