(19-10-2022, Saat: 10:46)cinarbil Adlı Kullanıcıdan Alıntı: (19-10-2022, Saat: 09:45)erdemtaner Adlı Kullanıcıdan Alıntı: Sevgili Delphi Dostlarım;
Dbgrid renklendirme ile ilgili bir sorunum var.Bilen arkadaşlarımdan bilgi istemekteyim.
2 tane query var programımda birisi emirler biri durumlar
Emirler tablosunda
durum alanı integer
Durumlar tablosunda
id alanı integer (auto)
renk varchar
Şimdi sorum şu arkadaşlarım emirler tablosunu dbgride aktardım.Emirler tablosundaki durum = 17 olan alanı durumlar tablosundan id alanından bulup renk(varchar) rengi çağırması gerekiyor.
emirler tablosu durum = 17 ise durumlar tablosundaki id = 17 deki rengi vermesi gerekiyor satıra ama bir türlü verdiremedim.Bir tane alanı renklendiriyor.Dbgridin Drawcell ine yazıyorum kodları.Teşekkürler...
İyi günler yanlış anlamadı isen iki ayrı tablonuz ve bir dbgrid var
dbgrid ondrawcell olayına kodu yazdınız sadece tek satır renkleniyor
emirler tablosundaki durumu sadece bir kez alıyor kontrol ediyor ve sadece bir satır etkileniyor.
dbgridi dolduran sql sorgusuna left join ile emirler tablosundaki durum alanını ekleyin
sonra sizin yaptığınız gibi ondrawcell olayında left join ile eklediğimiz durumu kontrol edersiniz satırı renklendirirsiniz.
İlginiz için diğer arkadaşla birlikte size de teşekkür ederim.
procedure Tis_emirler.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Dbgrid1.DataSource.dataset.fieldbyname('durum').value = renk_datasource.DataSet.FieldByName('id').Value then
begin
Dbgrid1.Canvas.Brush.Color :=stringtocolor(renk_datasource.DataSet.FieldByName('renk').AsString);
end;
DbGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Yukarıdaki kodu gridin drawcolumcell ine yazdım.
SELECT *
FROM emirler
LEFT JOIN durumlar
ON emirler.durum=durumlar.id
Buda emirler query.Ama hala tek satır renklendiriyor.Teşekkürler...
(19-10-2022, Saat: 11:29)erdemtaner Adlı Kullanıcıdan Alıntı: (19-10-2022, Saat: 10:46)cinarbil Adlı Kullanıcıdan Alıntı: İyi günler yanlış anlamadı isen iki ayrı tablonuz ve bir dbgrid var
dbgrid ondrawcell olayına kodu yazdınız sadece tek satır renkleniyor
emirler tablosundaki durumu sadece bir kez alıyor kontrol ediyor ve sadece bir satır etkileniyor.
dbgridi dolduran sql sorgusuna left join ile emirler tablosundaki durum alanını ekleyin
sonra sizin yaptığınız gibi ondrawcell olayında left join ile eklediğimiz durumu kontrol edersiniz satırı renklendirirsiniz.
İlginiz için diğer arkadaşla birlikte size de teşekkür ederim.
procedure Tis_emirler.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Dbgrid1.DataSource.dataset.fieldbyname('durum').value = renk_datasource.DataSet.FieldByName('id').Value then
begin
Dbgrid1.Canvas.Brush.Color :=stringtocolor(renk_datasource.DataSet.FieldByName('renk').AsString);
end;
DbGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Yukarıdaki kodu gridin drawcolumcell ine yazdım.
SELECT *
FROM emirler
LEFT JOIN durumlar
ON emirler.durum=durumlar.id
Buda emirler query.Ama hala tek satır renklendiriyor.Teşekkürler...
Sevgili kardeşim şimdi yapabildim teşekkür ederim tarif ettiğin şekli ile oldu
Bu Kod :
procedure Tis_emirler.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Dbgrid1.DataSource.dataset.fieldbyname('durum').value = Dbgrid1.DataSource.dataset.fieldbyname('id_1').value then
begin
Dbgrid1.Canvas.Brush.Color :=stringtocolor(Dbgrid1.DataSource.dataset.fieldbyname('renk').value);
end;
DbGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;