Difference between revisions of "Dialog Examples/pl"

From Free Pascal wiki
Jump to navigationJump to search
(Wstępne tłumaczenie tekstu ze strony angielskiej "en".)
(add polish title)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{Dialog Examples}}
 
{{Dialog Examples}}
  
 +
<div style="font-size:1.88em;margin:0.75em 0;">Przykłady użycia okien dialogowych</div>
 
= Kilka przydatnych okien dialogowych=
 
= Kilka przydatnych okien dialogowych=
 
Oto kilka przydatnych okien dialogowych, których nie znajdziesz w palecie komponentów:
 
Oto kilka przydatnych okien dialogowych, których nie znajdziesz w palecie komponentów:
Line 19: Line 20:
  
 
===ShowMessage===
 
===ShowMessage===
<syntaxhighlight>procedure ShowMessage(const Msg: string);</syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>procedure ShowMessage(const Msg: string);</syntaxhighlight>
 
   
 
   
 
{ Zdefiniowany jest w pliku Dialogs.pp }
 
{ Zdefiniowany jest w pliku Dialogs.pp }
Line 28: Line 30:
 
Przykład:
 
Przykład:
  
<syntaxhighlight>program LazMessage;
+
<syntaxhighlight lang=pascal>
 +
program LazMessage;
 
uses  
 
uses  
 
   Dialogs;
 
   Dialogs;
Line 42: Line 45:
 
'''Przykład użycia dialogu z wieloma wierszami tekstu:'''
 
'''Przykład użycia dialogu z wieloma wierszami tekstu:'''
  
<syntaxhighlight>program LazMessage;
+
<syntaxhighlight lang=pascal>
 +
program LazMessage;
 
uses  
 
uses  
 
   Dialogs;
 
   Dialogs;
Line 50: Line 54:
  
 
===MessageBox===
 
===MessageBox===
<syntaxhighlight>function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;</syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 +
function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;</syntaxhighlight>
  
 
{ 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 ...' }
 
{ 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 ...' }
Line 66: Line 72:
 
Przykład:
 
Przykład:
  
<syntaxhighlight>uses  
+
<syntaxhighlight lang=pascal>
 +
uses  
 
   Forms, Dialogs, LCLType;
 
   Forms, Dialogs, LCLType;
 
   
 
   
Line 86: Line 93:
 
===MessageDLG===
 
===MessageDLG===
  
<syntaxhighlight>function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;  
+
<syntaxhighlight lang=pascal>
 +
function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;  
 
   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 
   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 
function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;  
 
function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;  
Line 100: Line 108:
 
Przykład:
 
Przykład:
  
<syntaxhighlight>uses  
+
<syntaxhighlight lang=pascal>
 +
uses  
 
   Forms, Dialogs, LCLType, Controls;
 
   Forms, Dialogs, LCLType, Controls;
 
   
 
   
Line 117: Line 126:
 
Okno dialogowe pytania umożliwia zmianę napisów przycisków oraz ustawienie przycisków domyślnych i anulowania.
 
Okno dialogowe pytania umożliwia zmianę napisów przycisków oraz ustawienie przycisków domyślnych i anulowania.
 
Przykład:
 
Przykład:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
     case QuestionDlg ('Nagłówek','Wiadomość',mtCustom,[mrYes,'Pozytywny', mrNo, 'Negatywny', 'IsDefault'],'') of
 
     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'],'');
 
         mrYes: QuestionDlg ('Nagłówek','Masz na myśli „Tak“',mtCustom,[mrOK,'To prawda'],'');
Line 127: Line 137:
 
</center>
 
</center>
  
{{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|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.}}
{{Uwaga|Używanie liter alfabetu lokalnego typu UnicodeString jako podpisów pod przyciskami może powodować błędy (podane w wersji 1.6.4).}}
+
{{Note|Używanie liter alfabetu lokalnego typu UnicodeString jako podpisów pod przyciskami może powodować błędy (podane w wersji 1.6.4).}}
  
 
Zaawansowane przykłady użycia przycisków (z promptdialog.inc)
 
Zaawansowane przykłady użycia przycisków (z promptdialog.inc)
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
     [mrOk,mrCancel,'Anuluj teraz',mrIgnore,300,'Zrób to','IsDefault']
 
     [mrOk,mrCancel,'Anuluj teraz',mrIgnore,300,'Zrób to','IsDefault']
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 143: Line 154:
 
Obecnie najwyższa ustandaryzowana wartość to 11. Na przykład:
 
Obecnie najwyższa ustandaryzowana wartość to 11. Na przykład:
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
   case QuestionDlg ('Caption','Message',mtCustom,[20,'Positive', 21, 'Negative',22,'I do not know','IsCancel'],'') of
 
   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'],'');
 
     20: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[20,'That is right'],'');
Line 152: Line 163:
 
Aby ułatwić pracę, można zdefiniować stałe. Na przykład:
 
Aby ułatwić pracę, można zdefiniować stałe. Na przykład:
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
const
 
const
 
   mrNoneNI=      20;
 
   mrNoneNI=      20;
Line 181: Line 192:
 
Dialogi do wprowadzania tekstu: wyświetlają wiadomość i oczekują na wprowadzanie tekstu przez użytkownika
 
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 lang=pascal>function InputBox(const ACaption, APrompt, ADefault: String): String;</syntaxhighlight>
  
 
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.
 
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.
Line 187: Line 198:
 
Przykład:
 
Przykład:
  
<syntaxhighlight>uses  
+
<syntaxhighlight lang=pascal>
 +
uses  
 
   Forms, LCLType, Dialogs, Controls;
 
   Forms, LCLType, Dialogs, Controls;
 
   
 
   
Line 194: Line 206:
 
   UserString: string;
 
   UserString: string;
 
begin
 
begin
   UserString := InputBox('Get some text input',  
+
   UserString := InputBox('Podaj tytuł okna InputBox',  
     'Please type in some information', 'Some sample text');
+
     'Tu wprowadź wyświetlaną infomację', 'Tekst domyślny');
 
   ShowMessage(UserString)
 
   ShowMessage(UserString)
 
end;</syntaxhighlight>
 
end;</syntaxhighlight>
  
 
===InputQuery===
 
===InputQuery===
<syntaxhighlight>function InputQuery(const ACaption, APrompt : String;
+
<syntaxhighlight lang=pascal>
 +
function InputQuery(const ACaption, APrompt : String;
 
   MaskInput : Boolean; var Value : String) : Boolean;
 
   MaskInput : Boolean; var Value : String) : Boolean;
 
function InputQuery(const ACaption, APrompt : String;
 
function InputQuery(const ACaption, APrompt : String;
Line 209: Line 222:
 
Przykład:
 
Przykład:
  
<syntaxhighlight>uses  
+
<syntaxhighlight lang=pascal>
 +
uses  
 
   Forms, LCLType, Dialogs, Controls;
 
   Forms, LCLType, Dialogs, Controls;
 
   
 
   
Line 231: Line 245:
  
 
===PasswordBox===
 
===PasswordBox===
<syntaxhighlight>Function PasswordBox(const ACaption, APrompt : String) : String;</syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>Function PasswordBox(const ACaption, APrompt : String) : String;</syntaxhighlight>
  
 
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).
 
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).
Line 244: Line 259:
 
i ikon do wyświetlania w MessageBox
 
i ikon do wyświetlania w MessageBox
  
<syntaxhighlight>MB_OK = $00000000;
+
<syntaxhighlight lang=pascal>
 +
MB_OK = $00000000;
 
MB_OKCANCEL = $00000001;
 
MB_OKCANCEL = $00000001;
 
MB_ABORTRETRYIGNORE = $00000002;
 
MB_ABORTRETRYIGNORE = $00000002;
Line 262: Line 278:
 
stałe całkowitoliczbowe określające wartość zwracaną z MessageBox zgodnie z naciśniętym przyciskiem
 
stałe całkowitoliczbowe określające wartość zwracaną z MessageBox zgodnie z naciśniętym przyciskiem
  
<syntaxhighlight>IDOK = 1; ID_OK = IDOK;
+
<syntaxhighlight lang=pascal>
 +
IDOK = 1; ID_OK = IDOK;
 
IDCANCEL = 2; ID_CANCEL = IDCANCEL;
 
IDCANCEL = 2; ID_CANCEL = IDCANCEL;
 
IDABORT = 3; ID_ABORT = IDABORT;
 
IDABORT = 3; ID_ABORT = IDABORT;
Line 274: Line 291:
 
Określa, czy pierwszy, drugi czy trzeci przycisk jest domyślny
 
Określa, czy pierwszy, drugi czy trzeci przycisk jest domyślny
  
<syntaxhighlight>MB_DEFBUTTON1 = $00000000;
+
<syntaxhighlight lang=pascal>
 +
MB_DEFBUTTON1 = $00000000;
 
MB_DEFBUTTON2 = $00000100;
 
MB_DEFBUTTON2 = $00000100;
 
MB_DEFBUTTON3 = $00000200;
 
MB_DEFBUTTON3 = $00000200;
Line 287: Line 305:
  
  
<syntaxhighlight>{ Defined in Dialogs.pp }
+
<syntaxhighlight lang=pascal>
 +
{ Defined in Dialogs.pp }
 
type
 
type
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
Line 329: Line 348:
 
   mrLast = mrYesToAll;</syntaxhighlight>
 
   mrLast = mrYesToAll;</syntaxhighlight>
  
[[Category:LCL]]
+
 
[[Category:GUI]]
+
'''Tłumaczenie'''
 +
 
 +
Na język polski przełożył: --[[User:Slawek|Sławomir Załęcki]] ([[User talk:Slawek|talk]]) 11:19, 17 April 2018 (CEST)

Latest revision as of 02:01, 5 February 2022

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

Przykłady użycia okien dialogowych

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
Light bulb  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.
Light bulb  Uwaga: Używanie liter alfabetu lokalnego typu UnicodeString jako podpisów pod przyciskami może powodować błędy (podane w wersji 1.6.4).

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('Podaj tytuł okna InputBox', 
    'Tu wprowadź wyświetlaną infomację', 'Tekst domyślny');
  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;


Tłumaczenie

Na język polski przełożył: --Sławomir Załęcki (talk) 11:19, 17 April 2018 (CEST)