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