Delphi Mesaj Pencereleri : Application.MessageBox

En çok kullanılan ve en iyi performansı veren methoddur. Kullanıcıya seçenekli mesaj penceresi açmak için kullanılır. Bu methodda kullanıcının tercih edebileceği düğme sayısı birden fazla olduğu için, basılan düğmenin değerini tutabilecek tam sayı tipli bir değişkene ihtiyaç vardır. Kullanım şekline ait yapı aşağıda verilmiştir.

Var

Num:Integer;

begin

num:=Application.MessageBox(Mesaj,Başlık,seçenekler);

Methodda opsiyonel (istenirse parametre gönderilmeyen) parametre olmadığı için, m parametrelere değer göndermek zorunludur. Şimdi tüm parametreleri basitten zora doğru inceleyelim.

Birinci parametrede (Mesaj) pencerede gösterilmesi istenen açıklama satırı

belirtilmelidir.

clip_image002

Yukarıdaki kod satırıyla kullanıcıya ‘Kayıt Değiştirilsin mi’ açıklama satırını ileten (Başlık sa ve düğmelerde oluşturulmuştur, bunlar birazdan incelenecektir.) bir pencere açılmasını sağlayabilirsiniz. Programın düğmeye tıklandıktan sonraki ekran görüntüsü ağıda verilmiştir.

clip_image003

Kodda belirtilen açıklama satırının pencerenin ortasında yer aldığına dikkat ediniz.

Gelelim ikinci parametreye (Başlık), buraya gireceğiniz metni, kullanıcı formun başlığında görecektir. Yukarıdaki pencereye dikkat edecek olursanız, formun başlığının bu metinle aynı olduğunu göreceksiniz.

Üçüncü parametremiz (Seçenekler) ise kendi arasında bir çok opsiyonel parametresi bulunan bir seçenekler kümesidir. Bu seçeneklerden en az bir tanesini methodda belirtmelisiniz. Aksi takdirde uygulamanız çalışmayacaktır. Şimdi bu seçenekleri teker teker inceleyelim.

num:=Application.MessageBox(Kayıt Değiştirilsinmi’,Değiştir,

MB_YESNOCANCEL);

İlk olarak çıkarabileceğiniz buttonları burada belirleyebilirsiniz. Yazabileceğiniz seçenekler aşağıda verilmiştir.

Düğme Seçenekleri Açıklama

MB_OK Ok button

MB_OKCancel Ok Cancel button

MB_YesNo Yes No button

MB_YesNoCancel Yes-No-Cancel button

MB_RetryCancel Retry – Cancel button

MB_AbortRetryIgnore Abort Retry Ignore button

clip_image004

Yukarıdaki kod satırının ekran görüntüsü üst tarafta verilmiştir. Şimdi seçenek kümemizdeki ikinci alternatifimize bakalım. Pencerede standart iconlarımızdan bir tanesini kullanmayı deneyelim.


Kodu aşağıdaki şekilde değiştirip uygulamanızı tekrar çalıştırın.

num:=Application.MessageBox(Kayıt Değiştirilsinmi’,Değiştir,

MB_YESNOCANCEL+MB_ICONSTOP);

clip_image006

Buttona kladıktan sonraki ekran görüntünüz aşağıdaki gibi icon resmi içeren bir hal almalıdır.

clip_image007

Kullanabileceğiniz diğer icon seçeneklerini de tablo halinde sizlere verelim. Projenize uygun olanını kullanabilirsiniz.

Icon Seçenekleri Açıklama

MB_ICONSTOP

MB_ICONQUESTION

MB_ICONINFORMATION

MB_ICONHAND

MB_ICONEXCLAMATION

MB_ICONASTERISK

MB_ICONWARNING

MB_ICONERROR

MB_ICONMASK

Şimdi de üçüncü seçeneğimizi inceleyelim. Tehlikeli işlemlerde (silme veya değiştirme vs.) kullacının yanlışlıkla klavyeden bir tuşa basıp “Yes” buttonunu işletmesi çok kötü sonuçlar doğurabilir. Bu yüzden pencere açıldığı zaman aktif buttonun “No” düğmesi olmasını sağlamak, sizin için bir alışkanlık olmalıdır. Bu işlemi nasıl yapabileceğiniz aşağıda gösterilmiştir.

clip_image009

“MB_DEFBUTTON2” parametresi pencere ıldığı zaman klavyeden enter tuşuna balma durumunda “No” düğmesine girilen kodun işletilmesini sağlayacaktır.

num:=Application.MessageBox(Kayıt Değiştirilsinmi’,Değiştir,

MB_YESNOCANCEL+MB_ICONMASK+MB_DEFBUTTON2);

Kullanabileceğiniz diğer alternatifler tablo halinde ağıda verilmiştir.

Default Button Seçenekleri Açıklama

MB_DEFBUTTON1 İlk Button Aktif

MB_DEFBUTTON2 İkinci button aktif

MB_DEFBUTTON3 Üçüncü button aktif

MB_DEFBUTTON4 rdüncü button aktif

Seçenek kümemizde yer alan dördüncü parametremiz, açılacak olan mesaj penceresinin diğer uygulamaların en üstünde mi yoksa altında mı kalacağını belirlemektedir. Aşağıda yanın kullanımına ait örneklendirme yapılmıştır.

num:=Application.MessageBox(Kayıt Değiştirilsinmi’,

‘Değiştir’,MB_YESNOCANCEL +MB_ICONMASK+MB_DEFBUTTON2+

MB_SYSTEMMODAL);

“MB_SYSTEMMODAL” seçeneği mesaj pencerenizin diğer uygulamaların önünde (en üstte) yer almasını sağlayacaktır. Sonucu görmek için mesaj pencereniz açıkken “Calc” (veya herhangi) programını çalıştırınız. Sonuç aşağıdaki gibi olacaktır.

clip_image011

Burada kullanabileceğiniz iki seçeneğiniz var. Birincisi mesaj pencerenizin en üstte kalmasını sağlayacak olan “MB_SYSTEMMODAL”, ikincisi ise diğer uygulamalarınızın mesaj penceresinin üzerinde olmasını sağlayacak (Varsayılan değer budur. Yazılmazsa da bunu kabul edecektir.) “MB_APPLMODAL” dır. Seçenekleri yinede tablo halinde vermek sanırım yararlı olacaktır.

Seçenekler Açıklama

MB_SYSTEMMODAL Hep En Üstte

MB_APPLMODAL Arkada

MB_TASKMODAL Arkada

Seçenek kümemizin beşinci parametresi, mesaj penceresinde yer alacak olan metni sağa dayalı yazmak için kullanılır. Aşağıda bu husus örneklendirilmiştir.

num:=Application.MessageBox(Kayıt Değiştirilsinmi’,Değiştir,

MB_YESNOCANCEL+MB_ICONMASK+MB_DEFBUTTON2+MB_TASK

MODAL+MB_RIGHT);

MB_RIGHT parametresi pencerede yer alan metnin sağa daya yazılmasını

sağlar.

Aşağıdaki kodu projenize ekleyip çalıştırırsaz, ıklama metninizin sağa dayalı yazıldığı göreceksiniz.


clip_image013

Buttona kladıktan sonraki ekran görüntünüz aşağıda verilmiştir. Burada pencere başlığının da sağa dayalı yazıldığı dikkatinizden kaçırmayın.

clip_image014

Dilerseniz aşağıdaki seçeneği de ekleyerek kapat düğmesi ve eklenen düğmelerin yerlerini de değiştirebilirsiniz.

clip_image016


Kapat düğmesini iptal etmek (pasif hale getirmek) içinde aşağıdaki seçeneği ekleyebilirsiniz.

clip_image018

MB_PRECOMPOSED seçeneğini ekleyerek, mesaj penceresinde kapat düğmesinin pasif hale gelmesini sağlayabilirsiniz.

num:=Application.MessageBox(Kayıt Değiştirilsinmi’,Değiştir,

MB_YESNOCANCEL+MB_ICONMASK+MB_DEFBUTTON2+MB_TASK

MODAL+MB_RIGHT+MB_PRECOMPOSED);

Son eklediğimiz seçenekleri de tablo halinde verip, bu kısmı kapatmak istiyorum. Yazacağımız bu seçenekler birbirlerine alternatif değildir. Hepsinin görevi farklı olup, tabloda bu husus açıklanmıştır.

Seçenekler Açıklama

MB_RIGHT Yave Başlık Sağa Dayalı

MB_PRECOMPOSED Kapat Düğmesini Sola Al

MB_COMPOSITE Kapat Düğmesini Pasif Yap

ılan mesaj penceresi alternatifli düğmelerden oluşacağı için, basılan düğmenin değerinin aktarılacağı değişken bizim için oldukça önemlidir. Aynen

“MessageDlg” methodunda olduğu gibi burada da elimizdeki bu değişkeni dallandırma (if veya case) işlemine tabi tutarak her düğme için farklı kodların işletilmesini sağlayabiliriz.

Aşağıdaki uygulamada bu husus örneklendirilerek, her düğme için farklı kodların işletilebilmesi sağlanabilmektedir. Programı çalıştırdıktan sonra button kontrolüne tıklayabilirsiniz.


clip_image020

Dilerseniz dallandırma işlemini “case” yapısıyla da gerçekleştirebilirsiniz. O

zaman kodunuzu aşağıdaki şekilde değiştirmelisiniz.

clip_image022

Kıyaslama işleminde kullanacağınız ya tamamen programcıya kalmıştır. Bizim bu hususta herhangi bir tavsiyemiz olmayacaktır. Dilediğinizi seçebilirsiniz.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Bu yazı 8 Şubat 2010 tarihinde Aytaç Cici tarafından Delphi kategorisi altına yazılmış ve 73 views defa okunmuş.

Tepki verin!

Aşağıdaki kutucuğa e-posta adresinizi girin sitemize yeni eklenen içerikten haberdar olun...

RSS okuyucu ile takip edin...

    Programlama