Asztali (Windows) alkalmazások esetén a üzenet (párbeszédpanel) mezőbe arra figyelmeztetik az alkalmazást, hogy valamilyen intézkedést kell tenni, hogy valamelyik művelet befejeződött, vagy általában, hogy felhívja a felhasználók figyelmét.
Ban ben Delphi, a felhasználói üzenet megjelenítésének többféle módja van. Használhatja az RTL-ben biztosított kész üzenetek megjelenítési rutinjait is, például a ShowMessage vagy az InputBox; vagy létrehozhat saját párbeszédpanelt (ismételt felhasználásra): CreateMessageDialog.
A fenti párbeszédpanelek általános problémája az, hogy ezek megköveteli, hogy az alkalmazás aktív legyen, hogy megjelenjen a felhasználó számára. Az "aktív" azt jelenti, amikor az alkalmazás "bemeneti fókuszt" mutat.
Ha valóban szeretne felhívni a felhasználó figyelmét, és megakadályozni, hogy bármi mást tegyen, akkor képesnek kell lennie jelenítsen meg egy rendszermodális legfelső üzenet mezőt akkor is, ha az alkalmazás nem aktív.
Rendszermodális legnépszerűbb üzenődoboz
Annak ellenére, hogy ez bonyolultnak tűnhet, valójában valójában nem az.
Mivel a Delphi könnyen elérheti a legtöbb Windows API-hívást, az "MessageBox" Windows API-funkció végrehajtása meg fogja csinálni.
A "Windows.pas" egységben definiálva - az alapértelmezés szerint minden Delphi űrlap használati záradékában szereplő, a MessageBox funkció létrehoz, megjelenít és működtet egy üzenődobozt. Az üzenődoboz tartalmaz egy alkalmazás által meghatározott üzenetet és címet, valamint az előre definiált ikonok és nyomógombok bármilyen kombinációját.
A MessageBox deklarálva van így:
funkció MessageBox (
hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uType: bíboros): egész szám;
Az első paraméter, hwnd, a létrehozandó üzenet mező tulajdonosablakának kezelője. Ha egy üzenet mezőt hoz létre párbeszédpanel jelenlétében, akkor használja a fogantyút a párbeszédpanelhez hWND paraméter.
Az lpText és lpCaption adja meg a feliratot és az üzenet szövegét, amely megjelenik az üzenet mezőben.
Utolsó a uType paraméter és ez a legérdekesebb. Ez a paraméter meghatározza a párbeszédpanel tartalmát és viselkedését. Ez a paraméter lehet különféle zászlók kombinációja.
Példa: A rendszer modális figyelmeztető mezője, amikor a rendszer dátuma / idő változik
Vessen egy pillantást egy rendszermodális legfelső üzenetmező létrehozására. Majd kezelje a Windows üzenetet amelyet minden futó alkalmazáshoz elküldünk, amikor a a rendszer dátuma / ideje megváltozik—Például a „Dátum és idő tulajdonságai” Vezérlőpult kisalkalmazással.
A MessageBox funkció neve:
Ablakok. MessageBox (
fogantyú,
'Ez egy rendszermodális üzenet' # 13 # 10 'inaktív alkalmazásból',
"Üzenet inaktív alkalmazásból!",
MB_SYSTEMMODAL vagy MB_SETFOREGROUND vagy MB_TOPMOST vagy MB_ICONHAND);
A legfontosabb darab az utolsó paraméter. Az "MB_SYSTEMMODAL vagy MB_SETFOREGROUND vagy MB_TOPMOST" gondoskodik arról, hogy az üzenődoboz rendszermodális legyen, a legtöbb tetején legyen, és az előtér ablakká váljon.
- MB_SYSTEMMODAL jelző biztosítja, hogy a felhasználónak válaszolnia kell az üzenet mezőre, mielőtt folytatná a munkát a hWnd paraméterrel azonosított ablakban.
- MB_TOPMOST jelző azt jelzi, hogy az üzenet mezőt minden nem legfelső ablak fölé kell helyezni, és felettük kell maradniuk, még akkor is, ha az ablakot kikapcsolják.
- MB_SETFOREGROUND zászló biztosítja, hogy az üzenet mező előtér ablakká váljon.
Itt található a teljes példakód (TForm "Form1" elnevezésű, az "unit1" egységben van meghatározva):
Mértékegység egység1;
felület
felhasználások
Windows, Üzenetek, SysUtils, Változatok, Osztályok,
Grafika, Vezérlők, Űrlapok, Párbeszédek, ExtCtrls;
típus
TForm1 = osztály(TForm)
magán
eljárás WMTimeChange (var Msg: TMessage); üzenet WM_TIMECHANGE;
nyilvános
{Nyilvános nyilatkozatok}
vég;
var
1. forma: TForm1;
végrehajtás{$ R * .dfm}
eljárás TForm1.WMTimeChange (var Msg: TMessage);
kezdődik
Ablakok. MessageBox (
fogantyú,
'Ez egy rendszermodális üzenet' # 13 # 10 'inaktív alkalmazásból',
"Üzenet inaktív alkalmazásból!",
MB_SYSTEMMODAL vagy MB_SETFOREGROUND vagy MB_TOPMOST vagy MB_ICONHAND);
vég;
vég.
Próbálja meg futtatni ezt az egyszerű alkalmazást. Győződjön meg arról, hogy az alkalmazás minimalizálva van, vagy legalább egy másik alkalmazás aktív. Futtassa a "Dátum és idő tulajdonságai" Vezérlőpult kisalkalmazást, és módosítsa a rendszeridőt. Amint megnyomja az "Ok" gombot (a applet) megjelenik az inaktív alkalmazás rendszermodális legfelsõbb üzenõdobozja.