Renklendirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Renklendirme
https://www.dropbox.com/s/9acel0l6x54hpof/1.jpg
şekildeki gibi bir dbgrid nesnem var otomasyonumda müşterime kiralama yaparken kira tarihi ve teslim tarihini date nesnesi ile alıp kirada tablomdaki date özellikli alana gönderip kaydoluyor resimdeki grid kirada tablomu yansıtıyor.
gridteki kiralı filmlerin bulunduğu tüm satırlarda güncel tarihi kontrol edip
teslim tarihini geçmemişse tüm satırın yeşil
teslim tarhini geçmişse kırmızı renk olmasını istiyorum
DBGrid1.Canvas.Brush.Color := clRed kodu ile yapmaya çalıştım ama sanırım if leri yanlış yazdım..
yardımlar için teşekkürler..
şekildeki gibi bir dbgrid nesnem var otomasyonumda müşterime kiralama yaparken kira tarihi ve teslim tarihini date nesnesi ile alıp kirada tablomdaki date özellikli alana gönderip kaydoluyor resimdeki grid kirada tablomu yansıtıyor.
gridteki kiralı filmlerin bulunduğu tüm satırlarda güncel tarihi kontrol edip
teslim tarihini geçmemişse tüm satırın yeşil
teslim tarhini geçmişse kırmızı renk olmasını istiyorum
DBGrid1.Canvas.Brush.Color := clRed kodu ile yapmaya çalıştım ama sanırım if leri yanlış yazdım..
yardımlar için teşekkürler..
Re: Renklendirme
selam altta iki örnek var gerisini sen sanırım çöze bilirsin
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
if DataSet1.FieldByName('tarih').AsString= '09.04.2012' then
begin
grid.Canvas.Brush.Color := clSilver
end;
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency>36000 then
DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
if DataSet1.FieldByName('tarih').AsString= '09.04.2012' then
begin
grid.Canvas.Brush.Color := clSilver
end;
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency>36000 then
DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: Renklendirme
DBGrid'in DefaultDrawing özelliğini False yapıp dener misin?
Re: Renklendirme
Teşekkür Ederim xxxjedixxx yazdığınız 2 kod işe yaradı
Re: Renklendirme
Programıma güncel tarihi bir değişkene atamak istiyorum bilgisayarın o günkü tarihide olabilir bunun bir yolu varmı acaba ??
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: Renklendirme
Kod: Tümünü seç
//Sadece Tarih için
var Tarih: TDate;
Tarih := Now; // O anki Tarih, örn: 29.04.2014
Tarih := EncodeDate(2014, 4, 29); // Manuel oluşturma
//Tarih ve Saat için
var Tarih: TDateTime;
Tarih := Now; // O anki Tarih ve Saat, örn: 29.04.2014 21:20:30
Tarih := EncodeDateTime(2014, 4, 29, 21, 20, 30, 00); // Manuel oluşturma
Re: Renklendirme
Tekrar Teşekkür Ederim Yardımınız İçin..
Re: Renklendirme
Kodlarımda Bir Hata Var Anlamadığım
tarih:TDate; //Global Değişken Oluşturdum
tarih := Now; //FormCrate te güncel bilgisayar tarihini aldım (29.04.2014)
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (tarih) > Table1.FieldByName('Teslim_Tarih').AsDateTime then
DBGrid1.Canvas.Brush.Color:=clRed
else if (tarih) = Table1.FieldByName('Teslim_Tarih').AsDateTime then
DBGrid1.Canvas.Brush.Color:=clYellow
else
DBGrid1.Canvas.Brush.Color:=clGreen;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
tablomda heryer kırmız tarih küçük-büyük eşit farketmiyor https://www.dropbox.com/s/9acel0l6x54hpof/1.jpg
tarih:TDate; //Global Değişken Oluşturdum
tarih := Now; //FormCrate te güncel bilgisayar tarihini aldım (29.04.2014)
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (tarih) > Table1.FieldByName('Teslim_Tarih').AsDateTime then
DBGrid1.Canvas.Brush.Color:=clRed
else if (tarih) = Table1.FieldByName('Teslim_Tarih').AsDateTime then
DBGrid1.Canvas.Brush.Color:=clYellow
else
DBGrid1.Canvas.Brush.Color:=clGreen;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
tablomda heryer kırmız tarih küçük-büyük eşit farketmiyor https://www.dropbox.com/s/9acel0l6x54hpof/1.jpg
Re: Renklendirme
Birincisi now ile aldığın bugunun tarihini showmessage(datetostr (tarih)) diyerek gör ki tarih senin istediğin formatta geliyormu. Farklı bir formatta geliyor ve bu yüzden karşılaştırman doğru çalışmıyor olabilir.
ikinci dikkatimi çeken
if (tarih) > Table1.FieldByName('Teslim_Tarih').AsDateTime then
DBGrid1.Canvas.Brush.Color:=clRed
bu kod satırında diyorsun ki tarih değişkeni teslim tarih alanındaki tarih ve saatten büyükse kırmızı yap. Dün kaydedilmiş bir bilgi, haliyle bu karşılaştırmaya göre bu günün tarihinden küçük olduğu için hepsi kırmızı oluyor olabilir. Veritabanındaki kayıtlı tarihleri kontrol et ve bugunun tarihinden daha büyük bir tarih kaydı gir ve sonucu gözle.
Sanırım şurasıda AsDateTime yerine asDate olmalı. Çünkü hem tarihi hem zamanı alıyorsun o şekilde.
Şuan bulunduğum bilgisyarda Delphi kurulu olmadığı için deniyemiyorum. Fakat şöyle bir denermisin
if Table1Teslim_Tarih.AsDate < tarih then
DBGrid1.Canvas.Brush.Color:=clRed;
else if Table1Teslim_Tarih.AsDate=tarih then
DBGrid1.Canvas.Brush.Color:=clYellow;
ikinci dikkatimi çeken
if (tarih) > Table1.FieldByName('Teslim_Tarih').AsDateTime then
DBGrid1.Canvas.Brush.Color:=clRed
bu kod satırında diyorsun ki tarih değişkeni teslim tarih alanındaki tarih ve saatten büyükse kırmızı yap. Dün kaydedilmiş bir bilgi, haliyle bu karşılaştırmaya göre bu günün tarihinden küçük olduğu için hepsi kırmızı oluyor olabilir. Veritabanındaki kayıtlı tarihleri kontrol et ve bugunun tarihinden daha büyük bir tarih kaydı gir ve sonucu gözle.
Sanırım şurasıda AsDateTime yerine asDate olmalı. Çünkü hem tarihi hem zamanı alıyorsun o şekilde.
Şuan bulunduğum bilgisyarda Delphi kurulu olmadığı için deniyemiyorum. Fakat şöyle bir denermisin
if Table1Teslim_Tarih.AsDate < tarih then
DBGrid1.Canvas.Brush.Color:=clRed;
else if Table1Teslim_Tarih.AsDate=tarih then
DBGrid1.Canvas.Brush.Color:=clYellow;
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: Renklendirme
Eğer karşılaştırma yaparken saatleri dikkate almayacaksan, Now yerine Date kullan.
Tarih := Date; // saatsiz tarih için
veya
Tarih := Trunc(Now); // saatli tarihten saati temizlemek için
Bir de tablodaki tarih değeri datetime tipindeyse ve saati dikkate almak istemiyorsan saati temizle.
if Tarih = Trunc(Table1.FieldByName('Teslim_Tarih').AsDateTime) then
DBGrid1.Canvas.Brush.Color := clRed
else ....
Tarih := Date; // saatsiz tarih için
veya
Tarih := Trunc(Now); // saatli tarihten saati temizlemek için
Bir de tablodaki tarih değeri datetime tipindeyse ve saati dikkate almak istemiyorsan saati temizle.
if Tarih = Trunc(Table1.FieldByName('Teslim_Tarih').AsDateTime) then
DBGrid1.Canvas.Brush.Color := clRed
else ....
Re: Renklendirme
"if TDate(Tarih) = TDate(Table1.FieldByName('Teslim_Tarih').AsDateTime)" TDate ile cast edebilirsiniz.
baze şu şekildede kullanılabilinir, Date + stringtotime('11:11:11'); tarih bilgisine istediğiniz zamanı ekleyebilirsiniz
Kolay gele
baze şu şekildede kullanılabilinir, Date + stringtotime('11:11:11'); tarih bilgisine istediğiniz zamanı ekleyebilirsiniz
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: Renklendirme
Tüm Yardımlar İçin Teşekkür Ederim Problemi son yorumdaki kod ile çözdüm..
Re: Renklendirme
Arkadaşlar bende bir soru sormak istiyorum konu renk olarak açılmışken. Bende DBGrid1 üzerinde dolaşan barı options dan RowSelect true yaptım rengini maviden başka bir renk olarak bir türlü değiştiremedim yardımcı olabilir misiniz?
- muratmutlu
- Üye
- Mesajlar: 57
- Kayıt: 02 Tem 2005 02:44
- Konum: Antalya
Re: Renklendirme
DBGrid'in DefaultDrawing özelliğini False yapıp aşağıdaki kodu dener misin ?
Kod: Tümünü seç
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdSelected in state then
begin
DBGrid1.Canvas.Font.Color := clYellow;
DBGrid1.Canvas.Brush.Color := clRed;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;