Sign in Join
Wiki copytemporary

Dialog Examples/pl: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Dialog Examples/pl

OldNewLine
1+<div style="font-size:1.88em;margin:0.75em 0;">
2+
3+Przykłady użycia okien dialogowych
4+
5+</div>
6+
7+# Kilka przydatnych okien dialogowych
8+
9+Oto kilka przydatnych okien dialogowych, których nie znajdziesz w palecie komponentów:
10+
11+- procedure ShowMessage (const Msg: string);
12+- function MessageBox (Text, Caption : PChar; Flags: Word): Integer;
13+- function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
14+- function InputBox (const ACaption, APrompt, ADefault: string); string;
15+- function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;
16+- function PasswordBox(const ACaption, APrompt : String) : String;
17+
18+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ą.\
19+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.
20+
21+## Dialogi wiadomości
22+
23+Dialogi wiadomości wyświetlają komunikat i czekają na naciśnięcie jakiegoś klawisza lub na kliknięcie myszą.
24+
25+### ShowMessage
26+
27+``` pascal
28+procedure ShowMessage(const Msg: string);
29+```
30+
31+{ Zdefiniowany jest w pliku Dialogs.pp }
32+
33+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.\
34+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.
35+
36+Przykład:
37+
38+``` pascal
39+program LazMessage;
40+uses
41+ Dialogs;
42+begin
43+ ShowMessage('To jest wiadomość od Lazarusa');
44+end.
45+```
46+
47+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ć:
48+
49+- sLineBreak
50+- LineEnding
51+- lub za pomocą sekwencji kodów: \#13#10
52+
53+**Przykład użycia dialogu z wieloma wierszami tekstu:**
54+
55+``` pascal
56+program LazMessage;
57+uses
58+ Dialogs;
59+begin
60+ ShowMessage('To jest wielowierszowy' + sLineBreak + 'komunikat!' );
61+end.
62+```
63+
64+### MessageBox
65+
66+``` pascal
67+function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;
68+```
69+
70+{ 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 ...' }
71+
72+Opis parametrów
73+
74+- Text: ciąg znaków, który jest wyświetlany jako monit lub instrukcja w ramce;
75+- Caption: etykieta tekstowa występująca u góry okna, jako tytuł okna dialogowego;
76+- 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.
77+
78+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\]
79+
80+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)
81+
82+Przykład:
83+
84+``` pascal
85+uses
86+ Forms, Dialogs, LCLType;
87+
88+procedure DisplayMessageBox;
89+var
90+ Reply, BoxStyle: Integer;
91+begin
92+ BoxStyle := MB_ICONQUESTION + MB_YESNO;
93+ Reply := Application.MessageBox('Naciśnij wybrany przycisk', 'MessageBoxDemo', BoxStyle);
94+ if Reply = IDYES then Application.MessageBox('Yes ', 'Odpowiedź',MB_ICONINFORMATION)
95+ else Application.MessageBox('No ', 'Odpowiedź', MB_ICONHAND);
96+end;
97+```
98+
99+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
100+
101+<center>
102+
103+![](/wiki-images/c/c2/MessageBoxDemo.png) ![](/wiki-images/0/06/ReplyYes.png)
104+
105+</center>
106+
107+### MessageDLG
108+
109+``` pascal
110+function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
111+ Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
112+function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;
113+ Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
114+```
115+
116+Istnieją dwie wersje tej funkcji, gdzie pierwszy parametr 'Caption', jest opcjonalny; jeśli pominięto, w polu brakuje tego napisu
117+
118+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\]).
119+
120+Przykład:
121+
122+``` pascal
123+uses
124+ Forms, Dialogs, LCLType, Controls;
125+
126+procedure TryMessageDlg;
127+begin
128+ if MessageDlg('Pytanie', 'Czy chcesz wykonać?', mtConfirmation,
129+ [mbYes, mbNo, mbIgnore],0) = mrYes
130+ then { Wykonaj dalszą częś programu };
131+end;
132+```
133+
134+<center>
135+
136+<figure>
137+<img src="Question.png" title="Question.png" />
138+<figcaption>Question.png</figcaption>
139+</figure>
140+
141+</center>
142+
143+### QuestionDlg
144+
145+Okno dialogowe pytania umożliwia zmianę napisów przycisków oraz ustawienie przycisków domyślnych i anulowania. Przykład:
146+
147+``` pascal
148+ case QuestionDlg ('Nagłówek','Wiadomość',mtCustom,[mrYes,'Pozytywny', mrNo, 'Negatywny', 'IsDefault'],'') of
149+ mrYes: QuestionDlg ('Nagłówek','Masz na myśli „Tak“',mtCustom,[mrOK,'To prawda'],'');
150+ mrNo: QuestionDlg ('Nagłówek','Och, masz na myśli „Nie“',mtCustom,[mrOK,'Dokładnie'],'');
151+ mrCancel: QuestionDlg ('Nagłówek','Anulowałeś dialog za pomocą ESC lub przycisku zamykania.',mtCustom,[mrOK,'Zgadza się'],'');
152+ end;
153+```
154+
155+<center>
156+
157+<figure>
158+<img src="QuestionDlg.png" title="QuestionDlg.png" />
159+<figcaption>QuestionDlg.png</figcaption>
160+</figure>
161+
162+</center>
163+
164+> **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.
165+
166+> **Note:** Używanie liter alfabetu lokalnego typu UnicodeString jako podpisów pod przyciskami może powodować błędy (podane w wersji 1.6.4).
167+
168+Zaawansowane przykłady użycia przycisków (z promptdialog.inc)
169+
170+``` pascal
171+ [mrOk,mrCancel,'Anuluj teraz',mrIgnore,300,'Zrób to','IsDefault']
172+```
173+
174+Ten przykład pokazuje 4 przyciski:
175+
176+- 'Ok' zwraca mrOk
177+- 'Anuluj teraz' zwraca mrCancel
178+- 'Ignore' zwraca mrIgnore
179+- 'Zrób to' zwraca liczbę 300. To będzie domyślny przycisk (aktywny)
180+
181+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:
182+
183+``` pascal
184+ case QuestionDlg ('Caption','Message',mtCustom,[20,'Positive', 21, 'Negative',22,'I do not know','IsCancel'],'') of
185+ 20: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[20,'That is right'],'');
186+ 21: QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[21,'Exactly'],'');
187+ 22: QuestionDlg ('Caption','So, please find out!',mtCustom,[22,'Maybe'],'');
188+ end;
189+```
190+
191+Aby ułatwić pracę, można zdefiniować stałe. Na przykład:
192+
193+``` pascal
194+const
195+ mrNoneNI= 20;
196+ mrOkNI= mrNoneNI+1;
197+ mrCancelNI= mrNoneNI+2;
198+ mrAbortNI= mrNoneNI+3;
199+ mrRetryNI= mrNoneNI+4;
200+ mrIgnoreNI= mrNoneNI+5;
201+ mrYesNI= mrNoneNI+6;
202+ mrNoNI= mrNoneNI+7;
203+ mrAllNI= mrNoneNI+8;
204+ mrYesToAllNI= mrNoneNI+10;
205+ mrCloseNI= mrNoneNI+11;
206+ mrLastNI= mrCloseNI;
207+begin
208+ case QuestionDlg ('Caption','Message',mtCustom,[mrYesNI,'Positive', mrNoNI, 'Negative',mrCancelNI,'I do not know','IsCancel'],'') of
209+ mrYesNI: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[mrYesNI,'That is right'],'');
210+ mrNoNI: QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[mrNoNI,'Exactly'],'');
211+ mrCancelNI: QuestionDlg ('Caption','So, please find out!',mtCustom,[mrCancelNI,'Maybe'],'');
212+ end; //case
213+end;
214+```
215+
216+<center>
217+
218+<figure>
219+<img src="QuestionDlgNoButIcons.png" title="QuestionDlgNoButIcons.png" />
220+<figcaption>QuestionDlgNoButIcons.png</figcaption>
221+</figure>
222+
223+</center>
224+
225+## Dialogi do wprowadzania tekstu
226+
227+### InputBox
228+
229+Dialogi do wprowadzania tekstu: wyświetlają wiadomość i oczekują na wprowadzanie tekstu przez użytkownika
230+
231+``` pascal
232+function InputBox(const ACaption, APrompt, ADefault: String): String;
233+```
234+
235+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.
236+
237+Przykład:
238+
239+``` pascal
240+uses
241+ Forms, LCLType, Dialogs, Controls;
242+
243+procedure TryInputBox;
244+var
245+ UserString: string;
246+begin
247+ UserString := InputBox('Podaj tytuł okna InputBox',
248+ 'Tu wprowadź wyświetlaną infomację', 'Tekst domyślny');
249+ ShowMessage(UserString)
250+end;
251+```
252+
253+### InputQuery
254+
255+``` pascal
256+function InputQuery(const ACaption, APrompt : String;
257+ MaskInput : Boolean; var Value : String) : Boolean;
258+function InputQuery(const ACaption, APrompt : String;
259+ var Value : String) : Boolean;
260+```
261+
262+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.
263+
264+Przykład:
265+
266+``` pascal
267+uses
268+ Forms, LCLType, Dialogs, Controls;
269+
270+procedure TryInputQuery;
271+var
272+ QueryResult: Boolean;
273+ UserString: string;
274+begin
275+ if InputQuery('Question', 'Type in some data', TRUE, UserString)
276+ then ShowMessage(UserString)
277+ else
278+ begin
279+ InputQuery('Don''t be silly', 'Please try again', UserString);
280+ ShowMessage(UserString);
281+ end
282+end;
283+```
284+
285+<center>
286+
287+<figure>
288+<img src="MessageDlgQuestion.png" title="MessageDlgQuestion.png" />
289+<figcaption>MessageDlgQuestion.png</figcaption>
290+</figure>
291+
292+</center>
293+
294+<center>
295+
296+<figure>
297+<img src="DontBeSillly.png" title="DontBeSillly.png" />
298+<figcaption>DontBeSillly.png</figcaption>
299+</figure>
300+
301+</center>
302+
303+### PasswordBox
304+
305+``` pascal
306+Function PasswordBox(const ACaption, APrompt : String) : String;
307+```
308+
309+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).
310+
311+## Stałe i typy używane w oknach dialogowych
312+
313+Kilka stałych i typów istotnych do użycia w oknach dialogowych jest wstępnie zdefiniowanych w bibliotece LCL:
314+
315+const { Zdefiniowane w LCLType.pp }
316+
317+stałe całkowitoliczbowe do definiowania typów przycisków i ikon do wyświetlania w MessageBox
318+
319+``` pascal
320+MB_OK = $00000000;
321+MB_OKCANCEL = $00000001;
322+MB_ABORTRETRYIGNORE = $00000002;
323+MB_YESNOCANCEL = $00000003;
324+MB_YESNO = $00000004;
325+MB_RETRYCANCEL = $00000005;
326+
327+
328+MB_ICONHAND = $00000010;
329+MB_ICONQUESTION = $00000020;
330+MB_ICONEXCLAMATION = $00000030;
331+MB_ICONASTERICK = $00000040;
332+MB_ICONWARNING = MB_ICONEXCLAMATION;
333+MB_ICONERROR = MB_ICONHAND;
334+MB_ICONINFORMATION = MB_ICONASTERICK;
335+```
336+
337+stałe całkowitoliczbowe określające wartość zwracaną z MessageBox zgodnie z naciśniętym przyciskiem
338+
339+``` pascal
340+IDOK = 1; ID_OK = IDOK;
341+IDCANCEL = 2; ID_CANCEL = IDCANCEL;
342+IDABORT = 3; ID_ABORT = IDABORT;
343+IDRETRY = 4; ID_RETRY = IDRETRY;
344+IDIGNORE = 5; ID_IGNORE = IDIGNORE;
345+IDYES = 6; ID_YES = IDYES;
346+IDNO = 7; ID_NO = IDNO;
347+IDCLOSE = 8; ID_CLOSE = IDCLOSE;
348+IDHELP = 9; ID_HELP = IDHELP;
349+```
350+
351+Określa, czy pierwszy, drugi czy trzeci przycisk jest domyślny
352+
353+``` pascal
354+MB_DEFBUTTON1 = $00000000;
355+MB_DEFBUTTON2 = $00000100;
356+MB_DEFBUTTON3 = $00000200;
357+MB_DEFBUTTON4 = $00000300;
358+```
359+
360+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\]
361+
362+Typy używane w MessageDlg, które wymagają parametrów AType TMsgDlgType i AButtons of TMSgDlgButtons
363+
364+``` pascal
365+{ Defined in Dialogs.pp }
366+type
367+ TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation,
368+ mtCustom);
369+ TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
370+ mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
371+ TMsgDlgButtons = set of TMsgDlgBtn;
372+
373+
374+const
375+ mbYesNoCancel = [mbYes, mbNo, mbCancel];
376+ mbOKCancel = [mbOK, mbCancel];
377+ mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
378+
379+
380+ MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (
381+ bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,
382+ bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose
383+ );
384+
385+
386+ BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (
387+ mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,
388+ mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll
389+ );
390+
391+
392+{ Zdefiniowane w Controls.pp }
393+const
394+ mrNone = 0;
395+ mrOK = mrNone + 1;
396+ mrCancel = mrNone + 2;
397+ mrAbort = mrNone + 3;
398+ mrRetry = mrNone + 4;
399+ mrIgnore = mrNone + 5;
400+ mrYes = mrNone + 6;
401+ mrNo = mrNone + 7;
402+ mrAll = mrNone + 8;
403+ mrNoToAll = mrNone + 9;
404+ mrYesToAll = mrNone + 10;
405+ mrLast = mrYesToAll;
406+```
407+
408+**Tłumaczenie**
409+
410+Na język polski przełożył: --Sławomir Załęcki ([[User talk:Slawek|talk]]) 11:19, 17 April 2018 (CEST)
411+
412+---
413+*From the Free Pascal wiki, page "Dialog Examples/pl", as it stood on 2022-02-05 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history