Cu aplicații desktop (Windows), a caseta de mesaj (dialog) este utilizat pentru a avertiza utilizatorul aplicației că trebuie luate unele măsuri, că o operațiune a fost finalizată sau, în general, pentru a atrage atenția utilizatorilor.
În Delphi, există mai multe moduri de afișare a unui mesaj către utilizator. Puteți utiliza oricare dintre rutinele de afișare a mesajelor gata furnizate în RTL, cum ar fi ShowMessage sau InputBox; sau puteți crea propria casetă de dialog (pentru reutilizare): CreateMessageDialog.
O problemă comună cu toate casetele de dialog de mai sus este aceea că solicită ca aplicația să fie activă pentru a fi afișată utilizatorului. „Active” se referă la momentul în care aplicația dvs. are „focusul de intrare”.
Dacă doriți cu adevărat să atrageți atenția utilizatorului și să-i opriți să facă orice altceva, trebuie să fiți capabil afișează o casetă de mesaje din partea superioară a sistemului, chiar și atunci când aplicația dvs. nu este activă.
Chiar dacă acest lucru poate părea complicat, în realitate nu este.
Întrucât Delphi poate accesa cu ușurință majoritatea apelurilor API API Windows, executarea funcției API "MessageBox" Windows va face truc.
Definită în unitatea „windows.pas” - cea inclusă în mod implicit în clauza de utilizare a fiecărui formular Delphi, MessageBox funcția creează, afișează și operează o casetă de mesaje. Caseta de mesaje conține un mesaj și un titlu definit de aplicație, împreună cu orice combinație de icoane predefinite și butoane apăsate.
Iată cum este declarată MessageBox:
funcţie MessageBox (
Primul parametru, hwnd, este mânerul ferestrei proprietarului căsuței de mesaje care urmează să fie creată. dacă creați o casetă de mesaje în timp ce o casetă de dialog este prezentă, utilizați un mâner la caseta de dialog ca hWnd parametru.
lpText și lpCaption specificați subtitrarea și textul mesajului care este afișat în caseta de mesaje.
Ultima este uType parametrul și este cel mai interesant. Acest parametru specifică conținutul și comportamentul casetei de dialog. Acest parametru poate fi o combinație de diferite steaguri.
Haideți să aruncăm o privire la un exemplu de creare a unei căsuțe de mesaje modale de top sistem. Vei gestiona mesajul Windows care este trimis la toate aplicațiile în curs de execuție atunci când data / ora sistemului se schimbă - de exemplu, utilizând aplicația Panoul de control „Proprietăți de dată și oră”.
Funcția MessageBox va fi numită astfel:
Windows.MessageBox (
mâner,
„Acesta este un mesaj modal de sistem” # 13 # 10 ”dintr-o aplicație inactivă”,
„Un mesaj dintr-o aplicație inactivă!”,
MB_SYSTEMMODAL sau MB_SETFOREGROUND sau MB_TOPMOST sau MB_ICONHAND);
Cea mai importantă piesă este ultimul parametru. „MB_SYSTEMMODAL sau MB_SETFOREGROUND sau MB_TOPMOST” asigură căsuța de mesaje este modală de sistem, cea mai mare parte de sus și devine fereastra de prim plan.
Iată exemplul complet al codului (TForm numit „Form1” definit în unitatea „unit1”):
unitate Unitatea 1;
interfață
utilizări
Windows, mesaje, SysUtils, variante, clase,
Grafica, Controale, Formulare, Dialoguri, ExtCtrls;
tip
TForm1 = clasă(TForm)
privat
procedură WMTimeChange (var Msg: TMessage); mesaj WM_TIMECHANGE;
public
Declarații publice
Sfârșit;
var
Form1: TForm1;
punerea în aplicare$ R * .dfm
procedură TForm1.WMTimeChange (var Msg: TMessage);
începe
Windows.MessageBox (
mâner,
„Acesta este un mesaj modal de sistem” # 13 # 10 ”dintr-o aplicație inactivă”,
„Un mesaj dintr-o aplicație inactivă!”,
MB_SYSTEMMODAL sau MB_SETFOREGROUND sau MB_TOPMOST sau MB_ICONHAND);
Sfârșit;
Sfârșit.
Încercați să rulați această aplicație simplă. Asigurați-vă că aplicația este minimizată sau cel puțin că o altă aplicație este activă. Rulați aplicația Panoului de control „Proprietăți de dată și oră” și modificați ora sistemului. De îndată ce apăsați pe butonul „Ok” (de pe applet), se va afișa caseta de mesaj din partea de sus a modului din aplicația dvs. inactivă.