Kā parādīt TopMost sistēmas modālo ziņojumu lodziņu ar Delphi

No neaktīvas Delphi lietojumprogrammas

IT ekspertu grupa savā birojā

gilaxia/Getty Images





Izmantojot darbvirsmas (Windows) lietojumprogrammas, a ziņojuma (dialoga) lodziņš tiek izmantots, lai brīdinātu lietojumprogrammas lietotāju, ka ir jāveic kāda darbība, ka kāda darbība ir pabeigta, vai vispār, lai pievērstu lietotāju uzmanību.

In Delfos , ir vairāki veidi, kā lietotājam parādīt ziņojumu. Varat izmantot jebkuru no RTL nodrošinātajām gatavām ziņojumu parādīšanas rutīnām, piemēram, ShowMessage vai InputBox; vai arī varat izveidot savu dialoglodziņu (atkārtotai lietošanai): CreateMessageDialog.



Izplatīta problēma ar visiem iepriekš minētajiem dialoglodziņiem ir tā, ka tie pieprasīt, lai lietojumprogramma būtu aktīva, lai tā tiktu parādīta lietotājam . “Aktīvs” attiecas uz gadījumiem, kad jūsu lietojumprogrammai ir “ievades fokuss”.

Ja jūs patiešām vēlaties piesaistīt lietotāja uzmanību un atturēt viņu no kaut kā cita, jums tas ir jāspēj parādīt sistēmas modālo augšējo ziņojumu lodziņu pat tad, ja lietojumprogramma nav aktīva .



Sistēmas modālā lielākā daļa ziņojumu lodziņa

Lai gan tas var izklausīties sarežģīti, patiesībā tas tā nav.

Tā kā Delphi var viegli piekļūt lielākajai daļai Windows API zvanu, Windows API funkcijas 'MessageBox' izpilde palīdzēs.

Definēts vienībā 'windows.pas' — tā, kas pēc noklusējuma ir iekļauta katras Delphi veidlapas lietošanas klauzulā, MessageBox funkcija izveido, parāda un pārvalda ziņojumu lodziņu. Ziņojuma lodziņā ir lietojumprogrammas definēts ziņojums un nosaukums, kā arī jebkura iepriekš definētu ikonu un spiedpogu kombinācija.

Lūk, kā tiek deklarēts MessageBox:



|_+_||_+_|
hWnd: HWND;
lpTeksts,
lpCaption : PAnsiChar;
uType : Cardinal) : vesels skaitlis;

Pirmais parametrs, hwnd , ir izveidojamā ziņojumu lodziņa īpašnieka loga rokturis. ja veidojat ziņojuma lodziņu, kamēr ir dialoglodziņš, izmantojiet dialoglodziņa rokturi kā hWnd parametrs.

The lpTeksts un lpCaption norādiet parakstu un ziņojuma tekstu, kas tiek parādīts ziņojuma lodziņā.



Pēdējais ir uTips parametrs un ir visinteresantākais. Šis parametrs norāda dialoglodziņa saturu un darbību. Šis parametrs var būt dažādu karogu kombinācija.

Piemērs: Sistēmas modālā brīdinājuma lodziņš, kad mainās sistēmas datums/laiks

Apskatīsim sistēmas modālā augšējā ziņojumu lodziņa izveides piemēru. Jūs to darīsit apstrādājiet Windows ziņojumu kas tiek nosūtīts uz visām darbojošām lietojumprogrammām, kad sistēmas datuma/laika izmaiņas — piemēram, izmantojot vadības paneļa sīklietotni “Datuma un laika rekvizīti”.



Funkcija MessageBox tiks saukta šādi:

|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|

Vissvarīgākais ir pēdējais parametrs. “MB_SYSTEMMODAL vai MB_SETFOREGROUND vai MB_TOPMOST” nodrošina, ka ziņojumu lodziņš ir sistēmas modāls, visaugstākais un kļūst par priekšplāna logu.



    MB_SYSTEMMODALkarodziņš nodrošina, ka lietotājam ir jāatbild uz ziņojuma lodziņu, pirms turpināt darbu hWnd parametra norādītajā logā.MB_TOPMOSTkarodziņš norāda, ka ziņojumu lodziņš ir jānovieto virs visiem logiem, kas nav augšējie, un jāpaliek virs tiem, pat ja logs ir deaktivizēts.MB_SETFOREGROUNDkarodziņš nodrošina, ka ziņojumu lodziņš kļūst par priekšplāna logu.

Šeit ir pilns koda paraugs (TForm ar nosaukumu 'Form1', kas definēts vienībā 'unit1'):

|_+_||_+_|

|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|

|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|

|_+_|

Mēģiniet palaist šo vienkāršo lietojumprogrammu. Pārliecinieties, vai lietojumprogramma ir samazināta līdz minimumam vai vismaz kāda cita lietojumprogramma ir aktīva. Palaidiet vadības paneļa sīklietotni 'Datuma un laika rekvizīti' un mainiet sistēmas laiku. Tiklīdz nospiedīsiet pogu 'Labi' (uz sīklietotne ) tiks parādīts sistēmas modālā augšējais ziņojumu lodziņš no jūsu neaktīvās lietojumprogrammas.