Parādiet TopMost sistēmas modālo ziņojumu lodziņu ar Delphi

Izmantojot darbvirsmas (Windows) lietojumprogrammas, a ziņojumu (dialoga) lodziņš tiek izmantots, lai brīdinātu lietojumprogrammas lietotāju par to, ka ir jāveic kādas darbības, ka kāda darbība ir pabeigta, vai vispār, lai piesaistītu lietotāju uzmanību.

Iekšā Delfi, ir vairāki veidi, kā lietotājam parādīt ziņojumu. Varat izmantot jebkuru no gatavajiem ziņojumiem, kas parāda RTL, piemēram, ShowMessage vai InputBox; vai arī varat izveidot savu dialoglodziņu (atkārtotai izmantošanai): CreateMessageDialog.

Visu iepriekšminēto dialoglodziņu izplatīta problēma ir tā, ka tie ir 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 pārtraukt viņu darīt kaut ko citu, jums tas jāprot parādiet sistēmas modālā veidā visaugstāko ziņojumu lodziņu pat tad, ja jūsu lietojumprogramma nav aktīva.

Sistēmas modālais augšējais ziņojumu lodziņš

Pat ja tas varētu šķist sarežģīti, patiesībā tā patiesībā nav.

instagram viewer

Tā kā Delfi var viegli piekļūt lielākajai daļai Windows API zvanu, Windows API funkcijas "MessageBox" izpilde būs viltība.

Definēts vienībā "windows.pas" - tas, kas pēc noklusējuma iekļauts katras Delphi veidlapas lietošanas klauzulā, MessageBox funkcija izveido, parāda un darbojas ziņojumu lodziņu. Ziņojumu lodziņā ir lietojumprogrammas definēts ziņojums un nosaukums, kā arī jebkura iepriekš noteiktu ikonu un spiedpogu kombinācija.

Tālāk ir norādīts, kā MessageBox tiek deklarēts.

funkcija MessageBox (

hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uType: kardināls): vesels skaitlis;

Pirmais parametrs, hwnd, ir izveidojamā ziņojumu lodziņa īpašnieka loga rokturis. Ja izveidojat ziņojumu lodziņu, kamēr atrodas dialoglodziņš, izmantojiet dialoga lodziņa rokturi hWnd parametrs.

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

Pēdējais ir uType parametrs un ir visinteresantākais. Šis parametrs norāda dialoglodziņa saturu un uzvedību. Šis parametrs var būt dažādu karodziņu 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ņojuma lodziņa izveidošanas piemēru. Jūs rīkoties ar Windows ziņojumu kas tiek nosūtīts uz visām darbojošajā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 kā:

 Windows. MessageBox (

 rokturis,

 "Šis ir sistēmas modāls ziņojums" Nr. 13 # 10 "no neaktīvas programmas",

 'Ziņojums no neaktīvas programmas!',

 MB_SYSTEMMODAL vai MB_SETFOREGROUND vai MB_TOPMOST vai MB_ICONHAND);

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

  • MB_SYSTEMMODAL karodziņš nodrošina, ka lietotājam ir jāatbild uz ziņojumu lodziņu pirms darba turpināšanas logā, kuru identificē ar hWnd parametru.
  • MB_TOPMOST karodziņš norāda, ka ziņojumu lodziņš jānovieto virs visiem logiem, kas nav augšējie, un jāpaliek virs tiem, pat ja logs ir deaktivizēts.
  • MB_SETFOREGROUND karodziņš nodrošina, ka ziņojumu lodziņš kļūst par priekšplāna logu.

Šeit ir pilns koda kods (TForm ar nosaukumu “1. forma”, kas definēts vienībā “vienība1”):

vienība Vienība 1;

saskarne


izmanto

 Windows, Ziņojumi, SysUtils, Varianti, Klases,

 Grafika, Kontrole, Veidlapas, Dialogi, ExtCtrls;


tips

 TForm1 = klase(TForm)

Privāts

procedūra WMTimeChange (var Msg: TMessage); ziņa WM_TIMECHANGE;

publiski

{Publiskās deklarācijas}

beigas;

var

 1. forma: TForm1;


ieviešana{$ R * .dfm}


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

sākt

 Windows. MessageBox (

 rokturis,

 "Šis ir sistēmas modāls ziņojums" Nr. 13 # 10 "no neaktīvas programmas",

 'Ziņojums no neaktīvas programmas!',

 MB_SYSTEMMODAL vai MB_SETFOREGROUND vai MB_TOPMOST vai MB_ICONHAND);

beigas;

beigas.

Mēģiniet palaist šo vienkāršo lietojumprogrammu. Pārliecinieties, vai lietojumprogramma ir samazināta līdz minimumam vai vismaz ir aktivizēta kāda cita programma. Palaidiet vadības paneļa sīklietotni “Datuma un laika rekvizīti” un mainiet sistēmas laiku. Tiklīdz jūs nospiedīsit pogu "Ok" (uz sīklietotne) tiks parādīts neaktīvās programmas sistēmas modālā augšējā ziņojuma lodziņš.

instagram story viewer