dbgridde sadece belirli alanları renklendirmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
dbgridde sadece belirli alanları renklendirmek
Merhaba arkadaşlar.
delphi ve access kullanarak yapmış olduğum bi projem var. bu projede bazı süzme işlemleri gerçekleştirdikten sonra dbgirdde istediğim alanlar listeleniyor.
veritabanımda 0,8 lik yüzdelik dilim isimli bi alanım var. ve burada 0-100 arasında rakamlar girilmiş.
mesela ilk başta bi editten sayı giriyorum. o sayının -5 eksiği ve +5 fazlası arasındaki rakamları listeletiyorum. ama dbgirdde bu alanların arası renkli olması lazım. mesela editten girdiğim sayi 11 olsun;
11-5=6 / 11+5=16
0-6 arası mavi
6-16 arası kirmizi
16-100 arası da sarı renk olacak.
fakat ben bunu yapamadım . bu konuda yardımcı olursanız sevinirim
herkese ii çalışmalar.
delphi ve access kullanarak yapmış olduğum bi projem var. bu projede bazı süzme işlemleri gerçekleştirdikten sonra dbgirdde istediğim alanlar listeleniyor.
veritabanımda 0,8 lik yüzdelik dilim isimli bi alanım var. ve burada 0-100 arasında rakamlar girilmiş.
mesela ilk başta bi editten sayı giriyorum. o sayının -5 eksiği ve +5 fazlası arasındaki rakamları listeletiyorum. ama dbgirdde bu alanların arası renkli olması lazım. mesela editten girdiğim sayi 11 olsun;
11-5=6 / 11+5=16
0-6 arası mavi
6-16 arası kirmizi
16-100 arası da sarı renk olacak.
fakat ben bunu yapamadım . bu konuda yardımcı olursanız sevinirim
herkese ii çalışmalar.
Umarım işine yarar
gridin Dbgrid1drawcolumncell olayına;
Saygılarımla
gridin Dbgrid1drawcolumncell olayına;
Kod: Tümünü seç
if (column.fieldname='yuzdelik') then begin //datanda nasılsa
if (column.field.asinteger>0) and (column.field.asinteger<6) then dbgrid1.canvas.brush.color:=clblue;
if (column.field.asinteger>6) and (column.field.asinteger<16) then dbgrid1.canvas.brush.color:=clred;
if (column.field.asinteger>16) and (column.field.asinteger<100) then dbgrid1.canvas.brush.color:=clyellow;
dbgrid1.defaultdrawcolumncell(rect,datacol,column,state);
end;
" Her bildiğin doğru olsun. Ama her doğruyu her yerde söylemek doğru değildir. "
Merhaba ben bunu aşağıdaki gibi denedim. ama bu döngüye hiç girmiyor. f7 yle kontrol ettim. ama olmadı. başka yapma yöntemi varmı?
Kod: Tümünü seç
if (Column.FieldName='Alan') then
begin
if ((column.field.asfloat)>(0)) and ((column.field.asfloat)<(strtofloat(soz08.Text)-5)) then
dbgrid1.canvas.brush.color:=clblue;
if ((column.field.asfloat)>(strtofloat(soz08.Text)-5)) and ((column.field.asfloat)<(strtofloat(soz08.Text)+5)) then
dbgrid1.canvas.brush.color:=clred;
if ((column.field.asfloat)>(strtofloat(soz08.Text)+5)) and ((column.field.asfloat)<100) then
dbgrid1.canvas.brush.color:=clyellow;
dbgrid1.defaultdrawcolumncell(rect,datacol,column,state);
end;
Kod: Tümünü seç
procedure TForm8.grid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
durum,durum2:string;
begin
durum2:=grid1.DataSource.DataSet.fieldbyname('DURUM').AsString;
durum:=grid1.DataSource.DataSet.fieldbyname('MCEKTARIH').AsString;
if durum=datetostr(date) then
if (gdfocused in state) then
grid1.Canvas.Brush.Color:=clbtnface
else
grid1.Canvas.Brush.Color:=clred;
grid1.DefaultDrawColumnCell(rect,datacol,column,state);
if durum2='TAHSİL EDİLDİ' then
if (gdfocused in state) then
grid1.Canvas.Brush.Color:=clbtnface
else
grid1.Canvas.Brush.Color:=clgreen;
grid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
kodda sadece alanı kontrol ediyorsunuz ondan kaynaklanıyor olabilir..ama verdiğim koda göre uyarlayın yani tüm satırı bir alana göre kontrol edip renklendirebilirsiniz.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Merhaba hatırlattığınız çok ii oldu. ben unutmuşum yazmayı
. hatırlattığınız için teşekkür ederim.
>benim alan adı altında nümerikyüzdelik değerlerim var. ekrandan girilen değerlere göre grid alanları boyancak.
>ypuantürü de boyanmasını istediğim alanlar. ypuantürü="söz" olduğu durumlarda alanlar boyancak.
herkese tekrardan ii çalışmalar.

>benim alan adı altında nümerikyüzdelik değerlerim var. ekrandan girilen değerlere göre grid alanları boyancak.
>ypuantürü de boyanmasını istediğim alanlar. ypuantürü="söz" olduğu durumlarda alanlar boyancak.
Kod: Tümünü seç
var
durum2:double;
durum:string;
begin
durum2:=dbgrid1.DataSource.DataSet.fieldbyname('Alan').Asfloat;
durum:=dbgrid1.DataSource.DataSet.fieldbyname('ypuanturu').AsString;
if durum='söz' then
begin
if ((durum2)>(0)) and ((durum2)<(strtofloat(soz08.Text)-1)) then
if (gdfocused in state) then
dbgrid1.Canvas.Brush.Color:=clbtnface
else
dbgrid1.Canvas.Brush.Color:=$00FFFDFF;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
if ((durum2)>(strtofloat(soz08.Text)-1)) and ((durum2)<(strtofloat(soz08.Text)+1)) then
if (gdfocused in state) then
dbgrid1.Canvas.Brush.Color:=clbtnface
else
dbgrid1.Canvas.Brush.Color:=$00FDFBFF;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
if ((durum2)>(strtofloat(soz08.Text)+1)) and ((durum2)<(100)) then
if (gdfocused in state) then
dbgrid1.Canvas.Brush.Color:=clbtnface
else
dbgrid1.Canvas.Brush.Color:=$00F5ECFF;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;