interacțiunea utilizatorului cerere este prezent în fiecare program. Cererea trebuie să fie în măsură să informeze utilizatorul cu privire la acest lucru sau că curs de evenimente, pentru a oferi o oportunitate de a lua o decizie și o transmite programul. Pentru acest programator Delphi oferă mai multe moduri, în funcție de nivelul de interacțiune cu cererea de utilizator în fiecare caz particular.
funcţia ShowMessage
Cel mai simplu caz de o astfel de interacțiune - informează doar utilizatorul. Ei bine, cel puțin, care a fost în procesul de calcul al diviziunii de zero. mesaj de informare simplu va indica utilizatorului necesitatea de a face o schimbare în calcularea datelor. Pentru a crea un mesaj de informații simple este o funcție ShowMessage built-in:
ShowMessage ( 'divide la zero nu poate fi!');
Funcția ShowMesage permite deducând mesajul în câteva rânduri. Pentru a face acest lucru, utilizați simbolurile standard ale trecerii la următoarea linie: # 10 # 13:
ShowMessage ( 'eroare împărțirea cu zero.' + # 10 # 13 + 'corecta datele introduse.');
Exemplu.
Iată ce trebuie să caute un program care calculează rezultatul împărțirii două numere, organizarea eliberarea de informații despre utilizator de intrare este incorectă:
Procedura TForm1.Button1Click (Expeditor: TObject);
var x, y: Integer;
începe
încerca
x: = StrToInt (Edit1.Text);
y: = StrToInt (Edit2.Text);
dacă y = 0 atunci
începe
ShowMessage ( 'divide cu zero, nu poate fi!' + # 10 # 13 + 'intrarea corectă.');
Edit2.SetFocus;
ieșire;
se încheie;
'Valoare:' =: Label3.Caption + FloatToStr (x / y) ;;
cu excepția
ShowMessage ( „numere întregi remediați trebuie să fie introduse!“);
Edit1.SetFocus;
se încheie;
se încheie;
Programul avertizează utilizatorul pe măsură ce introduceți zero, iar, în general, introducerea unor numere de date sau non-întreg non-numerice. Informațiile sunt afișate într-un mod fereastră modal, de exemplu, atunci când eliberează posturi programul de lucru este întreruptă și continuată numai după ce geamul este închis cu declarația după ShowMessage apel de funcție:
funcţia MessageDlg
În general, cu excepția unei simplu informații, cererea trebuie să obțină consimțământul utilizatorului pentru a efectua o anumită acțiune. Acest tip de interacțiune între program și utilizator permite funcția MessageDlg. După cum sugerează și numele, funcția MessageDlg oferă exact dialogul care se pune o întrebare și așteaptă răspunsul utilizatorului.
Pentru un astfel de răspuns caracteristică MessageDlg poate oferi utilizatorului un set de butoane, ceea ce presupune un anumit răspuns. Răspunsurile la întrebarea poate fi, de exemplu, „Da“ - „Nu“ sau „Da“ - „Nu“ - „Cancel“, sau alte opțiuni. Aici este o descriere MessageDlg funcții:
functioneaza MessageDlg (const Msg: String; DlgType: TMsgDlgType;
Butoane: TMsgDlgButtons; HelpCtx: Longint): Integer;
MessageDlg parametrii funcției:
Msg - mesajul afișat, la ieșire câteva linii, DlgType - tipul de dialog, cum ar fi „Pericol, eroare, Informații, confirmare,“ etc. Butoane - set de butoane cu pozițiile corespunzătoare, HelpCtx - în cele mai multe cazuri, puteți utiliza „0“ - de la zero. Pentru fiecare tip de dialog afișează pictograma sa, care se adaugă cu siguranță o fereastră colorată și informativ funcția de ieșire de la.
Pentru a obține mai multe informații despre opțiunile, vă rugăm să folosiți Help Delphi: apăsați CTRL și faceți clic pe mouse-ul pe funcția dorită sau parametru. Deschideți un modul cu o descriere completă.
Funcția MessageDlg returnează o valoare corespunzătoare pentru utilizator dat răspunsul la întrebare. Această valoare este ușor de a obține într-o variabilă și analiza înainte de a putea utiliza în program. De exemplu, apăsarea „Da“ returnări tasta „6“, rezultatul apăsând orice alte butoane sunt, de asemenea, ușor de obținut.
De exemplu, pentru a organiza aplicarea închide dialogul, programul poate utiliza această opțiune funcții MessageDlg:
Rezultat: = MessageDlg ( '? Sigur doriți să închideți aplicația', MtConfirmation, [mbYes, mbNo], 0);
dacă Rezultat = 6 atunci Application.Terminate;
Procedura TForm1.Button1Click (Expeditor: TObject);
var Rezultat: Integer;
începe
dacă Memo1.Modified
apoi Rezultat: = MessageDlg ( '? Salvați modificările', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
caz Rezultatul
2: ieșire; // Făcând clic pe „Cancel“, ieșiți din funcție, fără a închide aplicațiile
6: Memo1.Lines.SaveToFile ( 'ImyaFayla.txt'); // Făcând clic pe „Da“, salvați fișierul
7 :; // Făcând clic pe „Nu“, nu face nimic
ieșire altceva; // Dacă fereastra este închisă, făcând clic pe „X“ în titlu -, de asemenea, lăsați fără a închide aplicația
se încheie;
Application.Terminate; // Închideți aplicația
se încheie;
Vedem că, în comparație cu funcția de funcția ShowMessage MessageDlg are o interfata mult mai avansate. Puteți controla titlul ferestrei, ieșirea piktogramoy într-un anumit tip de cerere, și un set de butoane care vă permit să primească și să analizeze răspunsul utilizatorului. Folosind aceasta, funcția MessageDlg poate fi folosit cu succes în loc funcția ShowMessage.
Funcția rusificare MessageDlg
Desigur, aceste butoane titluri, cum ar fi, „Da“, „Nu“, „Cancel“ a devenit mult timp un standard și ușor de înțeles pentru utilizatori, fără traducere. Cu toate acestea, aplicarea funcției MessageDlg în program, în cazul în care toate celelalte semne sunt afișate în limba rusă, putem vedea că interfața în limba engleză a ferestrei sale arată străin. Vonikaet întrebare, cum poate russify titlul ferestrei și numele butoanelor astfel de funcții convenabile și utile, cum ar fi MessageDlg.
Există mai multe moduri de a face acest lucru. Titlu și funcția numele MessageDlg chei sunt preluate din modulul pentru a compila și consts.pas plasate în resursele aplicației. Prin urmare, schimbarea constantele de date din modulul menționat și recompilarea aplicația, vom obține o fereastră destul de limba rusă, afisaj MessageDlg funcția.
Cu toate acestea, ceva ce nu fac întotdeauna corect module standard Delphi. Există un alt mod care este asociat cu formarea unei funcții MessageDlg dinamice. Această metodă permite înainte de afișarea în mod dinamic schimba parametrii funcției. Iată cum, folosind această metodă poate fi rusificată determinat pentru a salva textul în programul anterior:
Procedura TForm1.Button1Click (Expeditor: TObject);
începe
în cazul în care Memo1.Modified atunci
cu CreateMessageDialog ( 'Salvați modificările?', mtInformation, [mbYes, mbNo, mbCancel]) face
încerca
Legendă: = 'Prompt pentru a salva'; // schimba titlul ferestrei
(FindComponent ( 'Da') ca TButton) .Caption: = 'Da'; // rusificare butonul „Da“
(FindComponent ( 'Nu') ca TButton) .Caption: = 'none'; // rusificare „Nu“ buton,
(FindComponent ( 'Cancel') ca TButton) .Caption: = 'Anulare'; // rusificare butonul „Anulați“
ShowModal; // Apelați caseta de dialog într-un mod modal
caz de ModalResult // rezultatul analizei de închidere a unei casete de dialog modal
2: ieșire;
6: Memo1.Lines.SaveToFile ( 'ImyaFayla.txt');
7 :;
ieșire altceva;
se încheie;
în cele din urmă
gratuit;
se încheie;
Application.Terminate;
se încheie;