6 Mart 2019 Çarşamba

Limnor Diyalog Form ile Veri Girişi

Limnor Diyalog Form ile Veri Girişi 


Bu yazıda Limnor programlama dili ile diyalog kutuları üretilmesi ve bunlarla kullanıcıdan veri girişi sağlanmasını inceliyoruz. Bu yazımda Limnor Kullanım Klavuzları'nı esas alıyorum. 


Diyalog Kutusunun Kapanması ve Diyalog Sonucunun Alınması


Bir diyalog kutusu kullanıcı tarafından kapatıldığında kapanış sebebini bilmek isteriz. Mesela kullanıcı OK tuşuna mı yoksa Cancel tuşuna basarak mı diyaloğu kapattı.

Bir formda DialogResult adında bir özellik olur. Bu özellik yardımıyla kapanış sebebini algılarız. 

Genel yapıda eğer kullanıcı diyaloğu OK tuşuna basarak kapattıysa bu özellik OK değerini alır , eğer kullanıcı Cancel tuşu ile iptal istemişse DialogResult özelliği Cancel değeri alır. 


Şunu söylemek gerekir. DialogResult özelliğinin değeri ve anlamını programcı tasarımı yaparken belirler. DialogResult ayrıca Ignore, Abort, Retry, Yes, No ve None değerleri de olabilir. Programcı bu değerleri de ihtiyaç duyarsa kullanabilir.

Bir form diyalog kutusu olarak kullanıldığında, DialogResult özelliği None değerinden başka değer aldığında form otomatik olarak sanki Close metodu kullanılmış gibi kapanacaktır. Yani diyalog kutusunu kapatmak için Close aksiyonu kullanılmaz, DialogResult özelliği için tanımlanan bir SetProperty aksiyonu hem diyaloğun kapanış sebebini yazacak hem de diyaloğu kapatacaktır. 

En yaygın diyalog box kapatma tekniği butonlar kullanarak yapılandır. Forma eklenen butonların her biri bir kapatış sebebini DialogResult özelliğine yazar. 

Bunu göstermek için yeni bir Windows Form uygulaması üretelim. Default gelen Form1 formuna ilave olarak bir diyalog kutusu için Form2 formunu "Add" ve "Windows Form" seçerek ekleyelim. 

Yeni form üzerine şunları koyalım ve isimlerini verelim.


Mesela Cancel butonu özelliklerinde DialogResult özelliğini Cancel olarak listeden seçelim.


Programımız çalışırken kullanıcı bu butona tıkladığında DialogResult özelliği Cancel değerini alacak ve Form2 penceresi kapanacaktır. 

OK butonunu da DialogResult değeri OK olacak şekilde ayarlayalım.





Girilen Bilgileri Saklamak İçin Özellik Eklemek


Diyelim Form2 diyalog penceresinde girilen bilgileri Form1 üzerinde göstermek istiyoruz. Bunu yapmak için Form2 programından Form1'in elemanlarına metodlar yardımıyla erişerek yapabiliriz. Fakat bu sağlıklı bir yol değildir, Form1'de yapılan değişikliklerin Form2'de onun elemanlarına erişmek için yazdığımız rutinleri etkileyip etkilemediğini sürekli kontrol etmek gerekir.

Formlar birbirlerinin özelliklerine erişebilirler. Bu durumda biz diyalog kutumuzda girilen bilgileri forma ekleyeceğimiz özelliklere kaydedersek , Form1 bu bilgilere ulaşabilir.

Haritada Form2 açıkken sağ tıklayıp "Create property" seçerek Firsname ve Lastname adında iki özellik ekleyelim.



Şimdi bu özelliklere textboxlara yazılan bilgileri saklamak için aksiyonlar ekleyelim. Firstname özelliğine sağ tıklayıp "Create Set-Property Action" seçelim. Aksiyon özelliklerinde value değerine TextBoxFirstName elemanının Text özelliğini seçelim.


Peki bu aksiyonu ne zaman çalıştıralım? Textbox içeriği ne zaman değişirse yeni değer kaydedilsin. Bu amaçla textbox nesnesine sağ tıklayıp "Assign action" seçelim listeden TextChanged olayını seçelim.


Aksiyon listesinden az evvel tanımladığımız Form2.SetFirstname aksiyonunu seçelim.


Aynısından bir tane de Lastname özelliğini değiştirmek için aksiyon tanımlayalım ve TextBoxLastName elemanının TextChanged olayına bağlayalım.





Diyalog Kutumuzu Kullanmak


Form2 diyalog kutumuz hazır ve kullanılmayı bekliyor. Şimdi Form1 penceresinden ShowDialog aksiyonu yardımıyla bu pencereyi diyalog olarak çağırarak ve girilen değerleri okuyacağız.

DialogBox Gösterilmesi


Form1'e üzerinde Show Form 2 yazan bir buton ekleyelim ve Form2'nin ShowDialogBox metodunu forma aksiyon olarak ekleyelim.



Form1'e iki adet textbox nesnesi ekleyelim ve birinci textbox'a Form2'den Firstname özelliğini okumak için bir Set-Property aksiyonu ekleyelim.


Bu aksiyonun sadece Form2'nin DialogResult özelliğinde OK varsa yani diyalog kutusu OK tuşu basılarak kapatılınca çalışmasını sağlamak için asksiyonun ActionCondition özelliğine Form2'nin DialogResult özelliğini formül olarak seçelim.


Bu değer eğer OK ise aksiyon çalışacak. Bu amaçla eşitlik sorgusu kullanıyoruz ve eşitliğin karşı tarafına "Val" seçerek listeden OK seçiyoruz.


Bu aksiyon Form2'den Firstname değerini okuyp birinci textbox'a yazmak içindi.


Bir aksiyon da Form2'den Lastname özelliğini okuyup ikinci textbox'a yazmak için tanımlayalım.


Hadi bir tane de kullanıcı Cancel butonuna basarsa mesaj gösteren aksiyon tanımlayalım. Bunun için proje ağacında MessageBox nesnesinin StaticMethods bölümünden Show metoduna sağ tıklayıp Create-Action tıklayalım.



Bu safer aksiyonun çalışma koşulu DialogResult değerinin Cancel olması olacaktır.


Eh artık bu aksiyonları kullanma zamanı butonumuzun Click olayına tüm bu aksiyonları ekliyoruz.


En başta ShowDialog aksiyonu olmasına dikkat edelim. Önce o çalışacak ki DialogResult değer alabilsin. ShowDialog aksiyonu dialog olarak açılan form kapanana kadar orda bekler, dialog penceresi kapandıktan sonra sıradaki aksiyona geçilir.

Artık Limnor nasıl kullanılıyor alışkanlıkları edinmeye başlamışsınızdır. Bir dahaki yazıda buluşmak ümidiyle hoşçakalın..



Hiç yorum yok:

Yorum Gönder