Masaüstü (Windows) uygulamalarında, mesaj (iletişim kutusu) kutusu, kullanıcıyı bazı işlemlerin yapılması, bazı işlemlerin tamamlandığı veya genel olarak kullanıcıların dikkatini çekmek için uyarmak için kullanılır.
İçinde Delphi, kullanıcıya bir mesaj görüntülemenin birkaç yolu vardır. ShowMessage veya InputBox gibi RTL'de sağlanan hazır mesajları gösteren hazır mesajlardan herhangi birini kullanabilirsiniz; veya kendi iletişim kutunuzu (yeniden kullanım için) oluşturabilirsiniz: CreateMessageDialog.
Yukarıdaki iletişim kutularının hepsinde ortak bir sorun, uygulamanın kullanıcıya görüntülenmesini etkin olmasını istemek. "Etkin", uygulamanızın "giriş odağı" ne sahip olduğunu belirtir.
Gerçekten kullanıcının dikkatini çekmek ve başka bir şey yapmalarını durdurmak istiyorsanız, uygulamanız etkin olmasa bile sistem modundaki en üstteki ileti kutusunu görüntüleme.
Sistem Kalıcı En Çok İleti Kutusu
Bu karmaşık gibi görünse de, aslında öyle değil.
Delphi, Windows API çağrılarının çoğuna kolayca erişebildiğinden, "MessageBox" Windows API işlevini çalıştırmak hile yapacaktır.
"Windows.pas" biriminde tanımlanır - varsayılan olarak her Delphi formunun kullanım deyimine dahil edilen Mesaj Kutusu işlevi bir mesaj kutusu oluşturur, görüntüler ve işletir. Mesaj kutusu, önceden tanımlanmış simgeler ve düğmelerden oluşan herhangi bir kombinasyonun yanı sıra uygulama tanımlı bir mesaj ve başlık içerir.
MessageBox şöyle bildirilir:
fonksiyon Mesaj Kutusu(
hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uTürü: Kardinal): tamsayı;
İlk parametre, hwnd, oluşturulacak mesaj kutusunun sahip penceresinin tutamacıdır. bir iletişim kutusu varken bir mesaj kutusu oluşturursanız, iletişim kutusu için hWnd parametre.
lpText ve lpCaption mesaj kutusunda görüntülenen başlığı ve mesaj metnini belirtin.
Sonuncusu uType parametresi ve en ilginç olanıdır. Bu parametre iletişim kutusunun içeriğini ve davranışını belirtir. Bu parametre çeşitli bayrakların bir kombinasyonu olabilir.
Örnek: Sistem Tarihi / Saati Değiştiğinde Sistem Kalıcı Uyarı Kutusu
Bir sistem kalıcı en üst ileti kutusu oluşturma örneğine bakalım. Sen olacak Windows mesajını yönet tüm çalışan uygulamalara sistem tarih / saat değişiklikleri—Örneğin “Tarih ve Saat Özellikleri” Denetim Masası uygulamasını kullanma.
MessageBox işlevi şu şekilde çağrılacaktır:
Pencereler. Mesaj Kutusu(
üstesinden gelmek,
'Bu, etkin olmayan bir uygulamadan' # 13 # 10 'sistem kalıcı mesajıdır,
'Etkin olmayan bir uygulamadan mesaj!',
MB_SYSTEMMODAL veya MB_SETFOREGROUND veya MB_TOPMOST veya MB_ICONHAND);
En önemli parça son parametredir. "MB_SYSTEMMODAL veya MB_SETFOREGROUND veya MB_TOPMOST" ileti kutusunun sistem kipli, en üstte olmasını ve ön plan penceresi olmasını sağlar.
- MB_SYSTEMMODAL flag, hWnd parametresi tarafından tanımlanan pencerede çalışmaya devam etmeden önce kullanıcının mesaj kutusuna yanıt vermesini sağlar.
- MB_TOPMOST flag, ileti kutusunun en üstteki olmayan tüm pencerelerin üzerine yerleştirilmesini ve pencere devre dışı bırakılsa bile bunların üzerinde kalmasını belirtir.
- MB_SETFOREGROUND flag, mesaj kutusunun ön plan penceresi olmasını sağlar.
Tam örnek kod ("birim1" biriminde tanımlanan "Form1" adlı TForm):
birim Ünite 1;
arayüz
kullanımları
Windows, Mesajlar, SysUtils, Varyantlar, Sınıflar,
Grafikler, Kontroller, Formlar, Diyaloglar, ExtCtrls;
tip
TForm1 = sınıf(TForm)
özel
prosedür WMTimeChange (var Msg: TMessage); İleti WM_TIMECHANGE;
halka açık
{Herkese açık beyanlar}
son;
var
Form1: TForm1;
uygulama{$ R * .dfm}
prosedür TForm1.WMTimeChange (var Msg: TMessage);
başla
Pencereler. Mesaj Kutusu(
üstesinden gelmek,
'Bu, etkin olmayan bir uygulamadan' # 13 # 10 'sistem kalıcı mesajıdır,
'Etkin olmayan bir uygulamadan mesaj!',
MB_SYSTEMMODAL veya MB_SETFOREGROUND veya MB_TOPMOST veya MB_ICONHAND);
son;
son.
Bu basit uygulamayı çalıştırmayı deneyin. Uygulamanın simge durumuna küçültülmüş olduğundan veya en azından başka bir uygulamanın etkin olduğundan emin olun. "Tarih ve Saat Özellikleri" Denetim Masası uygulamasını çalıştırın ve sistem saatini değiştirin. "Tamam" düğmesine bastığınız anda ( uygulaması) etkin olmayan uygulamanızdan en üstteki sistem kalıcı mesaj kutusu görüntülenir.