Zobrazte TopMost System Modal Message Box s Delphi

U stolních aplikací (Windows) dialogové okno zprávy se používá k upozornění uživatele aplikace, že je třeba podniknout určité kroky, že byla dokončena nějaká operace, nebo obecně k upoutání pozornosti uživatelů.

v Delphi, existuje několik způsobů, jak uživateli zobrazit zprávu. Můžete použít kteroukoli z rutin zobrazování připravených zpráv poskytnutých v RTL, jako je ShowMessage nebo InputBox; nebo si můžete vytvořit vlastní dialogové okno (pro opětovné použití): CreateMessageDialog.

Společným problémem všech výše uvedených dialogových oken je to, že jsou vyžadují, aby byla aplikace aktivní pro uživatele. „Aktivní“ označuje, kdy má aplikace „vstupní zaměření“.

Pokud opravdu chcete upoutat pozornost uživatele a zabránit jim v tom, aby dělali cokoli jiného, ​​musíte být schopni zobrazit systémovou zprávu s nejvyšší zprávou, i když aplikace není aktivní.

Systémově nejmodernější zpráva se zprávou

I když to může znít komplikovaně, ve skutečnosti to tak není.

Protože společnost Delphi může snadno přistupovat k většině volání rozhraní API systému Windows, bude provádění funkce rozhraní API „MessageBox“ systému Windows trik.

instagram viewer

Definováno v jednotce "windows.pas" - ta, která je ve výchozím nastavení zahrnuta v klauzuli použití každého formuláře Delphi, MessageBox Funkce vytváří, zobrazuje a provozuje okno se zprávou. Okno zprávy obsahuje zprávu a nadpis definovaný aplikací spolu s libovolnou kombinací předdefinovaných ikon a tlačítek.

Takto je deklarován MessageBox:

funkce MessageBox (

hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uType: kardinál): celé číslo;

První parametr, hwnd, je popisovač okna vlastníka okna zprávy, které má být vytvořeno. Pokud vytvoříte okno se zprávou, zatímco je dialogové okno k dispozici, použijte popisovač k dialogovému oknu jako hWnd parametr.

lpText a lpCaption zadejte titulek a text zprávy, který se zobrazí v okně zprávy.

Poslední je uType parametr a je nejzajímavější. Tento parametr určuje obsah a chování dialogového okna. Tento parametr může být kombinací různých příznaků.

Příklad: Výstražné pole pro modální režim, když se změní systémové datum / čas

Pojďme se podívat na příklad vytvoření systémového modálního nejvyššího okna zprávy. Budete zpracovat zprávu Windows který je odeslán do všech běžících aplikací, když systémové datum / čas se mění- například pomocí apletu ovládacího panelu „Vlastnosti data a času“.

Funkce MessageBox bude volána jako:

 Okna. MessageBox (

 Rukojeť,

 "Toto je systémová modální zpráva" # 13 # 10 "z neaktivní aplikace",

 "Zpráva z neaktivní aplikace!",

 MB_SYSTEMMODAL nebo MB_SETFOREGROUND nebo MB_TOPMOST nebo MB_ICONHAND);

Nejdůležitější část je poslední parametr. "MB_SYSTEMMODAL nebo MB_SETFOREGROUND nebo MB_TOPMOST" zajišťuje, že okno se zprávami je modální systém, nejvíce nahoře a stává se popředím.

  • MB_SYSTEMMODAL příznak zajišťuje, že uživatel musí reagovat na okno zprávy před pokračováním v práci v okně identifikovaném parametrem hWnd.
  • MB_TOPMOST Příznak určuje, že by se okno se zprávou mělo umístit nad všechna okna, která nejsou nahoře a měla by zůstat nad nimi, i když je okno deaktivováno.
  • MB_SETFOREGROUND příznak zajišťuje, že se okno zprávy stane popředím.

Zde je úplný příklad kódu (TForm s názvem "Form1" definovaný v jednotce "unit1"):

jednotka Lekce 1;

rozhraní


použití

 Windows, Zprávy, SysUtils, Varianty, Třídy,

 Grafika, ovládací prvky, formuláře, dialogy, ExtCtrls;


typ

 TForm1 = třída(TForm)

soukromé

postup WMTimeChange (var Msg: TMessage); zpráva WM_TIMECHANGE;

veřejnost

{Veřejná prohlášení}

konec;

var

 Form1: TForm1;


implementace{$ R * .dfm}


postup TForm1.WMTimeChange (var Msg: TMessage);

začít

 Okna. MessageBox (

 Rukojeť,

 "Toto je systémová modální zpráva" # 13 # 10 "z neaktivní aplikace",

 "Zpráva z neaktivní aplikace!",

 MB_SYSTEMMODAL nebo MB_SETFOREGROUND nebo MB_TOPMOST nebo MB_ICONHAND);

konec;

konec.

Zkuste spustit tuto jednoduchou aplikaci. Ujistěte se, že je aplikace minimalizována nebo že alespoň jiná aplikace je aktivní. Spusťte aplet ovládacího panelu „Datum a čas“ a změňte systémový čas. Jakmile stisknete tlačítko "OK" (na applet) se zobrazí okno se zprávou o nejvyšší modu systému z neaktivní aplikace.