Dbgride Sıra No vermek...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Tropic
Üye
Mesajlar: 48
Kayıt: 12 Nis 2005 10:45

Dbgride Sıra No vermek...

Mesaj gönderen Tropic »

Arkadaşlar Dbgrid de 4 kayıt sütunu var. Birinci sutunu kayıt numarası olarak kullanmak için, Calculated Fields oluşturdum. Oluşturduğum Calculated Fields name i Object Inspector da Dbgrid.Columns[0] ın Fields Name ine çağırıp ilişkilendirmeyi yapmış oldum.

Sonra ADOQuery1 in events ında OnCalcFields a aşağıdaki kodu yazdım.

Kod: Tümünü seç

procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
begin
ADOQuery1.FieldByName('Ssira').AsInteger := ADOQuery1.RecNo + 1;
end;
Fakat aşağıdaki kodla

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select EvrakNo,Barkod,Miktar From DATALAR Where Islem = ''S'' Order By SiraNo');
ADOQuery1.Open;
end;

form oluştuğunda Dbgrid e Calculated fields için hesaplanmış sıra numarları kayıt sayısı kadar geliyor ama kayıtlar gözükmüyor, yukarıdaki tanımlı ilişkiyi kesersem kayıtlar listeleniyor.

İkincisi Calc fields den gelen sıra nolar

0
3
4
5
6
7
8
.
.
.
. şeklinde, yani 1 den başlamıyor.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
eğer dbgride hiç sütün eklemezsenin tabloyu açtığınız zaman tablodaki tüm alanları gridde listeler ama gride sütün eklediyseniz sadece eklediğiniz sütunları gösterir.
gride diğer sütünları da eklemeniz ve alanlar ile ilişkilendirmeniz lazım.
renco da 0 dan başlar, +1 dediğiniz zaman (ki gördüğüm kadarı ile zaten demişsiniz) 1 den başlaması gerekir. oncalcfields da direk adoquery demek yerine dataset parametresini kullanırsanız belki sıkıntı çıkmaz.

Kod: Tümünü seç

dataset.fieldbyname(.........).as....:=dataset.recno+1
gibi
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Tropic
Üye
Mesajlar: 48
Kayıt: 12 Nis 2005 10:45

Mesaj gönderen Tropic »

Hocam Gride eklediğim sütun Calc fields tanımlı ve diğer sütunlarda tek tek tanımlı.
Ayrıca adoquery1 i dataset le değiştirdim yine,
0
3
4
5
.
.
.
diye sıralıyor...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

peki ozaman birde şöyle dene
dbgride bir tane column ekle field ile bağlantısını yapma. 0.column diğer columnları ve alanlarını ilişkilendirebilirsin.
dbgridin defaultdraw ını false yap. ondrawcolumncell ine aşağıdaki kodları yaz.
ben bu yöntemi kullanıyorum ve 1 den başlayarak yazıyor.
datasetini bilmediğim için dbgrid üzerinden gittim. sen direk datasetin adını belirterek yazabilirsin.

Kod: Tümünü seç

  if Column.index=0  then
  begin
    dbgrid1.canvas.Pen.Color:=clblack;
    dbgrid1.canvas.Font.Style:=[fsbold];
    DBGrid1.canvas.Rectangle(rect);
    if dbgrdi1.datasource.dataset.recordcount = -1 Then
       dbgrid1.Canvas.TextOut(rect.Left+4,rect.Top+2,inttostr(dbgrdi1.datasource.dataset.recordCount+1))
    else
       dbgrid1.Canvas.TextOut(rect.Left+4,rect.Top+2,inttostr(dbgrdi1.datasource.dataset.recno));
  end else dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
düzenlerken ufak hatalar yapmış olabilirim

birde eğer gridde satırları gösteriyor ama değerleri göstermiyorsa columnların bağlantılarını kontrol etmeni şiddetle(burdaki şiddet sana değil tavsiyeye :) ) tavsiye ederim.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Tropic
Üye
Mesajlar: 48
Kayıt: 12 Nis 2005 10:45

:P

Mesaj gönderen Tropic »

Hocam tamamdır...
Cevapla