Zobrazte TopMost System Modal Message Box s Delphi

click fraud protection

Pri desktopových (Windows) aplikáciách a dialógové okno správy sa používa na upozornenie používateľa aplikácie, že je potrebné vykonať určité kroky, že nejaká operácia bola dokončená alebo všeobecne na upútanie pozornosti používateľov.

v Delphi, existuje niekoľko spôsobov, ako zobraziť správu používateľovi. Môžete použiť ktorúkoľvek z pripravených rutín zobrazovania správ poskytovaných v RTL, napríklad ShowMessage alebo InputBox; alebo si môžete vytvoriť vlastné dialógové okno (na opätovné použitie): CreateMessageDialog.

Spoločným problémom všetkých vyššie uvedených dialógových okien je to, že sú požadovať, aby sa aplikácia zobrazovala používateľovi. „Aktívne“ označuje, kedy má vaša aplikácia „vstupné zameranie“.

Ak naozaj chcete upútať pozornosť používateľa a zabrániť mu v tom, aby robil čokoľvek iné, musíte byť schopní zobraziť okno s najvyššou správou o najmodernejšom systéme, aj keď vaša aplikácia nie je aktívna.

Okno s najvyššou väčšinou správ pre systémový režim

Aj keď by to mohlo znieť komplikovane, v skutočnosti to tak nie je.

instagram viewer

Pretože spoločnosť Delphi má ľahký prístup k väčšine hovorov rozhrania Windows API, vykonanie funkcie rozhrania API rozhrania „MessageBox“ bude trik.

Definované v jednotke "windows.pas" - tá, ktorá je štandardne zahrnutá do klauzuly o používaní každého formulára Delphi, MessageBox Funkcia vytvára, zobrazuje a ovláda okno správ. Okno správ obsahuje správu a nadpis definovaný aplikáciou spolu s akoukoľvek kombináciou preddefinovaných ikon a tlačidiel.

Takto je deklarovaný MessageBox:

funkcie MessageBox (

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

Prvý parameter, hwnd, je popisovač okna vlastníka v okne správy, ktoré sa má vytvoriť. Ak vytvoríte okno správy, keď je dialógové okno k dispozícii, použite popisovač k dialógovému oknu ako hWnd parameter.

lpText a lpCaption zadajte popis a text správy, ktorý sa zobrazí v okne správy.

Posledný je uType parameter a je najzaujímavejšia. Tento parameter určuje obsah a správanie sa dialógového okna. Tento parameter môže byť kombináciou rôznych príznakov.

Príklad: Výstražné okienko Modal System, keď sa zmení systémový dátum / čas

Pozrime sa na príklad vytvorenia najvyššieho okna s odkazom na systémový modálny režim. budete spracovať správu systému Windows ktorý je odoslaný do všetkých spustených aplikácií, keď zmeny dátumu a času systému- napríklad pomocou apletu Ovládací panel „Vlastnosti dátumu a času“.

Funkcia MessageBox sa bude volať ako:

 Windows. MessageBox (

 rukoväť,

 „Toto je systémová modálna správa # 13 # 10 z neaktívnej aplikácie“,

 „Správa z neaktívnej aplikácie!“,

 MB_SYSTEMMODAL alebo MB_SETFOREGROUND alebo MB_TOPMOST alebo MB_ICONHAND);

Najdôležitejšia časť je posledný parameter. "MB_SYSTEMMODAL alebo MB_SETFOREGROUND alebo MB_TOPMOST" zabezpečuje, že okno s hlásením je systémový, najvyšší a stane sa popredným oknom.

  • MB_SYSTEMMODAL flag zaisťuje, že užívateľ musí reagovať na okno správy pred pokračovaním v práci v okne identifikovanom parametrom hWnd.
  • MB_TOPMOST flag určuje, že okno správ by malo byť umiestnené nad všetkými oknami, ktoré nie sú najvyššie, a malo by zostať nad nimi, aj keď je okno deaktivované.
  • MB_SETFOREGROUND flag zabezpečí, aby sa okno správy stalo popredným oknom.

Tu je úplný príklad kódu (TForm s názvom „Form1“ definovaný v jednotke „unit1“):

jednotka Lekcia 1;

rozhranie


použitie

 Windows, Správy, SysUtils, Varianty, Triedy,

 Grafika, ovládacie prvky, formuláre, dialógové okná, extCtrl;


typ

 TForm1 = trieda(TForm)

súkromné

procedúra WMTimeChange (var Msg: TMessage); správa WM_TIMECHANGE;

verejnosť

{Verejné vyhlásenia}

koniec;

var

 Forma 1: TForm1;


uskutočnenie{$ R * .dfm}


procedúra TForm1.WMTimeChange (var Msg: TMessage);

začať

 Windows. MessageBox (

 rukoväť,

 „Toto je systémová modálna správa # 13 # 10 z neaktívnej aplikácie“,

 „Správa z neaktívnej aplikácie!“,

 MB_SYSTEMMODAL alebo MB_SETFOREGROUND alebo MB_TOPMOST alebo MB_ICONHAND);

koniec;

koniec.

Skúste spustiť túto jednoduchú aplikáciu. Skontrolujte, či je aplikácia minimalizovaná alebo či je aktívna aspoň iná aplikácia. Spustite aplet ovládacieho panela „Vlastnosti dátumu a času“ a zmeňte systémový čas. Akonáhle stlačíte tlačidlo "OK" (na applet) sa zobrazí hlásenie s najvyššou úrovňou systému od vašej neaktívnej aplikácie.

instagram story viewer