Kullanıcı Giriş Ekranı Yapmak – Ders #2

Merhabalar,

ikinci dersimizde bu kez formumuzu biraz daha güzelleştireceğiz ve showmessage yerine farklı bir uyarı koyacağız ve doğru bilgi girilince de programın ana formu açılacak şekilde düzenleyeceğiz.  Delphican  sitesinden Abdullah Ilgaz’ın önerisiyle parça parça dersler yerine işe yarar bir program yazma yoluna gideceğiz ve programımız bittiğinde şifre kaydeden (yine kendisinin önerisi 🙂 ) bir program olacak.

Öncelikle formumuzu biraz daha güzelleştirelim ve kullanıcı girişi olduğunu anlatan bir resim koyalım.

Bunun için Additional sekmesinden Image bileşeni koyalım ve OI.(Object Inspector)’dan Picture özelliğini açıp bir resim seçelim.

Ben resmi https://www.flaticon.com/packs/essential-collection/2 adresinden seçtim.

Sırada formun bazı özelliklerini değiştirmek var. İlk olarak da yukarıda gördüğünüz gibi başlığı  değiştireceğiz. Bunun için formu seçip Caption özelliğini değiştiriyoruz.  Ben programın adını Pandoranın Kutusu koydum siz tabi başka bir şey koyabilirsiniz.

Bunun dışında formun ekranın ortasında açılması da gerekir. Sağda solda açılan bir forum çok da estetik kaçmaz 🙂 Formun Position özelliğini  poScreenCenter  seçerek formun ekranın ortasında oluşmasını sağlayabiliriz.

Açılış ekranının tam ekran olması ya da küçülmesi istenen özellikler değildir. Bizim belirlediğimiz boyutta en üstte olması gerekir. Boyutların değişimini engellemek için Border Style özelliğini BsDialog yapıyoruz. Formun açılışta en üstte kalmasını sağlamak içinde FormStyle özelliğini fsStayOnTop yapıyoruz.

Böylece form ile işimizi bitiriyoruz. Şimdi şu showmessage’dan kurtulalım. Formun ortasına bir tane standart sekmesinden panel ekleyelim ve caption  özelliğini  boş bırakalım, color özelliğini de clred yapalım.

Artık formumuzun ortasında kırmızı bir panelimiz olmuş olacak. Yalnız bu form program çalıştığında kullanıcı direk görecektir. Ama biz yanlış şifre girdiği zaman bu panelin gözükmesini istiyoruz. Bunu engellemenin yolu visible özelliğidir. Görünür objelerin %99’da bu özellik vardır. Objenin görünür olup olmadığını buradan ayarlarız. Eğer visible özelliği true ise o obje gözükür false ise gözükmez. Bizde panelin visible  özelliğini false yapacağız.

Son bileşenimiz de bu panelin içerisine yerleştirilmiş bir label bileşeni olacak. Peki label’in panelin içine yerleştiğini nasıl anlayacaksınız ?

Object inspector’ın üst kısmında objeleri gösteren bir bölüm vardır. Bu bölüm hem obje bulmayı kolaylaştırır hemde objelerin birbiriyle olan bağımlılığını gösterir.

Eğer sizin uygulamanızda label panelin içerisinde değilse yukarıdaki listeden labeli bulup sürükleyip bırakarak içerisine dahil edebilirsiniz.

Label’in Align  özelliğini alClient olarak değiştirdim. Bu sayede label bileşeni panel bileşeninin içini tamamen kaplamış oldu. Daha sonra font özelliğinde renk olarak clwhite, boyut olarak 26 punto Arial Bold. seçtim. Bu seçim sonucunda etiket panelden taştı ve etiketin  sonu gözükmez oldu.

Bu tür durumlarda okunmayan kelimenin alt satıra geçmesi için wordwrap özelliğini true  ediyoruz ve bu sayede okunamayan kelime alt satıra geçiyor.

Eğer fontun kalitesinin biraz daha yumuşak olmasını isterseniz font özelliklerinden Quality‘i fqAntialiased yapmanızı öneririm.

Bunları yaptıktan sonra yazının sola dayalı olduğunu göreceksiniz. Merkezli olması için son olarak Alignment özelliğini  taCenter yaparsanız formunuz aşağıdaki gibi gözükecektir.

Bileşenlerle işimizi bitirip kodlara geçmek için son bir işlemimiz kaldı. O da doğru cevap gelince açılacak olan ikinci form. Bunun için yeni bir form açıp uygulamayı kaydediyoruz.

Yukarıdaki butona basınca Lazarus standart bir form oluşturur ve ekrana getirir.  Kaydetmeye kalktığınızda ise bu forma ait unit dosyası için sizden isim ister. Biz isim olarak Umain.pas veriyor ve kaydediyoruz.

Şimdi önceki dersimizdeki   ShowMessage(‘Giriş Başarısız’); komutunu aşağıdaki gibi değiştiriyoruz.

Eğer if then ya da while do gibi ifadelerden sonra birden fazla satır çalıştırmak istiyorsanız yukarıda olduğu gibi kodunuzu begin … end; bloğu arasında yazmanız gerekmektedir.  Bu sayede Else  ifadesinden sonra aşağıdaki kodların hepsini çalıştırabildik.

Bu uygulamada şifre yalnış ise önce panel1 bileşenini görünür yapıyoruz ve sleep komutu ile 2 sn. kadar bekleme yapıyoruz.  Bu bekleme esnasında uygulamanın donmayıp değişiklikleri gösterebilmesi için Application.ProcessMessages; komutunu kullanıyoruz. Eğer bu komutu kullanmazsak panel1 görünür olur ama form kendini yenileyemeden 2 sn. lik beklemeye girer ve bekleme biter bitmez panel1 tekrar gizlenir bu yüzden de kullanıcı panel1’i hiçbir zaman göremez.

2 sn. beklemeden sonra panel1’in görünümünü tekrar kapatıyoruz ve yanlış girilen kullanıcı adı ve şifreyi temizliyoruz. (edit1.text :=”;)

Son satırda kullandığımız edit1.setfocus komutu kullanıcıya kolaylık sağlasın diye kullandığımız bir komut. Kullanıcı yanlış şifreyi girip uyarıyı gördükten sonra imleci direk edit1 bileşenine yönlendirir ve kullanıcı fare ile edit1 bileşenini seçmeden direk kullanıcı adını yazabilir.

Son olarak hatırlarsanız doğru şifre girildiği zaman giriş onaylandı yazısı yerine yeni formun açılacağını söylemiştik.

Bunun için öncelikle kod yazdığımız unit1’in umain unitesini tanıması gerekir.

Bu tanıtma işlemini implementation satırının altına uses umain;  satırını ekleyerek yapabiliriz.

Birden çok form kullanımında uses umain, uhakkinda, uekle …..; gibi ekleyerek gidebiliriz.

Lazarus’da formlar arasında gezebilmek içinde yeni form oluştur butonunun hemen altında ki

Butonu kullanabilirsiniz.

Kodumuza dönecek olursak. Yapmamız gereken form2 formunu açmak ve açılış formu olan formu kapatmak. Yani yine birden fazla satır işletmemiz gerekiyor.

Yukarıda ki kodda kullanıcı adı ve şifre doğru girildiği zaman form1 gizleniyor, form2 ise show komutu ile ana ekrana çağrılıyor. Burada doğru olan form1’i hide ile gizlemek yerine close ile kapatmak ama bunu daha sonra ki derse bırakacağız.

Yalnız ileri ki derslere bırakamayacağımız bir sıkıntı var o da form2 kapandığı zaman uygulamanın kapanmaması. Bunun nedeni ise gizli olarak bekleyen bir formumuz olması. Bu sorunu iki şekilde aşabiliriz. İki yöntemde form2’nin onclose olayında bitiyor. İlki form1.close diyerek daha önce gizlediğimiz formu kapatmak ya da halt komutuyla uygulamayı kapatmak.  Ben bu uygulamada halt diyerek direk uygulamayı kapattım.

 

 

Üçüncü derste açılış ekranını son rötuşlarını yapıp bitireceğiz ve artık ana form ile uğraşmaya başlayacağız.

İkinci dersin Kaynak kodları : Ders2.rar

Uygulamanın Tartışıldığı Forum

 

Leave a Reply

Your email address will not be published. Required fields are marked *