Delphi/Application.MessageBox Kullanımı//Cem Adrian

BÖKE

Yaşayan Forum Efsanesi
20 Ağu 2016
8,754
411
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.

Kod:
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.

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.

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.

Kod:
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

Ş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.

Kod:
num:=Application.MessageBox('Kayıt Değiştirilsinmi','Değiştir',
MB_YESNOCANCEL+MB_ICONSTOP);

Ş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.

Kod:
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.
Kod:
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.

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.

Kod:
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.

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

Kod:
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.

Resim ekliyemedim yazısı bile uzun surdu iyi forumlar dilerim ,gelecek konuda görüşmek üzere :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.