Kuvage süsteemi TopMost modaalne teadete kast koos Delphiga

Töölauarakendustega (Windows), a teadete (dialoogi) kast kasutatakse, et hoiatada rakenduse kasutajat, et tuleb midagi ette võtta, et mõni toiming on lõpule viidud või üldiselt kasutaja tähelepanu juhtimiseks.

Sisse Delphi, on kasutajale sõnumi kuvamiseks mitu viisi. Võite kasutada ükskõik millist RTL-is pakutavat valmisteate kuvamise rutiini, näiteks ShowMessage või InputBox; või saate luua oma dialoogiboksi (taaskasutamiseks): CreateMessageDialog.

Kõigi ülaltoodud dialoogibokside tavaline probleem on see, et nad asuvad nõuda, et rakendus oleks aktiivne, et seda kasutajale kuvada. "Aktiivne" tähendab, kui teie rakendusel on sisendfookus.

Kui soovite tõesti kasutaja tähelepanu haarata ja takistada tal midagi muud tegemast, peate seda suutma kuvage süsteemimodaalses ülaservas sõnumikast ka siis, kui teie rakendus pole aktiivne.

Süsteemi mooduselt kõige populaarsem sõnumikast

Isegi kui see võib tunduda keeruline, siis tegelikult see pole nii.

Kuna Delphi pääseb hõlpsasti juurde enamikule Windows API kõnedest, teeb Windows API funktsiooni "MessageBox" käivitamine trikki.

instagram viewer

Määratletud üksuses "Windows.pas" - see, mis vaikimisi sisaldub iga Delphi vormi kasutusklauslis, on Sõnumikast funktsioon loob, kuvab ja haldab sõnumikasti. Sõnumikast sisaldab rakenduse määratletud sõnumit ja pealkirja koos eelmääratud ikoonide ja nuppude mis tahes kombinatsiooniga.

Sõnumikast kuulutatakse järgmiselt:

funktsiooni MessageBox (

hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uTüüp: kardinal): täisarv;

Esimene parameeter, hwnd, on loodava sõnumikasti omanikuakna käepide. Kui loote dialoogiboksi olemasolu ajal teadete välja, kasutage dialoogiboksi käepidet hWnd parameeter.

lpText ja lpCaption määrake pealdis ja sõnumi tekst, mis kuvatakse teadete väljal.

Viimane on uType parameeter ja on kõige huvitavam. See parameeter täpsustab dialoogiboksi sisu ja käitumist. See parameeter võib olla mitmesuguste lippude kombinatsioon.

Näide: süsteemi modaalse hoiatuskast, kui süsteemi kuupäev / kellaaeg muutub

Heidame pilgu süsteemi moodsa ülemise sõnumikasti loomise näitele. Sa saad käsitlege Windowsi teadet mis saadetakse kõigile töötavatele rakendustele, kui süsteemi kuupäeva / kellaaja muutused—Näiteks juhtpaneeli apleti „Kuupäeva ja kellaaja atribuudid“ kasutamisel.

Funktsiooni MessageBox nimetatakse järgmiselt:

 Windows. MessageBox (

 käepide,

 'See on süsteemi moodusõnum' nr 13 # 10 'passiivsest rakendusest',

 'Sõnum passiivsest rakendusest!',

 MB_SYSTEMMODAL või MB_SETFOREGROUND või MB_TOPMOST või MB_ICONHAND);

Kõige olulisem tükk on viimane parameeter. "MB_SYSTEMMODAL või MB_SETFOREGROUND või MB_TOPMOST" tagab, et sõnumikast on süsteemi moodus, kõige üleval ja sellest saab esiplaaniakna.

  • MB_SYSTEMMODAL lipp tagab, et kasutaja peab enne töö jätkamist hWnd-parameetriga tuvastatud aknas töötamisele vastama sõnumikasti.
  • MB_TOPMOST lipp täpsustab, et sõnumikast tuleks paigutada kõigi mitte ülaservade akende kohale ja jääma nende kohale ka siis, kui aken on deaktiveeritud.
  • MB_SETFOREGROUND lipp tagab, et sõnumikast saab esiplaanil oleva akna.

Siin on täielik näidiskood (TForm nimega "vorm1", mis on määratletud ühikus "ühik1"):

ühik 1. üksus;

liides


kasutab

 Windows, Sõnumid, SysUtils, Variandid, Klassid,

 Graafika, juhtelemendid, vormid, dialoogid, ExtCtrls;


tüüp

 TForm1 = klass(TForm)

privaatne

protseduur WMTimeChange (var Msg: TMessage); sõnum WM_TIMECHANGE;

avalik

{Avalikud deklaratsioonid}

lõpp;

var

 Vorm 1: TForm1;


rakendamine{$ R * .dfm}


protseduur TForm1.WMTimeChange (var Msg: TMessage);

alustada

 Windows. MessageBox (

 käepide,

 'See on süsteemi moodusõnum' nr 13 # 10 'passiivsest rakendusest',

 'Sõnum passiivsest rakendusest!',

 MB_SYSTEMMODAL või MB_SETFOREGROUND või MB_TOPMOST või MB_ICONHAND);

lõpp;

lõpp.

Proovige seda lihtsat rakendust käivitada. Veenduge, et rakendus oleks viidud miinimumini või vähemalt mõni muu rakendus on aktiivne. Käivitage juhtpaneeli aplett "Kuupäeva ja kellaaja atribuudid" ja muutke süsteemi kellaaega. Niipea, kui olete vajutanud nuppu "Ok" (ekraanil applet) kuvatakse teie mitteaktiivse rakenduse süsteemmodaali ülaserv.