şeklinde local değişken olarak tanımladınız ve bir değer atamadığınız için
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
karşılaştırmanızda hep else ye düşüyor. Ortalık ondan sarı olmuştur
Not: En altta atadığınız onceki değeri, bir sonraki çalışmada (sonraki kayıt işlenirken) kaybolacaktır. onceki değişkeninizi global yapıp deneyebilirsiniz.
(26-04-2022, Saat: 13:11)OZCANK Adlı Kullanıcıdan Alıntı:
(26-04-2022, Saat: 11:55)cinarbil Adlı Kullanıcıdan Alıntı: [quote pid='49245' dateline='1650959599']
Aynı FISNO aynı olanlar bir renk olsun tek olanlar beyaz nasıl yapabilirim?
Kabaca yaptım kalanını kendiniz düzenleye bilirsiniz
ince ayarları
uses data_prg;
procedure TForm1.FormCreate(Sender: TObject);
begin
data_form.siparis_oku('select * from siparis',false);
test_grid.DataSource := data_form.siparis_kaynak;
test_grid.Columns[0].Field := data_form.siparis_sorgu.FieldByName('S_IMALAT_NO');
test_grid.Columns[1].Field := data_form.siparis_sorgu.FieldByName('S_BAYI_ADI');
test_grid.Columns[2].Field := data_form.siparis_sorgu.FieldByName('S_Grup_kod');
end;
procedure TForm1.test_gridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (data_form.siparis_sorgu.RecNo > 0) and (data_form.siparis_sorgu.FieldByName('S_Grup_kod').Text = onceki) then begin
test_grid.Canvas.Brush.Color:=Clred;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
test_grid.Canvas.Brush.Color:=Clyellow;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= data_form.siparis_sorgu.FieldByName('S_Grup_kod').Text
end;
Teşekkür ederim kod için. Bende düzenledim kullandım ama hepsi sarı oldu
procedure TForm29.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
onceki:String;
begin
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
DBGrid3.Canvas.Brush.Color:=Clred;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
DBGrid3.Canvas.Brush.Color:=Clyellow;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= StokKontrol.FieldByName('FISNO').Text
end;
[/quote]
bilgisayar yok önünde denemeden yazıyorum
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
satırını yanlış düzenlemişim öncelikle
if StokKontrol.FieldByName('FISNO').Text = onceki then begin
Olarak değiştirerek dener misin.
(26-04-2022, Saat: 13:44)cinarbil Adlı Kullanıcıdan Alıntı:
(26-04-2022, Saat: 13:11)OZCANK Adlı Kullanıcıdan Alıntı: Kabaca yaptım kalanını kendiniz düzenleye bilirsiniz
ince ayarları
uses data_prg;
procedure TForm1.FormCreate(Sender: TObject);
begin
data_form.siparis_oku('select * from siparis',false);
test_grid.DataSource := data_form.siparis_kaynak;
test_grid.Columns[0].Field := data_form.siparis_sorgu.FieldByName('S_IMALAT_NO');
test_grid.Columns[1].Field := data_form.siparis_sorgu.FieldByName('S_BAYI_ADI');
test_grid.Columns[2].Field := data_form.siparis_sorgu.FieldByName('S_Grup_kod');
end;
procedure TForm1.test_gridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (data_form.siparis_sorgu.RecNo > 0) and (data_form.siparis_sorgu.FieldByName('S_Grup_kod').Text = onceki) then begin
test_grid.Canvas.Brush.Color:=Clred;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
test_grid.Canvas.Brush.Color:=Clyellow;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= data_form.siparis_sorgu.FieldByName('S_Grup_kod').Text
end;
Teşekkür ederim kod için. Bende düzenledim kullandım ama hepsi sarı oldu
procedure TForm29.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
onceki:String;
begin
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
DBGrid3.Canvas.Brush.Color:=Clred;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
DBGrid3.Canvas.Brush.Color:=Clyellow;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= StokKontrol.FieldByName('FISNO').Text
end;
bilgisayar yok önünde denemeden yazıyorum
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
satırını yanlış düzenlemişim öncelikle
if StokKontrol.FieldByName('FISNO').Text = onceki then begin
Olarak değiştirerek dener misin.
[/quote]
kusura bakmayın @frmman mesajı yeni gördüm
doğru söylüyor onceki adlı tanımlama procedure işin de olmayacak oradan silin formun public kısmına tanımlayın
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
(26-04-2022, Saat: 13:44)cinarbil Adlı Kullanıcıdan Alıntı:
(26-04-2022, Saat: 13:11)OZCANK Adlı Kullanıcıdan Alıntı: Kabaca yaptım kalanını kendiniz düzenleye bilirsiniz
ince ayarları
uses data_prg;
procedure TForm1.FormCreate(Sender: TObject);
begin
data_form.siparis_oku('select * from siparis',false);
test_grid.DataSource := data_form.siparis_kaynak;
test_grid.Columns[0].Field := data_form.siparis_sorgu.FieldByName('S_IMALAT_NO');
test_grid.Columns[1].Field := data_form.siparis_sorgu.FieldByName('S_BAYI_ADI');
test_grid.Columns[2].Field := data_form.siparis_sorgu.FieldByName('S_Grup_kod');
end;
procedure TForm1.test_gridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (data_form.siparis_sorgu.RecNo > 0) and (data_form.siparis_sorgu.FieldByName('S_Grup_kod').Text = onceki) then begin
test_grid.Canvas.Brush.Color:=Clred;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
test_grid.Canvas.Brush.Color:=Clyellow;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
test_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= data_form.siparis_sorgu.FieldByName('S_Grup_kod').Text
end;
Teşekkür ederim kod için. Bende düzenledim kullandım ama hepsi sarı oldu
procedure TForm29.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
onceki:String;
begin
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
DBGrid3.Canvas.Brush.Color:=Clred;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
DBGrid3.Canvas.Brush.Color:=Clyellow;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= StokKontrol.FieldByName('FISNO').Text
end;
bilgisayar yok önünde denemeden yazıyorum
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
satırını yanlış düzenlemişim öncelikle
if StokKontrol.FieldByName('FISNO').Text = onceki then begin
Olarak değiştirerek dener misin.
(26-04-2022, Saat: 13:44)cinarbil Adlı Kullanıcıdan Alıntı: Teşekkür ederim kod için. Bende düzenledim kullandım ama hepsi sarı oldu
procedure TForm29.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
onceki:String;
begin
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
DBGrid3.Canvas.Brush.Color:=Clred;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
DBGrid3.Canvas.Brush.Color:=Clyellow;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= StokKontrol.FieldByName('FISNO').Text
end;
bilgisayar yok önünde denemeden yazıyorum
if (StokKontrol.RecNo > 0) and (StokKontrol.FieldByName('FISNO').Text = onceki) then begin
satırını yanlış düzenlemişim öncelikle
if StokKontrol.FieldByName('FISNO').Text = onceki then begin
Olarak değiştirerek dener misin.
[/quote]
kusura bakmayın @frmman mesajı yeni gördüm
doğru söylüyor onceki adlı tanımlama procedure işin de olmayacak oradan silin formun public kısmına tanımlayın
[/quote]
Arkadaşlar, öncelikle emeğinize yüreğinize sağlık. Uyarlamaya çalıştım ama tam olmadı.
procedure TForm29.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if StokKontrol.FieldByName('FISNO').Text = onceki then begin
DBGrid3.Canvas.Brush.Color:=ClWindow;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end else begin
DBGrid3.Canvas.Brush.Color:=$00AEEBF0;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
onceki:= StokKontrol.FieldByName('FISNO').Text
end;
Kodu uyarlamaya çalıştım fakat yine saçma bir durum ortaya çıktı;
bura da iki tabloyu karşılaştırıyorum ve hedef tabloda olmayan kayıtları listeliyorum, listelenen kayıtların da FISNO ile ayırmak istedim yine olmadı.
SELECT DISTINCT FISNO,STOK_KODU,STOK_ADI,
CASE WHEN TABLO1.STOK_KODU IS NOT NULL THEN TABLO1.STOK_KODU else null end as STOK_KODU,
case WHEN TABLO1.STOK_KODU IS NOT NULL then FISNO else null end as FISNO
FROM (SELECT SHR.FISNO,TABLO1.STOK_KODU,TABLO1.STOK_ADI
FROM AYVAZ2019..TBLSTSABIT TABLO1
INNER JOIN AYVAZ2019..TBLSTHAR SHR ON SHR.STOK_KODU = TABLO1.STOK_KODU WHERE 1=1 AND SHR.FISNO IN ('000000000041407','000000000000004')
AND NOT EXISTS (SELECT NULL FROM ENTEGRE9..TBLSTSABIT TABLO2 WHERE 1=1 AND TABLO2.STOK_KODU = TABLO1.STOK_KODU)) TABLO1
GROUP BY FISNO,STOK_KODU,STOK_ADI
with rollup
having FISNO is not null
Arkadaşlar , Ben bu şekilde bir kod ile çözmeye uğraştım bir türlü renklendirme yapamadım yardım eder misiniz?
Aktarılmışları ve aktarılmamışları ayrı renk yapmak istedim.
procedure TForm29.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmamış' then
Begin
DBGrid1.Columns[6].Color:=clYellow;
end
Else if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış' then
Begin
DBGrid1.Columns[6].Color:=clBlue;
end;
end;
end.
(30-04-2022, Saat: 10:09)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar , Ben bu şekilde bir kod ile çözmeye uğraştım bir türlü renklendirme yapamadım yardım eder misiniz?
Aktarılmışları ve aktarılmamışları ayrı renk yapmak istedim.
procedure TForm29.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmamış' then
Begin
DBGrid1.Columns[6].Color:=clYellow;
end
Else if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış' then
Begin
DBGrid1.Columns[6].Color:=clBlue;
end;
end;
end.
İyi günler hayırlı bayramlar.
Önceden yazdıklarıma olmadı demiştiniz ben aşağıdaki şekilde kullanıyorum resim ekte bende çalışıyor Delphi 10,2 Kullanıyorum
procedure Tpersonel_form.personel_gridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
begin
if data_form.personel_sorgu.FieldByName('PER_BOLUM').AsString='YONETIM'
then begin
personel_grid.Canvas.Brush.Color:=Clyellow;
personel_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if data_form.personel_sorgu.FieldByName('PER_BOLUM').AsString='DEPO'
then begin
personel_grid.Canvas.Brush.Color:=Clskyblue;
personel_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
1. kayıt mavi olması secili olduğu için
YONETIM sarı
DEPO açık mavi
sizdeki sorun renk ataması yaptıkdan sonra
(30-04-2022, Saat: 11:52)cinarbil Adlı Kullanıcıdan Alıntı:
(30-04-2022, Saat: 10:09)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar , Ben bu şekilde bir kod ile çözmeye uğraştım bir türlü renklendirme yapamadım yardım eder misiniz?
Aktarılmışları ve aktarılmamışları ayrı renk yapmak istedim.
procedure TForm29.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmamış' then
Begin
DBGrid1.Columns[6].Color:=clYellow;
end
Else if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış' then
Begin
DBGrid1.Columns[6].Color:=clBlue;
end;
end;
end.
İyi günler hayırlı bayramlar.
Önceden yazdıklarıma olmadı demiştiniz ben aşağıdaki şekilde kullanıyorum resim ekte bende çalışıyor Delphi 10,2 Kullanıyorum
procedure Tpersonel_form.personel_gridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
begin
if data_form.personel_sorgu.FieldByName('PER_BOLUM').AsString='YONETIM'
then begin
personel_grid.Canvas.Brush.Color:=Clyellow;
personel_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if data_form.personel_sorgu.FieldByName('PER_BOLUM').AsString='DEPO'
then begin
personel_grid.Canvas.Brush.Color:=Clskyblue;
personel_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
1. kayıt mavi olması secili olduğu için
YONETIM sarı
DEPO açık mavi
sizdeki sorun renk ataması yaptıkdan sonra
Kullanmıyorsunuz
Lütfen yukardaki benim kodu olduğu deneyin
Aynen bu şekilde kullandım ama renklendirmedi?
D7
procedure TForm29.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Begin
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış'
then begin
DBGrid1.Canvas.Brush.Color:=Clyellow;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmamış'
then begin
DBGrid1.Canvas.Brush.Color:=Clskyblue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
(30-04-2022, Saat: 12:08)OZCANK Adlı Kullanıcıdan Alıntı:
(30-04-2022, Saat: 11:52)cinarbil Adlı Kullanıcıdan Alıntı: İyi günler hayırlı bayramlar.
Önceden yazdıklarıma olmadı demiştiniz ben aşağıdaki şekilde kullanıyorum resim ekte bende çalışıyor Delphi 10,2 Kullanıyorum
procedure Tpersonel_form.personel_gridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
begin
if data_form.personel_sorgu.FieldByName('PER_BOLUM').AsString='YONETIM'
then begin
personel_grid.Canvas.Brush.Color:=Clyellow;
personel_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if data_form.personel_sorgu.FieldByName('PER_BOLUM').AsString='DEPO'
then begin
personel_grid.Canvas.Brush.Color:=Clskyblue;
personel_grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
1. kayıt mavi olması secili olduğu için
YONETIM sarı
DEPO açık mavi
sizdeki sorun renk ataması yaptıkdan sonra
Kullanmıyorsunuz
Lütfen yukardaki benim kodu olduğu deneyin
Aynen bu şekilde kullandım ama renklendirmedi?
procedure TForm29.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Begin
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış'
then begin
DBGrid1.Canvas.Brush.Color:=Clyellow;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmamış'
then begin
DBGrid1.Canvas.Brush.Color:=Clskyblue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
o zaman sorun ıf karşılaştırmasında
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış'
burada bir yanlışlık var kayıt sayısı az ise (çünkü her sutun çiziminde buraya gelecek program) aşağıdaki gibi deneyin
Procedure en başına ıf satırı üstüne
(30-04-2022, Saat: 12:25)cinarbil Adlı Kullanıcıdan Alıntı:
(30-04-2022, Saat: 12:08)OZCANK Adlı Kullanıcıdan Alıntı: Aynen bu şekilde kullandım ama renklendirmedi?
procedure TForm29.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Begin
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış'
then begin
DBGrid1.Canvas.Brush.Color:=Clyellow;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmamış'
then begin
DBGrid1.Canvas.Brush.Color:=Clskyblue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
o zaman sorun ıf karşılaştırmasında
if FaturaListe.FieldByName('DURUM').AsString='Aktarılmış'
burada bir yanlışlık var kayıt sayısı az ise (çünkü her sutun çiziminde buraya gelecek program) aşağıdaki gibi deneyin
Procedure en başına ıf satırı üstüne