20 Şubat 2014 Perşembe

Delphi XE5 - ClientDataSet Comboboxa Listeleme Fonksiyonu



   Bu yazımızda gelin bakkal uygulamasını biraz daha geliştirelim ve yeni bir fonksiyon öğrenelim. Başlıktan da anlaşılacağı gibi listeleme yapmak için bir fonksiyon oluşturabiliriz. Böylece bu fonksiyonu uygulamanın uygun yerlerinde sürekli kullanabiliriz. Hatta bu fonksiyonları .dll şeklinde kaydederseniz her uygulama için yeniden fonksiyon yazmak zorunda kalmazsınız. .DLL lerden bu fonksiyonları çağırabilirsiniz.


  Peki listele fonksiyonu ne işimize yarayacak. Daha önceki yazılarda bahsettiğim gibi bazen verileri uygun bir şekilde listelemek isteyebilirsiniz. Örneğin rapor hazırlarken. Ama biz bu yazıda rapor değilde ComboBox İçinde listelemeyle ilgilenicez. Çünkü bakkal uygulamamızda bu ComboBox' ı kullanarak ürünlerimi listeletmek istiyorum.

  Bunun için bir önceki uygulamaya ek olarak yeni bir ClientDataSet oluşturdum. Artık ürün bilgilerimi burada saklayabilirim. Bu ClientDataSet' e ürün ve fiyatlarini girdim. Uygulamanın bir önceki versiyonunu Yandex Diskim' den indirebilirsiniz.


 Şimdi gelin listele fonksiyonunu oluşturmaya başlayalım. İlk önce her zaman ki gibi fonksiyon kalıbını yazalım.

Funciton ismi(paramismi:parametretipi; paramisimi:parametretipi;):fonkdeğişkentipi;
begin
.
.
.
Result := Sonuç ;

 Fonksiyonumuza listele adını verelim ve parametreleri tanımlayalım. Clientdataset'teki değerleri Combobox'a sıralatacağımız için iki adet parametremiz var bunlar Clientdataset ve Combobox.

Parametreler

Tclientdataset
Tcombobox

Parametre isimleri

Clientdataset
Comboliste

Buraya kadarki bilgileri birleştirerek fonksiyonumuzu oluşturalım.

Function listele( Clientdataset: Tclientdataset; Comboliste: Tcombobox): boolean;

Fonksiyon oluşturma işlemimiz tamamdır. Artık fonksiyonumuzun ne yapacağını algoritma mantığıyla önce yazalım.

1. ClientDataSet ' te ki herbir değeri tek tek gezsin
2. ClientDataSet ' te ki herbir değeri gezerken aynı zaman da Comboboxa da eklesin

 Gezinti işlemini yapabilmemiz için bir tane for döngüsüne ihtiyacımız var. Öyleyse daha önceki ClientDataSet Toplama ve Ortalama alma yazısındakine benzer bir yapı kullanıcaz demektir. Satırlarda gezinmek için for döngüsünü kuralım.

var i : integer;

 Gerekli tanımlamayı yaptıktan sonra

 for i := 1 to clientdataset.RecordCount do
    begin
      clientdataset.RecNo := i ;
    end;

 Artık satırlar arasında gezebiliyoruz. Şimdide gezerken aynı zamanda Combobox' a eklemek istediğimiz değerleri ekleyelim.

  for i := 1 to clientdataset.RecordCount do
    begin
      clientdataset.RecNo := i ;
      comboliste.Items.Add(clientdataset.FieldByName('ürün').Value);
    end;

  Bununla birlikte artık fonksiyonumuz hazır. Herhangi bir ClientDataSet' teki değerleri herhangi bir Combobox bileşenine ekleyebiliriz. Fonksiyonumuzun en son hali ise:

function listele (clientdataset:tclientdataset; comboliste:tcombobox):boolean;
var
i:integer;
begin
  for i := 1 to clientdataset.RecordCount do
    begin
      clientdataset.RecNo := i ;
      comboliste.Items.Add(clientdataset.FieldByName('ürün').Value);
    end;
  Result:= true;
end;

Böylece veritabanımız daki ürünlerin isimlerini Combobox' a eklemiş olduk. Örnek verecek olursak:

procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName:=ExtractFilePath(Application.ExeName  )+'bakkaldb.cds';
ClientDataSet1.Active:=true;
ClientDataSet2.FileName:=ExtractFilePath(Application.ExeName  )+'üründb.cds';
ClientDataSet2.Active:=true;

listele(ClientDataSet2,ComboBox1);

end;

Uygulama her açıldığında veritabanınız daki ürünler otomatikman comboboxa eklenmiş olacaktır. Bir sonraki yazıda ise bakkal uygulamasını biraz daha geliştirerek Comboboxta seçili olan değeri veritabanında arayıp bulma algoritmasını anlatacağım. Uygulamayı şu an paylaşmıyorum bir sonraki yazı da vereceğim.




Okuduğunuz İçin Teşekkür Ederim
Hakan UÇAR
İstatistikçi ve Amatör Programcı
İçerikler Tamamen Ücretsiz Olup Özgün Anlatımdır Paylaşırken Kaynak Belirtiniz Lütfen.



0 yorum:

Yorum Gönder