S aplikacijama za radne površine (Windows), a okvir za poruku (dijalog) koristi se kako bi upozorio korisnika aplikacije da je potrebno poduzeti neke radnje, da je neka operacija dovršena ili općenito privući pažnju korisnika.
U Delphi, postoji nekoliko načina prikazivanja poruke korisniku. Možete koristiti bilo koju spremnu poruku koja prikazuje rutine ponuđene u RTL-u, poput ShowMessage ili InputBox; ili možete stvoriti vlastiti dijaloški okvir (za ponovnu upotrebu): CreateMessageDialog.
Čest problem sa svim gore navedenim dijaloškim okvirima je da oni zahtijevaju da aplikacija bude aktivna kako bi se korisniku prikazala. "Aktivno" se odnosi na to kada vaša aplikacija ima "fokus na ulazu".
Ako zaista želite privući pažnju korisnika i spriječiti ih da rade bilo što drugo, to morate biti u mogućnosti prikazuju gornji okvir za poruku modalnog sustava čak i kada vaša aplikacija nije aktivna.
Sustavno modalni gornji vrh poruke
Iako bi ovo moglo zvučati komplicirano, u stvarnosti zapravo nije.
Budući da Delphi može lako pristupiti većini Windows API poziva, izvršavanje funkcije "MessageBox" Windows API-a učinit će trik.
Definirano u jedinici "windows.pas" - onoj koja je prema zadanim postavkama uključena u klauzulu upotrebe svakog Delphi obrasca, porukom funkcija stvara, prikazuje i upravlja okvirom za poruke. Okvir za poruke sadrži poruku i naslov definiran aplikacijom, zajedno s bilo kojom kombinacijom unaprijed definiranih ikona i tipki.
Evo kako je proglašen MessageBox:
funkcija porukom (
hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uType: Cardinal): cijeli broj;
Prvi parametar, Hwnd, je ručka vlasničkog prozora okvira za poruku koji se stvara. ako stvorite okvir s porukama dok je prisutan dijaloški okvir, upotrijebite ručicu dijaloškog okvira kao HWnd parametar.
lpText i lpCaption odredite naslov i tekst poruke koji se prikazuje u okviru s porukama.
Posljednji je uType parametar i najzanimljiviji je. Ovaj parametar određuje sadržaj i ponašanje dijaloškog okvira. Ovaj parametar može biti kombinacija različitih zastava.
Primjer: Okvir za upozorenje za modalni sustav kada se datum / vrijeme sustava promijene
Pogledajmo primjer stvaranja gornjeg okvira modalnog modalnog sustava na sustavu. Vi ćete rukovati se Windows porukom koja se šalje u sve pokrenute aplikacije kada promjene datuma / vremena sustava—Primjer pomoću alata Upravljačka ploča "Svojstva datuma i vremena".
Funkcija MessageBox nazvat će se kao:
Windows. porukom (
ručka,
"Ovo je modalna poruka sustava # 13 # 10 'iz neaktivne aplikacije',
'Poruka iz neaktivne aplikacije!',
MB_SYSTEMMODAL ili MB_SETFOREGROUND ili MB_TOPMOST ili MB_ICONHAND);
Najvažniji dio je zadnji parametar. "MB_SYSTEMMODAL ili MB_SETFOREGROUND ili MB_TOPMOST" osigurava da je okvir poruke sistemski modalni, najviši u vrhu i da postane prvi plan.
- MB_SYSTEMMODAL zastava osigurava da korisnik mora odgovoriti na okvir s porukom prije nastavka rada u prozoru koji je identificiran hWnd parametrom.
- MB_TOPMOST zastava određuje da se okvir za poruku treba postaviti iznad svih najgornjih prozora i treba ostati iznad njih, čak i kad je prozor deaktiviran.
- MB_SETFOREGROUND zastava osigurava da okvir s porukama postane prozor u prvom planu.
Evo potpunog primjera koda (TForm nazvan "Form1" definiran u jedinici "unit1"):
jedinica Cjelina 1;
sučelje
namjene
Windows, Poruke, SysUtils, Varijante, Klase,
Grafika, kontrole, obrasci, dijalozi, ExtCtrls;
tip
TForm1 = klasa(TForm)
privatna
postupak WMTimeChange (var Msg: TMessage); poruka WM_TIMECHANGE;
javnost
{Javne izjave}
kraj;
var
Form1: TForm1;
izvršenje{$ R * .dfm}
postupak TForm1.WMTimeChange (var Msg: TMessage);
početi
Windows. porukom (
ručka,
"Ovo je modalna poruka sustava # 13 # 10 'iz neaktivne aplikacije',
'Poruka iz neaktivne aplikacije!',
MB_SYSTEMMODAL ili MB_SETFOREGROUND ili MB_TOPMOST ili MB_ICONHAND);
kraj;
kraj.
Pokušajte pokrenuti ovu jednostavnu aplikaciju. Provjerite je li aplikacija smanjena ili barem da je aktivna neka druga aplikacija. Pokrenite applet upravljačke ploče "Svojstva datuma i vremena" i promijenite sistemsko vrijeme. Čim pritisnete gumb "U redu" (na aplet) prikazat će se modalni okvir sustava s vašom neaktivnom aplikacijom.