Webdeki gibi database deki bilgileri listeleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Webdeki gibi database deki bilgileri listeleme

Mesaj gönderen delphist »

S.a. Arkadaşlar webdeki gibi örnek veriyorum bir arama yaptım. bir den fazla veri var mesela 100 adet örneğin. bunu 10 10 listelemek istiyorum ama bunu gridde değil scroolbarı olan bir bileşende iç içe runtime da oluşturup yapabilmemiz mümkünmü. Böyle bir bileşen var mı...Yardımlarınızı bekliyorum.

İyi Çalışmalar
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Bu aramayı bir veritabanında yapacaksın sanırım. WEB'deki gibi bir örnek vermişsin ilk okuduğumda yanlışlıkla sanki bir web sayfasından arama yapacak da sonuçları listeleyeceksin gibi algıladım...

- Belki hazır çözümler vardır ama bu çözümler senin yaratıcılığını sınırlandırır.

- Gel kendine bir fonksiyon yaz bunu bir çok projende kullan, yapacağın şey basit aslında...

- Bir veritabanın var.
- Aradığın sonuçları bir SQL sorgusu ile elde edersin.
- Sonra Başlangıç kayıt nosunu tespit etmek kolay iki farklı değişken tanımlarsın. Bir tane başlangıç nosunu, diğeri ise kaçarlı gruplar halinde görmek istiyorsan onu ifade eden değişkenin olur.
- Sonucu listeleyeceğin bir tane de ScrollBar'ı olan bir bileşen demişsin, TListView vsReport stilindeki hali bunun için biçilmiş kaftandır. Icon vs. de koyarsın.

Sonuç şu...

Kod: Tümünü seç

// Uses DB, ComCtrls
Function Listele( Dataset:TDataset; Bas, Adet:Integer; Liste:TListView ): Integer; 
Var
  Sayac : Integer;
begin
  Sayac := 0;
  Liste.Items.Clear;
  If Dataset.Locate( 'SiraNo', Bas, []) then
  Repeat
    Inc(Sayac);
    With Liste.Items.Add do begin
      Caption := DataSet.FieldByName('KayitNo').AsString;
      Subitems.Add( DataSet.FieldByName('Adi').AsString );
      Subitems.Add( ... .... ); // daha ne istersen ekleyebilirsin...
     end;
    Dataset.Next;
  Until Dataset.EOF or ( Sayac = Adet)
  else ShowMessage('Başlangıç Kayıt Bulunamadı...');
  Result := Sayac; // Kaç Kayıt Gösterildiyi döndürüyorsun...
end;
- Veritabanındaki KayitNo düzenli artıyorsa Sayac ve KayitNo eş güdümlü gider.. Aslında bu kurgu yanlış, örnek olsun diye yazdım...

- Bunun yerine en son KayıtNo'sunu döndürmen daha mantıklı ama neyse konuyu dağıtmayım...

- Bak tek fonksiyonla kendi isteğine uygun sonuçlarını elde ettin...
- Bir kaç button ile bunları aşağıdaki şekilde kullanarak sonuçları yansıtırsın...

Kod: Tümünü seç

    KayitSayisi := Listele( AdoQuery1, 1, 20, ListView1 );
- Bu 1 rakamı yerine bir değişken atarsan şunu elde edersin...

Kod: Tümünü seç

    KayitSayisi := Listele( AdoQuery1, BasKayit, 20, ListView1 );
  BasKayit := Baskayit + KayitSayisi;
- Baskayit değişkeni global bir değişken olsun, en son değeri hatırlar olsun.
- Her döndüğünde, 20'li gruplarla listeleme yapmış olursun.


- Başarılar...
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

eyvallah abi...@mrmarman...Ben bundan daha iyi bir anlatış yolu yapamasdım...Çok ama çok teşekkür ederim. :) Süpersin abi...
Cevapla