Difference between revisions of "Dialog Examples/pl"

From Free Pascal wiki
Jump to navigationJump to search
(Dodanie tłumaczenia na j. polski)
 
(Wstępne tłumaczenie tekstu ze strony angielskiej "en".)
Line 1: Line 1:
 
{{Dialog Examples}}
 
{{Dialog Examples}}
  
= Some useful dialogs=
+
= Kilka przydatnych okien dialogowych=
Here are some useful dialogs not found in the Component Palette:
+
Oto kilka przydatnych okien dialogowych, których nie znajdziesz w palecie komponentów:
  
 
* procedure ShowMessage (const Msg: string);
 
* procedure ShowMessage (const Msg: string);
Line 11: Line 11:
 
* function PasswordBox(const ACaption, APrompt : String) : String;
 
* function PasswordBox(const ACaption, APrompt : String) : String;
  
Each of these components causes a small popup box to be displayed, which contains some information and requires a user response: either a button press or some text entry or both. The programmer has little control over the format, size or position of these popup boxes, but can influence their textual content.<br>
+
Każdy z tych komponentów powoduje wyświetlenie małego okna dialogowego, które zawiera informacje wymagające reakcji użytkownika: naciśnięcie przycisku, wprowadzenie tekstu lub obydwa razem. Programista ma niewielką kontrolę nad formatem, wielkością lub położeniem tych okien dialogowych, ale może wpływać na ich treść tekstową.<br>
The reason why there are often several very similar alternatives, is to allow different methods of calling the component and receiving data back from the procedure or function.
+
Powodem, dla którego istnieje kilka bardzo podobnych okien dialogowych, jest umożliwienie wywoływania tego komponentu różnymi metodami i odbieranie danych z powrotem do procedury lub funkcji.
These dialogs might be '''platform dependent''' i.e. they might be displayed differently. For example, strings which are fully displayed in Windows XP, might be truncated in Windows 7.
+
Te okna dialogowe mogą być '''zależne od platformy''', tzn. mogą być wyświetlane inaczej na różnych systemach operacyjnych. Na przykład teksty, które są w pełni wyświetlane w systemie Windows XP, mogą zostać obcięte w systemie Windows 7.
  
==Message Dialogs==
+
==Dialogi wiadomości==
Message dialogs display a message and wait for a key-press or mouse-click response.
+
Dialogi wiadomości wyświetlają komunikat i czekają na naciśnięcie jakiegoś klawisza lub na kliknięcie myszą.
  
 
===ShowMessage===
 
===ShowMessage===
 
<syntaxhighlight>procedure ShowMessage(const Msg: string);</syntaxhighlight>
 
<syntaxhighlight>procedure ShowMessage(const Msg: string);</syntaxhighlight>
 
   
 
   
{ Defined in Dialogs.pp }
+
{ Zdefiniowany jest w pliku Dialogs.pp }
  
The simplest message dialog: takes a simple string as parameter, displays it in a stereotyped box, and waits for a mouse-click or enter-key event before returning to the calling routine or program.<br>
+
Najprostsze okno dialogowe wiadomości: pobiera prosty ciąg znaków jako parametr, wyświetla go w stereotypowym oknie i czeka na naciśnięcie klawisza myszy lub klawisza Enter, po czym powraca do programu wywołującego lub programu.<br>
This is a modal procedure call, that is the box is displayed, receives focus, and does not relinquish focus until the OK box is clicked or otherwise selected.
+
Jest to modalne wywołanie procedury, to znaczy, że okno jest wyświetlane, otrzymuje fokus i utrzymuje aktywność, dopóki nie zostanie kliknięte pole OK lub nie zostanie wybrana inna opcja.
  
Example:
+
Przykład:
  
 
<syntaxhighlight>program LazMessage;
 
<syntaxhighlight>program LazMessage;
Line 32: Line 32:
 
   Dialogs;
 
   Dialogs;
 
begin
 
begin
   ShowMessage('This is a message from Lazarus');
+
   ShowMessage('To jest wiadomość od Lazarusa');
 
end.</syntaxhighlight>
 
end.</syntaxhighlight>
  
You have the ability to create multilines message using the following line separators, they will all work:
+
Masz też możliwość tworzenia komunikatów w wielu wierszach tekstu za pomocą następujących separatorów linii, wszystkie one będą działać:
 
*sLineBreak
 
*sLineBreak
 
*LineEnding
 
*LineEnding
*or the character code: #13#10
+
*lub za pomocą sekwencji kodów: #13#10
  
'''Multiple lines example:'''
+
'''Przykład użycia dialogu z wieloma wierszami tekstu:'''
  
 
<syntaxhighlight>program LazMessage;
 
<syntaxhighlight>program LazMessage;
Line 46: Line 46:
 
   Dialogs;
 
   Dialogs;
 
begin
 
begin
   ShowMessage('This is a multilines' + sLineBreak + 'message!' );
+
   ShowMessage('To jest wielowierszowy' + sLineBreak + 'komunikat!' );
 
end.</syntaxhighlight>
 
end.</syntaxhighlight>
  
Line 52: Line 52:
 
<syntaxhighlight>function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;</syntaxhighlight>
 
<syntaxhighlight>function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;</syntaxhighlight>
  
{ Defined in Forms.pp as part of TApplication; hence must be called as Application.Messagebox () or using the 'with Application do ...' construct }
+
{ Zdefiniowany jest w pliku Forms.pp jako część TApplication; w związku z tym musi być wywoływana jako Application.Messagebox () lub przy użyciu konstrukcji ''with Application do ...' }
  
Parameters include
+
Opis parametrów
  
* Text: the string that is displayed as a prompt or instruction in the Box;
+
* Text: ciąg znaków, który jest wyświetlany jako monit lub instrukcja w ramce;
* Caption: the string label at the top of the message box;
+
* Caption: etykieta tekstowa występująca u góry okna, jako tytuł okna dialogowego;
* Flags: longint - an integer constructed by adding together various constants to define the contents and behaviour of the box, for example MB_ABORTRETRYIGNORE + MR_ICONQUESTION will cause the application to display a query (?) icon in a box with three buttons: ABORT RETRY IGNORE.
+
* Flags: longint - liczba całkowita, na którą składa się kilka różnych stałych w celu zdefiniowania zawartości i zachowania okna dialogowego, na przykład MB_ABORTRETRYIGNORE + MR_ICONQUESTION spowodują, że aplikacja wyświetli ikonę znaku zapytania (?) w oknie z trzema przyciskami: ABORT RETRY IGNORE.
  
The function returns an integer value corresponding to the button that was pressed; its value can be determined by reference to the constants [IDOK..IDHELP]
+
Funkcja ta zwraca też wartość całkowitą odpowiadającą przyciskowi, który został naciśnięty; jej znaczenie można określić przez porównanie do stałych [IDOK..IDHELP]
  
It can be invoked like a procedure call (ie as a 'MessageBox()' statement rather than as a 'Variable := MessageBox()' function call - see example below)
+
Można go wywołać jak wywołanie procedury (np. jako instrukcję "MessageBox()", albo lepiej jako wywołanie funkcji "Variable := MessageBox()" - patrz przykład poniżej)
  
Example:
+
Przykład:
  
 
<syntaxhighlight>uses  
 
<syntaxhighlight>uses  
Line 74: Line 74:
 
begin
 
begin
 
   BoxStyle := MB_ICONQUESTION + MB_YESNO;
 
   BoxStyle := MB_ICONQUESTION + MB_YESNO;
   Reply := Application.MessageBox('Press either button', 'MessageBoxDemo', BoxStyle);
+
   Reply := Application.MessageBox('Naciśnij wybrany przycisk', 'MessageBoxDemo', BoxStyle);
   if Reply = IDYES then Application.MessageBox('Yes      ', 'Reply',MB_ICONINFORMATION)
+
   if Reply = IDYES then Application.MessageBox('Yes      ', 'Odpowiedź',MB_ICONINFORMATION)
     else Application.MessageBox('No        ', 'Reply', MB_ICONHAND);
+
     else Application.MessageBox('No        ', 'Odpowiedź', MB_ICONHAND);
 
end;</syntaxhighlight>
 
end;</syntaxhighlight>
  
Notice that in this example the 'Yes' and 'No' strings have been padded out with spaces; otherwise the box would not be wide enough to display the caption properly
+
Zauważ, że w tym przykładzie łańcuchy "Tak" i "Nie" zostały sztucznie uzupełnione spacjami; w przeciwnym razie skrzynka nie będzie wystarczająco szeroka, aby prawidłowo wyświetlić napis
  
 
<center> [[image:MessageBoxDemo.png]]  [[image:ReplyYes.png]]
 
<center> [[image:MessageBoxDemo.png]]  [[image:ReplyYes.png]]
Line 91: Line 91:
 
   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;</syntaxhighlight>
 
   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;</syntaxhighlight>
  
Two versions of this function, ie first 'Caption' parameter is optional; if omitted, caption is missing from box
+
Istnieją dwie wersje tej funkcji, gdzie pierwszy parametr 'Caption', jest opcjonalny; jeśli pominięto, w polu brakuje tego napisu
  
This is the most complete and elaborate of the message dialogs, and allows the programmer considerable control over the appearance of the dialog box.
+
Jest to najbardziej kompletny i rozbudowany dialog komunikatów i umożliwia programistom znaczną kontrolę nad wyglądem okna dialogowego.
The parameters defining the kind of box and its icon are types rather than integer constants, and the buttons can be specified as a set in square brackets eg [mbRetry, mbIgnore, mbAbort, mbCancel].
+
Parametry określające rodzaj pola i jego ikony są określonego typu, a nie liczbami całkowitymi, a przyciski można określić jako zbiór w nawiasach kwadratowych, np. [MbRetry, mbIgnore, mbAbort, mbCancel].
The HelpCtx parameter is not currently implemented and should be set to zero.
+
Parametr HelpCtx nie jest obecnie zaimplementowany i powinien być ustawiony na zero.
The return value from the Function is the identity of the button pressed, expressed as an integer (see the definitions below, [mrNone..mrAll]).
+
Wartość zwracana przez funkcję odpowiada naciśniętemu przyciskowi wyrażona jako liczba całkowita (patrz definicje poniżej, [mrNone..mrAll]).
  
Example:
+
Przykład:
  
 
<syntaxhighlight>uses  
 
<syntaxhighlight>uses  
Line 105: Line 105:
 
procedure TryMessageDlg;
 
procedure TryMessageDlg;
 
begin
 
begin
   if MessageDlg('Question', 'Do you wish to Execute?', mtConfirmation,  
+
   if MessageDlg('Pytanie', 'Czy chcesz wykonać?', mtConfirmation,  
 
   [mbYes, mbNo, mbIgnore],0) = mrYes
 
   [mbYes, mbNo, mbIgnore],0) = mrYes
   then { Execute rest of Program };
+
   then { Wykonaj dalszą częś programu };
 
end;</syntaxhighlight>
 
end;</syntaxhighlight>
  
Line 115: Line 115:
  
 
=== QuestionDlg ===
 
=== QuestionDlg ===
Question dialog allows changing button captions and setting default and cancel buttons.
+
Okno dialogowe pytania umożliwia zmianę napisów przycisków oraz ustawienie przycisków domyślnych i anulowania.
Example:
+
Przykład:
 
<syntaxhighlight>
 
<syntaxhighlight>
     case QuestionDlg ('Caption','Message',mtCustom,[mrYes,'Positive', mrNo, 'Negative', 'IsDefault'],'') of
+
     case QuestionDlg ('Nagłówek','Wiadomość',mtCustom,[mrYes,'Pozytywny', mrNo, 'Negatywny', 'IsDefault'],'') of
         mrYes: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[mrOK,'That is right'],'');
+
         mrYes: QuestionDlg ('Nagłówek','Masz na myśli „Tak“',mtCustom,[mrOK,'To prawda'],'');
         mrNo:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[mrOK,'Exactly'],'');
+
         mrNo:  QuestionDlg ('Nagłówek','Och, masz na myśli „Nie“',mtCustom,[mrOK,'Dokładnie'],'');
         mrCancel: QuestionDlg ('Caption','You canceled the dialog with ESC or close button.',mtCustom,[mrOK,'Exactly'],'');
+
         mrCancel: QuestionDlg ('Nagłówek','Anulowałeś dialog za pomocą ESC lub przycisku zamykania.',mtCustom,[mrOK,'Zgadza się'],'');
 
     end;  
 
     end;  
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 127: Line 127:
 
</center>
 
</center>
  
{{Note|If the user cancels the dialog and there is no 'IsCancel' button defined, mrCancel is returned! If you want to redirect ESC/close to a defined button use the 'IsCancel' parameter just after the cancel button.}}
+
{{Uwaga|Jeśli użytkownik anuluje okno dialogowe i nie ma zdefiniowanego przycisku 'IsCancel', to funkcja zwraca wartość mrCancel! Jeśli chcesz przekierować ESC/zamknij do zdefiniowanego przycisku, użyj parametru 'IsCancel' zaraz po przycisku anulowania.}}
{{Note|Using letters of the local alphabet in UnicodeString type as button captions may raise errors (found in v1.6.4).}}
+
{{Uwaga|Używanie liter alfabetu lokalnego typu UnicodeString jako podpisów pod przyciskami może powodować błędy (podane w wersji 1.6.4).}}
  
Advanced examples for buttons (from promptdialog.inc)
+
Zaawansowane przykłady użycia przycisków (z promptdialog.inc)
 
<syntaxhighlight>
 
<syntaxhighlight>
     [mrOk,mrCancel,'Cancel now',mrIgnore,300,'Do it','IsDefault']
+
     [mrOk,mrCancel,'Anuluj teraz',mrIgnore,300,'Zrób to','IsDefault']
 
</syntaxhighlight>
 
</syntaxhighlight>
This will result in 4 buttons:
+
Ten przykład pokazuje 4 przyciski:
* 'Ok' returning mrOk
+
* 'Ok' zwraca mrOk
* 'Cancel now' returning mrCancel
+
* 'Anuluj teraz' zwraca mrCancel
* 'Ignore' returning mrIgnore
+
* 'Ignore' zwraca mrIgnore
* 'Do it' returning 300. This will be the default button (focused)
+
* 'Zrób to' zwraca liczbę 300. To będzie domyślny przycisk (aktywny)
  
Usually buttons in Lazarus dialogs have icons. In order to prevent icons from being shown non standardize values for message results can be used. Currently highest standardized value is 11. For example:
+
Zwykle przyciski w oknach dialogowych lazarusa mają ikony. Aby zapobiec wyświetlaniu ikon, można użyć niestandardowych wartości dla wyników wiadomości.
 +
Obecnie najwyższa ustandaryzowana wartość to 11. Na przykład:
  
 
<syntaxhighlight>
 
<syntaxhighlight>
Line 149: Line 150:
 
   end;
 
   end;
 
</syntaxhighlight>
 
</syntaxhighlight>
In order to facilitate work, constants can be defined. For example:
+
Aby ułatwić pracę, można zdefiniować stałe. Na przykład:
  
 
<syntaxhighlight>
 
<syntaxhighlight>
Line 175: Line 176:
 
<center> [[File:QuestionDlgNoButIcons.png]] </center>
 
<center> [[File:QuestionDlgNoButIcons.png]] </center>
  
== Text input Dialogs==
+
== Dialogi do wprowadzania tekstu==
  
 
===InputBox===
 
===InputBox===
Text input Dialogs: display a message and await user text input
+
Dialogi do wprowadzania tekstu: wyświetlają wiadomość i oczekują na wprowadzanie tekstu przez użytkownika
  
 
<syntaxhighlight>function InputBox(const ACaption, APrompt, ADefault: String): String;</syntaxhighlight>
 
<syntaxhighlight>function InputBox(const ACaption, APrompt, ADefault: String): String;</syntaxhighlight>
  
Displays a box with defined title and prompt, and expects user input in a text box. A default string can optionally be displayed in the text box. The user-entered or default string is returned as the function result.
+
Wyświetla okno dialogowe z określonym tytułem oraz podpowiedzią i oczekuje, że użytkownik wprowadzi dane w polu tekstowym. Domyślny ciąg może być opcjonalnie wyświetlany w polu tekstowym. Jako wynik funkcji zwracany jest ciąg znaków wprowadzony przez użytkownika lub ciąg domyślny.
  
Example:
+
Przykład:
  
 
<syntaxhighlight>uses  
 
<syntaxhighlight>uses  
Line 204: Line 205:
 
   var Value : String) : Boolean;</syntaxhighlight>
 
   var Value : String) : Boolean;</syntaxhighlight>
  
Two versions of this function which displays a prompt and expects user input of textual data; the first includes a MaskInput boolean parameter which determines whether the user input is masked out by asterisks in the text-input box (like during entry of a password), while the second omits this property. The text entered by the user is returned in the variable parameter 'Value'; the function result is a boolean which returns TRUE if the OK button was pressed, or FALSE if the box was closed by any other mechanism (such as clicking the 'Close' icon on the top title bar). Omitting the MaskInput parameter is equivalent to setting it FALSE.
+
Istnieją dwie wersje tej funkcji, która wyświetla monit i oczekuje wprowadzenia danych tekstowych przez użytkownika; pierwsza zawiera parametr MaskInput typu boolean, który określa, czy dane wejściowe użytkownika są maskowane gwiazdkami w polu wprowadzania tekstu (np. podczas wpisywania hasła), podczas gdy drugie pomija tę właściwość. Tekst wprowadzony przez użytkownika jest zwracany w parametrze zmiennym "Wartość"; wynik funkcji jest wartością logiczną, która zwraca wartość TRUE, jeśli został naciśnięty przycisk OK, lub FALSE, jeśli pole zostało zamknięte w inny sposób (taki jak kliknięcie ikony "Zamknij" na górnym pasku tytułu). Pominięcie parametru MaskInput jest równoznaczne z ustawieniem FALSE.
  
Example:
+
Przykład:
  
 
<syntaxhighlight>uses  
 
<syntaxhighlight>uses  
Line 232: Line 233:
 
<syntaxhighlight>Function PasswordBox(const ACaption, APrompt : String) : String;</syntaxhighlight>
 
<syntaxhighlight>Function PasswordBox(const ACaption, APrompt : String) : String;</syntaxhighlight>
  
Behaves very similarly to the InputQuery function with MaskInput = TRUE; the difference is that the password that was typed in is returned as the result of the function (like InputBox).
+
Zachowuje się bardzo podobnie do funkcji InputQuery z MaskInput = TRUE; różnica polega na tym, że hasło, które zostało wpisane, jest zwracane w wyniku działania funkcji (tak jak InputBox).
  
==Constants and Types used in message dialogs==
+
==Stałe i typy używane w oknach dialogowych==
  
Several constants and types relevant for use with the dialog boxes are pre-defined in the LCL library:
+
Kilka stałych i typów istotnych do użycia w oknach dialogowych jest wstępnie zdefiniowanych w bibliotece LCL:
  
const { Defined in LCLType.pp }
+
const { Zdefiniowane w LCLType.pp }
  
integer constants for defining the types of buttons
+
stałe całkowitoliczbowe do definiowania typów przycisków
and the icon for display in MessageBox
+
i ikon do wyświetlania w MessageBox
  
 
<syntaxhighlight>MB_OK = $00000000;
 
<syntaxhighlight>MB_OK = $00000000;
Line 259: Line 260:
 
MB_ICONINFORMATION = MB_ICONASTERICK;</syntaxhighlight>
 
MB_ICONINFORMATION = MB_ICONASTERICK;</syntaxhighlight>
  
integer constants defining the return value from MessageBox according to which button was pressed
+
stałe całkowitoliczbowe określające wartość zwracaną z MessageBox zgodnie z naciśniętym przyciskiem
  
 
<syntaxhighlight>IDOK = 1; ID_OK = IDOK;
 
<syntaxhighlight>IDOK = 1; ID_OK = IDOK;
Line 271: Line 272:
 
IDHELP = 9; ID_HELP = IDHELP;</syntaxhighlight>
 
IDHELP = 9; ID_HELP = IDHELP;</syntaxhighlight>
  
define whether first, second or third button is default
+
Określa, czy pierwszy, drugi czy trzeci przycisk jest domyślny
  
 
<syntaxhighlight>MB_DEFBUTTON1 = $00000000;
 
<syntaxhighlight>MB_DEFBUTTON1 = $00000000;
Line 278: Line 279:
 
MB_DEFBUTTON4 = $00000300;</syntaxhighlight>
 
MB_DEFBUTTON4 = $00000300;</syntaxhighlight>
  
The Flags parameter of MessageBox is constructed by adding a button constant [MB_OK..MB_RETRYCANCEL],
+
Parametr Flags MessageBox jest konstruowany przez dodanie stałej przycisku [MB_OK..MB_RETRYCANCEL],
an optional icon constant [MB_ICONHAND..MB_ICONINFORMATION]
+
opcjonalna stała ikony [MB_ICONHAND..MB_ICONINFORMATION]
and an optional default button constant [MB_DEFBUTTON1..MB_DEFBUTTON3]
+
i opcjonalna stała przycisku domyślnego [MB_DEFBUTTON1..MB_DEFBUTTON3]
  
Types for use in MessageDlg, which needs parameters
+
Typy używane w MessageDlg, które wymagają parametrów
AType of TMsgDlgType and AButtons of TMSgDlgButtons
+
AType TMsgDlgType i AButtons of TMSgDlgButtons
  
  
Line 313: Line 314:
 
   
 
   
 
   
 
   
{ Defined in Controls.pp }
+
{ Zdefiniowane w Controls.pp }
 
const
 
const
 
   mrNone = 0;
 
   mrNone = 0;

Revision as of 14:45, 8 April 2018

Deutsch (de) English (en) español (es) suomi (fi) français (fr) 日本語 (ja) polski (pl) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

Kilka przydatnych okien dialogowych

Oto kilka przydatnych okien dialogowych, których nie znajdziesz w palecie komponentów:

  • procedure ShowMessage (const Msg: string);
  • function MessageBox (Text, Caption : PChar; Flags: Word): Integer;
  • function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
  • function InputBox (const ACaption, APrompt, ADefault: string); string;
  • function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;
  • function PasswordBox(const ACaption, APrompt : String) : String;

Każdy z tych komponentów powoduje wyświetlenie małego okna dialogowego, które zawiera informacje wymagające reakcji użytkownika: naciśnięcie przycisku, wprowadzenie tekstu lub obydwa razem. Programista ma niewielką kontrolę nad formatem, wielkością lub położeniem tych okien dialogowych, ale może wpływać na ich treść tekstową.
Powodem, dla którego istnieje kilka bardzo podobnych okien dialogowych, jest umożliwienie wywoływania tego komponentu różnymi metodami i odbieranie danych z powrotem do procedury lub funkcji. Te okna dialogowe mogą być zależne od platformy, tzn. mogą być wyświetlane inaczej na różnych systemach operacyjnych. Na przykład teksty, które są w pełni wyświetlane w systemie Windows XP, mogą zostać obcięte w systemie Windows 7.

Dialogi wiadomości

Dialogi wiadomości wyświetlają komunikat i czekają na naciśnięcie jakiegoś klawisza lub na kliknięcie myszą.

ShowMessage

procedure ShowMessage(const Msg: string);

{ Zdefiniowany jest w pliku Dialogs.pp }

Najprostsze okno dialogowe wiadomości: pobiera prosty ciąg znaków jako parametr, wyświetla go w stereotypowym oknie i czeka na naciśnięcie klawisza myszy lub klawisza Enter, po czym powraca do programu wywołującego lub programu.
Jest to modalne wywołanie procedury, to znaczy, że okno jest wyświetlane, otrzymuje fokus i utrzymuje aktywność, dopóki nie zostanie kliknięte pole OK lub nie zostanie wybrana inna opcja.

Przykład:

program LazMessage;
uses 
  Dialogs;
begin
  ShowMessage('To jest wiadomość od Lazarusa');
end.

Masz też możliwość tworzenia komunikatów w wielu wierszach tekstu za pomocą następujących separatorów linii, wszystkie one będą działać:

  • sLineBreak
  • LineEnding
  • lub za pomocą sekwencji kodów: #13#10

Przykład użycia dialogu z wieloma wierszami tekstu:

program LazMessage;
uses 
  Dialogs;
begin
  ShowMessage('To jest wielowierszowy' + sLineBreak + 'komunikat!' );
end.

MessageBox

function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;

{ Zdefiniowany jest w pliku Forms.pp jako część TApplication; w związku z tym musi być wywoływana jako Application.Messagebox () lub przy użyciu konstrukcji with Application do ...' }

Opis parametrów

  • Text: ciąg znaków, który jest wyświetlany jako monit lub instrukcja w ramce;
  • Caption: etykieta tekstowa występująca u góry okna, jako tytuł okna dialogowego;
  • Flags: longint - liczba całkowita, na którą składa się kilka różnych stałych w celu zdefiniowania zawartości i zachowania okna dialogowego, na przykład MB_ABORTRETRYIGNORE + MR_ICONQUESTION spowodują, że aplikacja wyświetli ikonę znaku zapytania (?) w oknie z trzema przyciskami: ABORT RETRY IGNORE.

Funkcja ta zwraca też wartość całkowitą odpowiadającą przyciskowi, który został naciśnięty; jej znaczenie można określić przez porównanie do stałych [IDOK..IDHELP]

Można go wywołać jak wywołanie procedury (np. jako instrukcję "MessageBox()", albo lepiej jako wywołanie funkcji "Variable := MessageBox()" - patrz przykład poniżej)

Przykład:

uses 
  Forms, Dialogs, LCLType;
 
procedure DisplayMessageBox;
var 
  Reply, BoxStyle: Integer;
begin
  BoxStyle := MB_ICONQUESTION + MB_YESNO;
  Reply := Application.MessageBox('Naciśnij wybrany przycisk', 'MessageBoxDemo', BoxStyle);
  if Reply = IDYES then Application.MessageBox('Yes       ', 'Odpowiedź',MB_ICONINFORMATION)
    else Application.MessageBox('No         ', 'Odpowiedź', MB_ICONHAND);
end;

Zauważ, że w tym przykładzie łańcuchy "Tak" i "Nie" zostały sztucznie uzupełnione spacjami; w przeciwnym razie skrzynka nie będzie wystarczająco szeroka, aby prawidłowo wyświetlić napis

MessageBoxDemo.png ReplyYes.png

MessageDLG

function MessageDlg(const aMsg: string; DlgType: TMsgDlgType; 
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; 
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;

Istnieją dwie wersje tej funkcji, gdzie pierwszy parametr 'Caption', jest opcjonalny; jeśli pominięto, w polu brakuje tego napisu

Jest to najbardziej kompletny i rozbudowany dialog komunikatów i umożliwia programistom znaczną kontrolę nad wyglądem okna dialogowego. Parametry określające rodzaj pola i jego ikony są określonego typu, a nie liczbami całkowitymi, a przyciski można określić jako zbiór w nawiasach kwadratowych, np. [MbRetry, mbIgnore, mbAbort, mbCancel]. Parametr HelpCtx nie jest obecnie zaimplementowany i powinien być ustawiony na zero. Wartość zwracana przez funkcję odpowiada naciśniętemu przyciskowi wyrażona jako liczba całkowita (patrz definicje poniżej, [mrNone..mrAll]).

Przykład:

uses 
  Forms, Dialogs, LCLType, Controls;
 
procedure TryMessageDlg;
begin
  if MessageDlg('Pytanie', 'Czy chcesz wykonać?', mtConfirmation, 
   [mbYes, mbNo, mbIgnore],0) = mrYes
  then { Wykonaj dalszą częś programu };
end;
Question.png


QuestionDlg

Okno dialogowe pytania umożliwia zmianę napisów przycisków oraz ustawienie przycisków domyślnych i anulowania. Przykład:

    case QuestionDlg ('Nagłówek','Wiadomość',mtCustom,[mrYes,'Pozytywny', mrNo, 'Negatywny', 'IsDefault'],'') of
        mrYes: QuestionDlg ('Nagłówek','Masz na myśli „Tak“',mtCustom,[mrOK,'To prawda'],'');
        mrNo:  QuestionDlg ('Nagłówek','Och, masz na myśli „Nie“',mtCustom,[mrOK,'Dokładnie'],'');
        mrCancel: QuestionDlg ('Nagłówek','Anulowałeś dialog za pomocą ESC lub przycisku zamykania.',mtCustom,[mrOK,'Zgadza się'],'');
    end;
QuestionDlg.png

Template:Uwaga Template:Uwaga

Zaawansowane przykłady użycia przycisków (z promptdialog.inc)

    [mrOk,mrCancel,'Anuluj teraz',mrIgnore,300,'Zrób to','IsDefault']

Ten przykład pokazuje 4 przyciski:

  • 'Ok' zwraca mrOk
  • 'Anuluj teraz' zwraca mrCancel
  • 'Ignore' zwraca mrIgnore
  • 'Zrób to' zwraca liczbę 300. To będzie domyślny przycisk (aktywny)

Zwykle przyciski w oknach dialogowych lazarusa mają ikony. Aby zapobiec wyświetlaniu ikon, można użyć niestandardowych wartości dla wyników wiadomości. Obecnie najwyższa ustandaryzowana wartość to 11. Na przykład:

  case QuestionDlg ('Caption','Message',mtCustom,[20,'Positive', 21, 'Negative',22,'I do not know','IsCancel'],'') of
     20: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[20,'That is right'],'');
     21:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[21,'Exactly'],'');
     22:  QuestionDlg ('Caption','So, please find out!',mtCustom,[22,'Maybe'],'');
  end;

Aby ułatwić pracę, można zdefiniować stałe. Na przykład:

const
  mrNoneNI=      20;
  mrOkNI=        mrNoneNI+1;
  mrCancelNI=    mrNoneNI+2;
  mrAbortNI=     mrNoneNI+3;
  mrRetryNI=     mrNoneNI+4;
  mrIgnoreNI=    mrNoneNI+5;
  mrYesNI=       mrNoneNI+6;
  mrNoNI=        mrNoneNI+7;
  mrAllNI=       mrNoneNI+8;
  mrYesToAllNI=  mrNoneNI+10;
  mrCloseNI=     mrNoneNI+11;
  mrLastNI=      mrCloseNI; 
begin
  case QuestionDlg ('Caption','Message',mtCustom,[mrYesNI,'Positive', mrNoNI, 'Negative',mrCancelNI,'I do not know','IsCancel'],'') of
    mrYesNI: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[mrYesNI,'That is right'],'');
    mrNoNI:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[mrNoNI,'Exactly'],'');
    mrCancelNI:  QuestionDlg ('Caption','So, please find out!',mtCustom,[mrCancelNI,'Maybe'],'');
  end; //case
end;
QuestionDlgNoButIcons.png

Dialogi do wprowadzania tekstu

InputBox

Dialogi do wprowadzania tekstu: wyświetlają wiadomość i oczekują na wprowadzanie tekstu przez użytkownika

function InputBox(const ACaption, APrompt, ADefault: String): String;

Wyświetla okno dialogowe z określonym tytułem oraz podpowiedzią i oczekuje, że użytkownik wprowadzi dane w polu tekstowym. Domyślny ciąg może być opcjonalnie wyświetlany w polu tekstowym. Jako wynik funkcji zwracany jest ciąg znaków wprowadzony przez użytkownika lub ciąg domyślny.

Przykład:

uses 
  Forms, LCLType, Dialogs, Controls;
 
procedure TryInputBox;
var 
  UserString: string;
begin
  UserString := InputBox('Get some text input', 
    'Please type in some information', 'Some sample text');
  ShowMessage(UserString)
end;

InputQuery

function InputQuery(const ACaption, APrompt : String;
  MaskInput : Boolean; var Value : String) : Boolean;
function InputQuery(const ACaption, APrompt : String;
  var Value : String) : Boolean;

Istnieją dwie wersje tej funkcji, która wyświetla monit i oczekuje wprowadzenia danych tekstowych przez użytkownika; pierwsza zawiera parametr MaskInput typu boolean, który określa, czy dane wejściowe użytkownika są maskowane gwiazdkami w polu wprowadzania tekstu (np. podczas wpisywania hasła), podczas gdy drugie pomija tę właściwość. Tekst wprowadzony przez użytkownika jest zwracany w parametrze zmiennym "Wartość"; wynik funkcji jest wartością logiczną, która zwraca wartość TRUE, jeśli został naciśnięty przycisk OK, lub FALSE, jeśli pole zostało zamknięte w inny sposób (taki jak kliknięcie ikony "Zamknij" na górnym pasku tytułu). Pominięcie parametru MaskInput jest równoznaczne z ustawieniem FALSE.

Przykład:

uses 
  Forms, LCLType, Dialogs, Controls;
 
procedure TryInputQuery;
var 
  QueryResult: Boolean;
  UserString: string;
begin
  if InputQuery('Question', 'Type in some data', TRUE, UserString)
  then ShowMessage(UserString)
  else 
  begin
    InputQuery('Don''t be silly', 'Please try again', UserString);
    ShowMessage(UserString);
  end
end;
MessageDlgQuestion.png
DontBeSillly.png

PasswordBox

Function PasswordBox(const ACaption, APrompt : String) : String;

Zachowuje się bardzo podobnie do funkcji InputQuery z MaskInput = TRUE; różnica polega na tym, że hasło, które zostało wpisane, jest zwracane w wyniku działania funkcji (tak jak InputBox).

Stałe i typy używane w oknach dialogowych

Kilka stałych i typów istotnych do użycia w oknach dialogowych jest wstępnie zdefiniowanych w bibliotece LCL:

const { Zdefiniowane w LCLType.pp }

stałe całkowitoliczbowe do definiowania typów przycisków i ikon do wyświetlania w MessageBox

MB_OK = $00000000;
MB_OKCANCEL = $00000001;
MB_ABORTRETRYIGNORE = $00000002;
MB_YESNOCANCEL = $00000003;
MB_YESNO = $00000004;
MB_RETRYCANCEL = $00000005;

 
MB_ICONHAND = $00000010;
MB_ICONQUESTION = $00000020;
MB_ICONEXCLAMATION = $00000030;
MB_ICONASTERICK = $00000040;
MB_ICONWARNING = MB_ICONEXCLAMATION;
MB_ICONERROR = MB_ICONHAND;
MB_ICONINFORMATION = MB_ICONASTERICK;

stałe całkowitoliczbowe określające wartość zwracaną z MessageBox zgodnie z naciśniętym przyciskiem

IDOK = 1; 	ID_OK = IDOK;
IDCANCEL = 2;	ID_CANCEL = IDCANCEL;
IDABORT = 3;	ID_ABORT = IDABORT;
IDRETRY = 4;	ID_RETRY = IDRETRY;
IDIGNORE = 5;	ID_IGNORE = IDIGNORE;
IDYES = 6;	ID_YES = IDYES;
IDNO = 7;	ID_NO = IDNO;
IDCLOSE = 8;	ID_CLOSE = IDCLOSE;
IDHELP = 9;	ID_HELP = IDHELP;

Określa, czy pierwszy, drugi czy trzeci przycisk jest domyślny

MB_DEFBUTTON1 = $00000000;
MB_DEFBUTTON2 = $00000100;
MB_DEFBUTTON3 = $00000200;
MB_DEFBUTTON4 = $00000300;

Parametr Flags MessageBox jest konstruowany przez dodanie stałej przycisku [MB_OK..MB_RETRYCANCEL], opcjonalna stała ikony [MB_ICONHAND..MB_ICONINFORMATION] i opcjonalna stała przycisku domyślnego [MB_DEFBUTTON1..MB_DEFBUTTON3]

Typy używane w MessageDlg, które wymagają parametrów AType TMsgDlgType i AButtons of TMSgDlgButtons


{ Defined in Dialogs.pp }
type
  TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
                    mtCustom);
  TMsgDlgBtn     = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
                   mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
  TMsgDlgButtons = set of TMsgDlgBtn;
  
 
const
  mbYesNoCancel = [mbYes, mbNo, mbCancel];
  mbOKCancel = [mbOK, mbCancel];
  mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
  
 
  MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (
   bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,
    bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose
   );
 
 
  BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (
    mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,
    mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll
    );
 
 
{ Zdefiniowane w Controls.pp }
const
  mrNone = 0;
  mrOK = mrNone + 1;
  mrCancel = mrNone + 2;
  mrAbort = mrNone + 3;
  mrRetry = mrNone + 4;
  mrIgnore = mrNone + 5;
  mrYes = mrNone + 6;
  mrNo = mrNone + 7;
  mrAll = mrNone + 8;
  mrNoToAll = mrNone + 9;
  mrYesToAll = mrNone + 10;
  mrLast = mrYesToAll;