Dialogi komunikatów

Procedura ShowMessage
MessageDlg
MessageDlgPos
MessageBox
Ćwiczenia

Procedura ShowMessage

Wymagany jeden parametr typu string.

   ShowMessage('Tekst komunikatu ...');

Proste okno z napisem na belce zgodnym z nazwą aplikacji.

Góra

Funkcja MessageDlg

Składnia wywołania:

 MessageDlg(Tekst, TypOkna, Przyciski, HelpContext);

gdzie:

Tekst - łańcuch znaków stanowiący treść komunikatu

TypOkna identyfikator typu okna (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom) odpowiadający za napis na belce (zwykle anglojęzyczny!).

Przyciski - zbiór identyfikatorów przycisków dialogu (mbYes, mbNo, mbOK, mbCancel, mbHelp, mbAbort, mbRetry, mIgnor, mbAll), np.: [mbOK,mbCancel].

HelpContext - numer tematu w Helpie aplikacji.

Funkcja zwraca wartość typu Word, jest ona zgodna z predefiniowanymi identyfikatorami: mrNone, mrAbort, mrYes, mrOk, mrRetry, mrNo, mrCancel, mrIgnore, mrAll. Odpowiadają one nacisnięciu adekwatnego przycisku dialogu, np.:

 var id:integer;
 begin
   id:=MessageDlg('Treść',mtConfirmation,[mbOK,mbCancel],0);
   case id of
    mrOK    :Label1.Caption:='Potwierdzono';
    mrCancel:Label1.Caption:='Anulowano';
   end;
 end;

Uwaga!  Można się spodziewać braku dźwięków systemowych i anglojęzycznych napisów

Góra

Funkcja MessageDlgPos

Składnia wywołania:

 MessageDlgDlg(Tekst, TypOkna, Przyciski, HelpContext,X,Y);

gdzie:

X,Y - współrzędne lewego górnego narożnika dialogu na ekranie.

pozostałe parametry jak dla MessageDlg.

Góra

Funkcja MessageBox

Składnia wywołania:

1) jako metoda obiektu Application:

  Application.Messagebox(Tekst,Tytul,Flagi);

2) jako funkcja API:

  Messagebox(Handle,Tekst,Tytul,Flagi);

gdzie:

Tekst,Tytul są parametrami typu PChar czyli wskaźnikami do łańcucha zakończonego znakiem #0

Flagi określają zestaw przycisków i rodzaj dialogu (wyświetlaną bitmapę i dźwięk systemowy generowany przy wywołaniu funkcji); możliwe wartości dla zestawów przycisków: mb_OK, mb_OKCancel mb_RetryCancel, mb_YesNo, mb_YesNoCancel, mb_AbortRetryIgnore; możliwe identyfikatory dla typu dialogu: mb_IconExclamation ("!" w trójkącie), mb_IconInformation ("!" w chmurce), mb_IconQuestion ("?" w chmurce), mb_IconStop ("X")

Handle - to uchwyt okna w stosunku, do którego okno komunikatu ma być modalne (czyli nie da się przełączyć dopóki samo nie zostanie zamknięte); np. Form1.Handle.

Np.:

 Application.Messagebox('Tekst','Tytuł',mb_OK + mb_IconStop); 
 Messagebox(Handle,'Tekst','Tytuł',mb_OK + mb_IconStop); 

Zwracane wartości całkowite identyfikują przycisk naciśnięty w dialogu. Polecane są predefiniowane identyfikatory wartości funkcji: IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES. Np.:

 id:= Application.Messagebox('Tekst','Tytuł',mb_YesNoCancel + mb_IconStop); 
 case id of
  IDCANCEL:Label1.Caption:='Anulowano';
  IDNO    :Label1.Caption:='Nie'; 
  IDOK    :Label1.Caption:='Tak'; 
 end;

Uwaga na użycie łańcuchów krótkich. Polecany sposób:

 var s:string;
 ...
  s:=Edit1.Text+#0;
  Application.MessageBox(@s[1], '', mbOK);

Zalety: dowolne napisy na belkach okien dialogów, dźwięki systemowe.

Góra

Ćwiczenia

  1. Utworzyć menu z opcjami wyświetlającymi na wszystkie możliwe sposoby dialogi komunikatów.
  2. Użyć funkcji MessageBox z wszystkimi możliwymi zestawami przycisków. Wybór danego przycisku ma powodować wybiórczą reakcję programu.
  3. Napisać aplikację typu "mały edytor tekstu" na bazie komponentu TMemo z akcjami: Nowy , Otwórz, Zapisz, Zamknij. W sytuacji krytycznej program ma komunikować się użytkownikiem.
Góra