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, tü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.
Yukarıdaki kod satırıyla kullanıcıya ‘Kayıt Değiştirilsin mi’ açıklama satırını ileten (Başlık satırı 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şağıda verilmiştir.
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
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);
Buttona tıkladıktan sonraki ekran görüntünüz aşağıdaki gibi icon resmi içeren bir hal almalıdır.
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.) kullanıcı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.
“MB_DEFBUTTON2” parametresi pencere açıldığı zaman klavyeden enter tuşuna basılması 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ş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 Dö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 yapını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.
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 dayalı yazılmasını
sağlar.
Aşağıdaki kodu projenize ekleyip çalıştırırsanız, açıklama metninizin sağa dayalı yazıldığını göreceksiniz.
Buttona tı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ığını dikkatinizden kaçırmayın.
Dilerseniz aşağıdaki seçeneği de ekleyerek kapat düğmesi ve eklenen düğmelerin yerlerini de değiştirebilirsiniz.
Kapat düğmesini iptal etmek (pasif hale getirmek) içinde aşağıdaki seçeneği ekleyebilirsiniz.
“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 Yazı ve Başlık Sağa Dayalı
MB_PRECOMPOSED Kapat Düğmesini Sola Al
MB_COMPOSITE Kapat Düğmesini Pasif Yap
Açı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.
Dilerseniz dallandırma işlemini “case” yapısıyla da gerçekleştirebilirsiniz. O
zaman kodunuzu aşağıdaki şekilde değiştirmelisiniz.
Kıyaslama işleminde kullanacağınız yapı tamamen programcıya kalmıştır. Bizim bu hususta herhangi bir tavsiyemiz olmayacaktır. Dilediğinizi seçebilirsiniz.
Bu yazı 8 Şubat 2010 tarihinde Aytaç Cici tarafından Delphi kategorisi altına yazılmış ve 94 views defa okunmuş.





