Z namiznimi (Windows) aplikacijami a sporočilo (pogovorno okno) se uporabnika aplikacije opozori, da je treba nekaj ukrepati, da je bila neka operacija zaključena ali na splošno pritegniti pozornost uporabnikov.
V Delphi, obstaja več načinov za prikazovanje sporočila uporabniku. Lahko uporabite katero koli od že pripravljenih sporočil, ki prikazujejo rutine, ki so na voljo v RTL-ju, na primer ShowMessage ali InputBox; ali pa ustvarite svoje pogovorno okno (za ponovno uporabo): CreateMessageDialog.
Pogosta težava vseh zgornjih pogovornih oken je, da so zahtevajo, da je aplikacija aktivna, da se prikaže uporabniku. "Active" se nanaša na to, kdaj ima vaša aplikacija "vhodni fokus".
Če želite resnično pritegniti pozornost uporabnika in jim preprečiti, da bi počeli kaj drugega, morate imeti možnost prikažite zgornje okno za sporočila, ki je sistemsko modalno, tudi če aplikacija ni aktivna.
Sistemsko modalni zgornji del sporočila
Čeprav se to morda sliši zapleteno, v resnici v resnici ni.
Ker lahko Delphi zlahka dostopa do večine klicev Windows API, bo izvedba funkcije "MessageBox" Windows API naredila trik.
Opredeljeno v enoti "windows.pas" - tiste, ki je privzeto vključena v klavzulo uporabe vsakega obrazca Delphi, MessageBox funkcija ustvarja, prikaže in upravlja s sporočilom. Polje za sporočilo vsebuje sporočilo in naslov, ki je določen s programom, ter poljubno kombinacijo vnaprej določenih ikon in gumbov.
Tukaj je opisano sporočilo BoxBox:
funkcijo MessageBox (
hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uType: kardinal): celo število;
Prvi parameter, hwnd, je ročaj lastniškega okna v polju za sporočila, ki ga je treba ustvariti. če ustvarite polje s sporočili, ko je prisotno pogovorno okno, uporabite ročaj za pogovorno okno kot hWnd parameter.
The lpText in lpCaption določite napis in besedilo sporočila, ki je prikazano v polju s sporočilom.
Zadnji je uType parameter in je najbolj zanimiv. Ta parameter določa vsebino in obnašanje pogovornega okna. Ta parameter je lahko kombinacija različnih zastav.
Primer: Opozorilno polje za sistemski modal, ko se datum / čas sistema spremeni
Oglejmo si primer ustvarjanja zgornjega okna s sporočilom za sistemski modal. Boste ročaj sporočila Windows ki je odposlan vsem izvajalnim aplikacijam, ko sistemski datum / čas spremembe- na primer z uporabo aplikacije "Lastnosti datuma in časa".
Funkcija MessageBox bo poklicana kot:
Windows. MessageBox (
ročaj,
'To je sistemsko sporočilo' # 13 # 10 'iz neaktivne aplikacije',
'Sporočilo neaktivne aplikacije!',
MB_SYSTEMMODAL ali MB_SETFOREGROUND ali MB_TOPMOST ali MB_ICONHAND);
Najpomembnejši kos je zadnji parameter. "MB_SYSTEMMODAL ali MB_SETFOREGROUND ali MB_TOPMOST" zagotavlja, da je polje sporočila sistemsko modalno, najbolj na vrhu in postane v ospredju.
- MB_SYSTEMMODAL zastava zagotavlja, da se mora uporabnik odzvati na polje s sporočilom, preden nadaljuje delo v oknu, ki ga prepozna parameter hWnd.
- MB_TOPMOST zastavica določa, da je treba polje za sporočila postaviti nad vsa najbolj okna in ne sme biti nad njimi, tudi ko je okno izključeno.
- MB_SETFOREGROUND zastava zagotavlja, da polje s sporočilom postane v ospredju.
Tu je celotna zgledna koda (TForm z imenom "Form1", opredeljen v enoti "unit1"):
enota Enota1;
vmesnik
uporablja
Windows, Sporočila, SysUtils, Variante, Razredi,
Grafika, kontrolniki, obrazci, dialogi, ExtCtrls;
tip
TForm1 = razred(TForm)
zasebno
postopek WMTimeChange (var Msg: TMessage); sporočilo WM_TIMECHANGE;
javnosti
{Javne izjave}
konec;
var
Obrazec1: TForm1;
izvajanje{$ R * .dfm}
postopek TForm1.WMTimeChange (var Msg: TMessage);
začeti
Windows. MessageBox (
ročaj,
'To je sistemsko sporočilo' # 13 # 10 'iz neaktivne aplikacije',
'Sporočilo neaktivne aplikacije!',
MB_SYSTEMMODAL ali MB_SETFOREGROUND ali MB_TOPMOST ali MB_ICONHAND);
konec;
konec.
Poskusite zagnati to preprosto aplikacijo. Prepričajte se, da je aplikacija zmanjšana ali vsaj, da je aktivna kakšna druga aplikacija. Zaženite programček Nadzorna plošča "Lastnosti datuma in časa" in spremenite sistemski čas. Takoj, ko pritisnete gumb "Ok" (na aplet) prikaže se sistemsko modalno okence s sporočilom iz vaše neaktivne aplikacije.