DBGrid Yapılamazmı.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
secgin
Üye
Mesajlar: 30
Kayıt: 12 May 2009 05:01

DBGrid Yapılamazmı.

Mesaj gönderen secgin »

Merhahaba

Delphi DBGrid nesnesinin daha gelişmiş türevleri yapılmakta. Örneğin (XDBGrid, BergGrid, ...).

Öncelikle takıldığım bir konu dbgrid nesnesinin başlık, satır ve sütün çizgilerinin nasıl yapıldığı. Çizgilerin graphics komutları ile çizildiği aşikar fakat bunun için dbgrid nesnesinin hangi ata sınıftan türetmek ve satır, sütun çizgilerini hangi nesne üzerine çizdirmek mantıklı olurdu.

Yazılım işine Pascal ile adım attığım yıllarda kendime bir listeleme prosedürü yapmışdım ekrada atıyorum 20 kayıt görünüyordu ve aşağı, yukarı ok tuşları ile kayıtlar üzerinde dolaşabiliyordum. 20. kayıtta aşağı ok tuşuna bastığınızda dosyadan tekrar okuma yaparak 2-21 arası kayıtları getiriyor tekrar ekrana yazdırıyordum. Bu işlemde okunan kayıt sayısı sürekli 20 kayıt oluyordu.

Delphideki dbgrid içersindeki veriler hangi mantıkla listeleniyor merak ediyorum. Örneğin 10 bin kayıtlı bi tabloyu sorguladığımızda grid nesnesi datasource nesnesinden 10 bin kaydı birden getirmez herhalde.

Dbgrid nesnesi yapmak için tecrübe ve kod bilgisinin ileri düzey olması gerebilir en azından çalışma mantığı ile ilgi bildiklerimizi paylaşırsak biraz daha ufkumuzun açılacağı inancındayım.

İyi çalışmalar.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: DBGrid Yapılamazmı.

Mesaj gönderen Battosai »

Örneğin 10 bin kayıtlı bi tabloyu sorguladığımızda grid nesnesi datasource nesnesinden 10 bin kaydı birden getirmez herhalde.
TTable kullanırsanız DB ne varsa hepsini yükler. TQuery kullanırsanız sorgu sonucunda dönen kayıt kadar data yüklenir. Eğer sayfalama yapmak istiyorsan TQuery ile yapabilirsin. Bu işi kendi yapan ücretli DBGrid bileşenleri var.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: DBGrid Yapılamazmı.

Mesaj gönderen sabanakman »

Ctrl tuşuna basarak değikenlerin, sınıfların ve metotların tanımlı oldukları yerlere konumlanabilirsiniz. TDBGrid sınıfının tanımlı olduğu satırlarda gezerek mantık yürütebilirsiniz. Yine aynı yöntemle bu nesne (TDrawGrid'in atası) TCustomGrid sınıfından türemektedir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
secgin
Üye
Mesajlar: 30
Kayıt: 12 May 2009 05:01

Re: DBGrid Yapılamazmı.

Mesaj gönderen secgin »

TTable kullanırsanız DB ne varsa hepsini yükler. TQuery kullanırsanız sorgu sonucunda dönen kayıt kadar data yüklenir. Eğer sayfalama yapmak istiyorsan TQuery ile yapabilirsin. Bu işi kendi yapan ücretli DBGrid bileşenleri var.
BergGrid ve XDBGrid nesnelerini satın aldım ama başkalarının yazdıkları kod bende pek güven uyandırmıyor. DBGrid nesnesinde listeme işleminin mantığı ne olabilir diye düşündüğümde benim aklıma DBGrid nesnesinin ekranda görünen boyutuna kaç tane kayıt sığıyorsa o kadarını tablodan okuyup yazmak ve Scroll ile kaydırdığında tekrar okuma yaparak bir sonraki kayıda kadar okuma yapıp ekrana yazdırmak olsa gerek. Bunla ilgili sizden fikir almak istiyorum. Teşekkür ederim ilginiz için.

Ctrl tuşuna basarak değikenlerin, sınıfların ve metotların tanımlı oldukları yerlere konumlanabilirsiniz. TDBGrid sınıfının tanımlı olduğu satırlarda gezerek mantık yürütebilirsiniz. Yine aynı yöntemle bu nesne (TDrawGrid'in atası) TCustomGrid sınıfından türemektedir.
Evet biraz incelemişdim ama tekrar inceleyeğim. Teşekkür ederim. İyi çalışmalar.
Code_Monster
Üye
Mesajlar: 16
Kayıt: 09 Tem 2010 10:36

Re: DBGrid Yapılamazmı.

Mesaj gönderen Code_Monster »

ileri düzey bi programcı değilim. fakat yazdığım programlarda küçük veritabanlarıyla uğraşsamda benimde aklıma takılıp duruyordu. aceba hepsini çekermi 1mllon kayıt olsa ne olur millet nasıl yapıyor diye düşünürdüm. hala düşünüyorum :) ihtiyacım yok şuanda böyle bir bilgiye ama az önce php ile uğraştığım sırada apacheden veri tabanımdaki kayıtlara göz at dediğimde "Limit" komutu dikkatimi çekti sql ile bu şekilde verileri çekip kendimiz listeletebiliriz heralde. öyle yazayım dedim biliyosunuzdur belki ama olsun :)
secgin
Üye
Mesajlar: 30
Kayıt: 12 May 2009 05:01

Re: DBGrid Yapılamazmı.

Mesaj gönderen secgin »

Php+MySql ile çalışacak grid nesnesi yazdım dediğiniz gibi tüm kayıtları çekmek mantıklı değil "Limit" ile istediğiniz kayıtları sayfalayarak çekebilirsiniz. Delphi DBGrid nesnesinde kayıtların Scroll ile kaydırılıp ekrana getirme mantığını tartışırsak bunun "Limit" gibi fonksiyonlar ile olacağını sanmıyorum. Kaldıkı birde işin grafik kısmı var web programcılığında bu kısımda delphiye nazaran çok kolay ve hatta eğlenceli :) Html+Css
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: DBGrid Yapılamazmı.

Mesaj gönderen sabanakman »

DB'den kayıt çekme kısmı aslında DataSet'in işi. DBGrid bağlı olduğu DataSet'ten gerekli olan kayıtları talep eder o kadar. Veritabanından tüm kayıtları açmak veya sadece gerekli olanları getirmek meselesi kullanılan dataset bieleşenine kalıyor. InterBase bileşenleri otomatik bu ayarda diye biliyorum, ADO bileşenleri bazı özellik ayarlamalarıyla böyle çalışabiliyor. Karşılaştığım bir kaç DataSet bileşeni herhangi bir ayar yapılmazsa genelde tüm kayıtları getiriyor. Tabi burada dikkat edilmesi gereken bir nokta da RecordCount özelliği. Bu değer bize hafızaya alınan kayıt sayısını verdiği için tüm kayıtları çekmemiş bir DataSet ile bize hatalı bir değer verecektir. En azından kullandığım Delphi 7 ve D2005 te durum böyle. Sonuç olarak asıl söylemek istediği DBGrid nesnesi sadece ekranda göstereceği kayıtlarla ilgilenmektedir ve bunun için DataSet nesnesinden TDataSource aracılığıyla isteklerde bulunmaktadır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla