dxDBGrid de şartlı satır renklendirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
dxDBGrid de şartlı satır renklendirme
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.
Normal Db grid için Drawcolumncell de
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.
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;
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..



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!!
bir baska yöntem
formun üstüne bir adet cxStyleRepository nesnesi eklenir. cxgridin cxGrid1DBTableView1StylesGetContentStyle events ine aşagıdaki kod yazılır.
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.
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;
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 

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!