cxgrid satır renklendirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ozlemsaltan
Üye
Mesajlar: 38
Kayıt: 01 Nis 2014 05:57

cxgrid satır renklendirme

Mesaj gönderen ozlemsaltan »

Arkadaşlar kolay gelsin,
Cxgridim de koşula bağlı olarak sütunlarım doluyor. örneğin a sütunun da isimler var. Ayşe,Fatma,Ahmet,Veli,Mehmet gibi. Şimdi benim yapmak istediğim şu:
Sütun A
Ayşe,Fatma,Mehmet
Ayşe,Veli,Ahmet
Ahmet,Ayşe
Veli,Fatma,Ahmet
..
..
..
şeklinde düşünelim. Bu sütunda ki İçerisin de Ayşe geçen tüm satırların sarı renge boyanmasını istiyorum.
Nasıl yapabilirim yardımcı olursanız çok sevinirim.
Çaylak yazılımcı:)
mehmetantalya
Üye
Mesajlar: 189
Kayıt: 30 Eyl 2013 10:17

Re: cxgrid satır renklendirme

Mesaj gönderen mehmetantalya »

Gridin CustomDrawCell olayinda asagidaki gibi bir kodla kosullu renklenlendirme yapabilirsiniz diye dusunuyorum. (not: test etmedim sadece fikir versin diye yazdim.)

Kod: Tümünü seç

with tabloadi,(Sender as TcxCustomGridTableView) do
  begin
   if pos('Ayse',tabloadi.fieldByName('alanadi').asString)) > 0 then
      begin
        ACanvas.Brush.Color:= clred;
        ACanvas.Font.Color:= clBlack;
      end;
end;
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: cxgrid satır renklendirme

Mesaj gönderen esistem »

Selam,
aşağıdaki linkteki @emin_as arkadaşın verdiği örnekteki integer koşulu @mehmetantalya arkadaşımızın verdiği "pos" ile uygularsanız işinizi çözecektir.

http://delphiturkiye.com/forum/viewtopi ... me#p143179
Kullanıcı avatarı
ozlemsaltan
Üye
Mesajlar: 38
Kayıt: 01 Nis 2014 05:57

Re: cxgrid satır renklendirme

Mesaj gönderen ozlemsaltan »

TFRM_MusteriAra.DBG_MusteriAraDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin

if pos('AYŞE',ZQ_MusteriAra.fieldByName('calisanlar2').asString) > 0 then
begin
ACanvas.Font.Color := clBlack;
ACanvas.Font.Style := [fsBold];
ACanvas.Brush.Color := clRed;
end;

hepsi kırmızı oldu..
Çaylak yazılımcı:)
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: cxgrid satır renklendirme

Mesaj gönderen esistem »

begin ve end var ama else nerede ?durum buysa kırmızı yap değilse eski rengine döndür mesela (ACanvas.Brush.Color := clWhite;) demeniz gerekli.
Kullanıcı avatarı
ozlemsaltan
Üye
Mesajlar: 38
Kayıt: 01 Nis 2014 05:57

Re: cxgrid satır renklendirme

Mesaj gönderen ozlemsaltan »

herkese teşekkürler sorun şu şekilde çözülmüştür.

if pos('ayşe',AViewInfo.GridRecord.Values[12]) >0 then
begin
ACanvas.Font.Color := clBlack;
ACanvas.Font.Style := [fsBold];
ACanvas.Brush.Color := $004080FF
end;
Çaylak yazılımcı:)
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: cxgrid satır renklendirme

Mesaj gönderen ertank »

Merhaba,

Eğer kullanıcı database içine 'Ayşe', 'AYŞE', 'ayşe' gibi 3 farklı kayıt girer ise sizin kod ile sadece 'ayşe' olan kırmızı olacaktır. Büyük/küçük harf önemli ise sorun yok. Ancak sizin için 'aYşE' ile 'ayşe' aynı şey ise database değerini büyük veya küçük hale çevirerek kontrol etmeniz gerekecektir.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: cxgrid satır renklendirme

Mesaj gönderen csunguray »

Bir veri alanının (field, sütun) içeriğine göre bir veri satırını renklendirmenin resmi yolu View'ın GetContentStyle olayını kullanmaktır. Öncelikle forma bir adet TcxStyleRepository bileşeni sürükleyin. Bu bileşeni çift tıklayıp kullanmak istediğiniz style (renk grubu, görüntü şekli) leri oluşturun. Sonra GetContentStyle içerisinde field değerine göre bu style lerden birini seçin. Aşağıda kendi kullandığım koddan bir örnek yer almaktadır.

Kod: Tümünü seç

procedure TFormStokFisCustG.DBGridDBTableViewStylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; var AStyle: TcxStyle);
var
  AColumn: TcxCustomGridTableItem;
begin
  inherited;
  AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('FIS_DURUM');
  case StrToIntDef(VarToStr(ARecord.Values[AColumn.Index]),0) of
    1: AStyle := cxStyleTaslak;
    2: AStyle := cxStyleTekrarIncele;
    3: AStyle := cxStyleOnayda;
    4: AStyle := cxStyleOnayli;
    5: AStyle := cxStyleOlumlu;
    6: AStyle := cxStyleOlumsuz;
    7: AStyle := cxStyleRevize;
    8: AStyle := cxStyleIptal;
  end;
end;

C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla