try
if VarToStr(AViewInfo.GridRecord.Values[5]) = 'True' then //Kontrol edeceğin kolonun 6. kolon olduğunu varsaydım.
ACanvas.Brush.Color := clYellow
else
ACanvas.Brush.Color := clGray;
except
// Ne olur ne olmaz.
end;
merhaba arkadaşlar bende benzer bi soru soracağım için yeni başlık açmaya gerek duymadım.
yapmak istediğim şu: cxgridde doğru cvpları ve bizim seçimlerimizi listeletiyorum. eğer seçimimiz doğru ise seçim alanının textcolourunu yeşil, yanlış ise kırmızı renkle yazmasını istiyorum..aşağıda verdiğim kodla tüm satırın fontu renkleniyor:
OnCustomDrawCell olayına:
try
if AViewInfo.Item.Index = 2 then
if VarToStr(AViewInfo.GridRecord.Values[2]) = VarToStr(AViewInfo.GridRecord.Values[1]) then
ACanvas.Font.Color := clgreen
else
ACanvas.Font.Color := clred;
except
end;
Cell için : Önce cxStyleRepository ile bir style oluşturuyorsun. Renk ve fontunu ayarlıyorsun. Daha sonra aşağıdaki kodu OnGetContentStyle olayına yazıyorsun :
var
AColumn: TcxCustomGridTableItem;
begin
AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('Email');
if VarToStr(ARecord.Values[AColumn.Index]) = '' then
AStyle := cxStyleNullEmail;
Kolay gelsin.
Mustafa Hocam mesaj çok eski ama cxgrid kullanmaya yeni başlayan biri olarak hemen çalıştırdım. Allah razı olsun kolay ve basit bir örnekle açıklamışsınız. Arayınca hemen buldum
Neyse arkadaşlar kendi problemi çözdüm onun için buraya yazmayı düşünüyorum.
//footer alanındaki evet olayının ongettext alanına alıyoruz
procedure TForm1.cxGrid1DBTableView1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems0GetText(
Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean;
var AText: string);
Var
SaymaSayisi : Double; //birer birer toplaması için değer tanımladık
Satir : integer; //satir alanındaki değeri baz almak için deger tanımladık
I : integer; // for döngüsünde kullanacağız
begin
Satir := cxGrid1DBTableView1.GetColumnByFieldName('Test').Index; //hangi satırı baz alacaksan o satırı alanını giriyoruz
SaymaSayisi := 0; //değer sıfır verdik birer birer artacak
for I := 0 to cxGrid1DBTableView1.DataController.DataSetRecordCount -1 do // for döngüsü en baş satırdan en son alana kadar gidecek
if (cxGrid1DBTableView1.DataController.Values[I, Satir]) = '8' then //alanda 8 olanlar varsa onları görecek
SaymaSayisi := SaymaSayisi + 1; //ve bunları birer birer toplayacak
AText := 'Çok iyi= ' + FormatFloat('',SaymaSayisi); // en son alanda bunları yazdıracak
procedure TFrm_Per_Ana.cxGrid1DBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if AViewInfo.GridRecord.Values[28]='Kadın' then
begin
ACanvas.Brush.Color:=$00D7D0FB;
end
else
if AViewInfo.GridRecord.Values[28]='Erkek' then
begin
ACanvas.Brush.Color:=$00FAEFAF;
end
else
end;
buradaki if AViewInfo.GridRecord.Values[28]='Erkek' then satırında bulunan 28 senin durumuna göre kontrol yaptıracağın alanın sırası ama ilk alan sıfırolarak başlar 0,1,2,3,4....28 cinsiyet aslında birden başlasa 27 olur ama sıfırdan başlar