Sign in Join
Wiki copytemporary

Dialog Examples/de: what changed

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

Title: Dialog Examples/de

OldNewLine
1+## Contents
2+
3+ * 1 Einige nützliche Dialoge
4+ * 1.1 Nachrichten-Dialoge
5+ * 1.1.1 ShowMessage
6+ * 1.1.2 MessageBox
7+ * 1.1.3 MessageDLG
8+ * 1.2 Texteingabe-Dialoge
9+ * 1.2.1 InputBox
10+ * 1.2.2 InputQuery
11+ * 1.2.3 PasswordBox
12+ * 1.3 Konstanten und Typen in den Nachrichtendialogen
13+
14+# Einige nützliche Dialoge
15+
16+Dies sind einige nützliche Dialoge, die nicht in der Komponentenpalette zu finden sind:
17+
18+ * procedure ShowMessage (const Msg: string);
19+ * function MessageBox (Text, Caption : PChar; Flags: Word): Integer;
20+ * function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
21+ * function InputBox (const ACaption, APrompt, ADefault: string); string;
22+ * function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;
23+ * function PasswordBox(const ACaption, APrompt : String) : String;
24+
25+Jede dieser Komponenten bewirkt die Anzeige einer kleinen Popupbox, welche einige Informationen enthält und eine Rückmeldung durch den Benutzer erfordert: entweder eine Schaltfläche drücken oder Texteingabe bzw. beides. Der Einfluss des Programmierers beschränkt sich hauptsächlich auf den Nachrichtentext, Format. Größe und Position können dagegen weniger beeinflusst werden.
26+Der Grund warum es oft verschiedene sehr ähnliche Alternativen gibt, besteht darin, verschiedene Methoden des Aufrufs von Komponenten zu erlauben und Daten zurück zu erhalten.
27+
28+## Nachrichten-Dialoge
29+
30+Nachrichten-Dialoge zeigen eine Nachricht an und warten auf eine Tastendruck- oder Mausklick-Antwort.
31+
32+### ShowMessage
33+```
34+procedure ShowMessage(const Msg: string);
35+```
36+
37+{ Deklariert in Dialogs.pp }
38+
39+Der einfachste Nachrichtendialog: nimmt eine einfache Zeichenkette als Parameter, zeigt sie in einer stereotypen Box, und wartet auf ein Mausklick oder Tastendruck Ereignis bevor er zur aufrufenden Routine oder Programm zurückkehrt.
40+Dies ist ein modaler Prozeduraufruf, der eine Box anzeigt, und den Fokus nicht zurückgibt bis die OK Box angeklickt wird oder anderweitig gewählt wird.
41+
42+Beispiel:
43+```
44+program LazMessage;
45+ uses
46+ Dialogs;
47+ begin
48+ ShowMessage ('Dies ist eine Nachricht von Lazarus')
49+ end.
50+```
51+
52+Sie haben die Möglichkeit, mehrzeilige Nachrichten zu erzeugen mit folgenden Zeilentrennern, alle funktionieren gleichermaßen:
53+
54+ * sLineBreak
55+ * LineEnding
56+ * oder dem Zeichencode: #13#10
57+
58+**Mehrzeiliges Beispiel:**
59+```
60+program LazMessage;
61+ uses
62+ Dialogs;
63+ begin
64+ ShowMessage('Dies ist eine mehrzeilige' + sLineBreak + 'Nachricht!' );
65+ end.
66+```
67+
68+### MessageBox
69+```
70+function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;
71+```
72+
73+{ Definiert in Forms.pp als Teil von TApplication; muss deshalb aufgerufen werden als Application.Messagebox () oder unter Verwendung des 'with Application do ...' Konstrukts }
74+
75+Enthaltene Parameter:
76+
77+ * Text: die Zeichenkette, die als Hinweis oder Anleitung in der Box angezeigt wird;
78+ * Caption: die Zeichenketten-Beschriftung oben in der Nachrichtenbox;
79+ * Flags: longint - dient durch hinzufügen verschiedener Konstanten dazu, den Inhalt und die Erscheinung des Dialogs anzupassen. Zum Beispiel: MB_ABORTRETRYIGNORE + MR_ICONQUESTION zeigt im Dialog des Frage-Icon (?) und drei buttons an: Abbrechen, Wiederholen und Ignorieren. Die Konstanten sind in der Unit [LCLType](<http://lazarus-ccr.sourceforge.net/docs/lcl/lcltype> "doc:lcl/lcltype") definiert.
80+
81+Die Funktion gibt einen Integerwert entsprechend der gedrückten Schaltfläche zurück; sein Wert kann festgelegt werden durch Referenz auf die Konstanten [IDOK..IDHELP]
82+
83+Sie kann aufgerufen werden wie ein Prozeduraufruf (d.h. wie eine 'MessageBox()'-Anweisung anstelle eines 'Variable := MessageBox()' Funktionsaufrufs - siehe Beispiel unten)
84+
85+Beispiel:
86+```
87+uses
88+ Forms, Dialogs, LCLType;
89+
90+ procedure DisplayMessageBox;
91+ var
92+ Reply, BoxStyle: Integer;
93+ begin
94+ with Application do begin
95+ BoxStyle := MB_ICONQUESTION + MB_YESNO;
96+ Reply := MessageBox('Press either button', 'MessageBoxDemo', BoxStyle);
97+ if Reply = IDYES then MessageBox('Yes ', 'Reply', MB_ICONINFORMATION)
98+ else MessageBox('No ', 'Reply', MB_ICONHAND);
99+ end;
100+ end;
101+```
102+
103+Beachten Sie, dass in diesem Beispiel die 'Yes' und 'No' Zeichenketten mit zusätzlichen Leerzeichen gefüllt wurden. Die Breite der Messagebox passt sich der Länge dieser Zeichenketten an. Andernfalls wäre die Box nicht breit genug, um die Beschriftung richtig anzuzeigen
104+
105+[![MessageBoxDemo.png](/wiki-images/c/c2/MessageBoxDemo.png)](</File:MessageBoxDemo.png>) [![ReplyYes.png](/wiki-images/0/06/ReplyYes.png)](</File:ReplyYes.png>)
106+
107+### MessageDLG
108+```
109+function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
110+ Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
111+ function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;
112+ Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
113+```
114+
115+Es gibt zwei Versionen dieser Funktion, d.h. der erste 'Caption' Parameter ist optional; wenn er weggelassen wird, fehlt die Überschrift in der Box und es wird stattdessen der Meldungstyp angezeigt.
116+
117+Dies ist der kompletteste und aufwendigste der Nachrichtendialoge, und erlaubt dem Programmierer beachtliche Kontrolle über das Erscheinungsbild der Dialogbox. Die Parameter, welche die Art der Box und ihr Icon definieren, sind eigentlich Typen wie Integer-Konstanten, und die Schaltflächen können spezifiziert werden als Menge in eckigen Klammern z.B. [mbRetry, mbIgnore, mbAbort, mbCancel]. Der HelpCtx Parameter ist gegenwärtig nicht implementiert und sollte auf Null gesetzt werden. Der Rückgabewert der Funktion ist die Identität der gedrückten Schaltfläche, ausgedrückt als ein Integer (siehe die Definitionen unten, [mrNone..mrAll]).
118+
119+Beispiel:
120+```
121+uses
122+ Forms, Dialogs, LCLType, Controls;
123+
124+ procedure TryMessageDlg;
125+ begin
126+ if MessageDlg('Question', 'Do you wish to Execute?', mtConfirmation,
127+ [mbYes, mbNo, mbIgnore],0) = mrYes
128+ then { Execute rest of Program };
129+ end;
130+```
131+
132+[![Question.png](/wiki-images/3/30/Question.png)](</File:Question.png>)
133+
134+## Texteingabe-Dialoge
135+
136+### InputBox
137+
138+Texteingabe-Dialoge: zeigen eine Nachricht und erwarten eine Benutzereingabe
139+```
140+function InputBox(const ACaption, APrompt, ADefault: String): String;
141+```
142+
143+Zeigt eine Box mit definiertem Titel und Eingabeaufforderung, und erwartet die Benutzereingabe in einem Textfeld. Eine Vorgabe-Zeichenkette kann optional im Textfeld angezeigt werden. Die vom Benutzer eingegebene oder - wenn keine Eingabe erfolgte - die Vorgabe-Zeichenkette wird als Funktionsergebnis zurückgegeben.
144+
145+Beispiel:
146+```
147+uses
148+ Forms, LCLType, Dialogs, Controls;
149+
150+ procedure TryInputBox;
151+ var
152+ UserString: string;
153+ begin
154+ UserString := InputBox('Get some text input',
155+ 'Please type in some information', 'Some sample text');
156+ ShowMessage(UserString)
157+ end;
158+```
159+
160+### InputQuery
161+```
162+function InputQuery(const ACaption, APrompt : String;
163+ MaskInput : Boolean; var Value : String) : Boolean;
164+ function InputQuery(const ACaption, APrompt : String;
165+ var Value : String) : Boolean;
166+```
167+
168+Es gibt zwei Versionen dieser Funktion, die eine Eingabeaufforderung zeigen und die Benutzereingabe von Textdaten erwarten; die erste enthält einen MaskInput boolean Parameter, welcher bestimmt, ob die Benutzereingabe maskiert wird mit Sternchen in dem Texteingabefeld (wie bei der Eingabe eines Passworts), während die zweite diese Eigenschaft weglässt. Der vom Benutzer eingegebene Text wird im variablen Parameter 'Value' zurückgegeben; das Funktionsergebnis ist ein boolean, welcher TRUE zurückgibt wenn OK gedrückt wurde, oder FALSE wenn die Box geschlossen wurde durch jeden anderen Mechanismus (wie das Klicken auf das 'Close' Icon oben in der Titelleiste). Das Auslassen des MaskInput Parameters ist gleichbedeutend mit dem Setzen auf FALSE.
169+
170+Beispiel:
171+```
172+uses
173+ Forms, LCLType, Dialogs, Controls;
174+
175+ procedure TryInputQuery;
176+ var
177+ QueryResult: Boolean;
178+ UserString: string;
179+ begin
180+ if InputQuery('Question', 'Type in some data', TRUE, UserString)
181+ then ShowMessage(UserString)
182+ else
183+ begin
184+ InputQuery('Don''t be silly', 'Please try again', UserString);
185+ ShowMessage(UserString);
186+ end
187+ end;
188+```
189+
190+[![MessageDlgQuestion.png](/wiki-images/d/d0/MessageDlgQuestion.png)](</File:MessageDlgQuestion.png>) [![DontBeSillly.png](/wiki-images/c/ce/DontBeSillly.png)](</File:DontBeSillly.png>)
191+
192+### PasswordBox
193+```
194+Function PasswordBox(const ACaption, APrompt : String) : String;
195+```
196+
197+Verhält sich sehr ähnlich wie die InputQuery Funktion mit MaskInput = TRUE; der Unterschied ist, dass das eingegebene Passwort als Ergebnis der Funktion zurückgegeben wird (wie InputBox).
198+
199+## Konstanten und Typen in den Nachrichtendialogen
200+
201+Verschiedene Konstanten und Typen, die relevant sind für den Gebrauch mit Dialogboxen, sind in der LCL Bibliothek definiert:
202+
203+const { Definiert in LCLType.pp }
204+
205+Integer-Konstanten für die Definition des Buttontyps und des Icons für die Anzeige in MessageBox
206+```
207+MB_OK = $00000000;
208+ MB_OKCANCEL = $00000001;
209+ MB_ABORTRETRYIGNORE = $00000002;
210+ MB_YESNOCANCEL = $00000003;
211+ MB_YESNO = $00000004;
212+ MB_RETRYCANCEL = $00000005;
213+
214+
215+ MB_ICONHAND = $00000010;
216+ MB_ICONQUESTION = $00000020;
217+ MB_ICONEXCLAMATION = $00000030;
218+ MB_ICONASTERICK = $00000040;
219+ MB_ICONWARNING = MB_ICONEXCLAMATION;
220+ MB_ICONERROR = MB_ICONHAND;
221+ MB_ICONINFORMATION = MB_ICONASTERICK;
222+```
223+
224+Integer-Konstanten, die den Rückgabewert von MessageBox definieren, je nachdem welcher Button gedrückt wurde
225+```
226+IDOK = 1; ID_OK = IDOK;
227+ IDCANCEL = 2; ID_CANCEL = IDCANCEL;
228+ IDABORT = 3; ID_ABORT = IDABORT;
229+ IDRETRY = 4; ID_RETRY = IDRETRY;
230+ IDIGNORE = 5; ID_IGNORE = IDIGNORE;
231+ IDYES = 6; ID_YES = IDYES;
232+ IDNO = 7; ID_NO = IDNO;
233+ IDCLOSE = 8; ID_CLOSE = IDCLOSE;
234+ IDHELP = 9; ID_HELP = IDHELP;
235+```
236+
237+definiert ob der erste, zweite oder dritte Button Standardeinstellung ist
238+```
239+MB_DEFBUTTON1 = $00000000;
240+ MB_DEFBUTTON2 = $00000100;
241+ MB_DEFBUTTON3 = $00000200;
242+ MB_DEFBUTTON4 = $00000300;
243+```
244+
245+Der Flags-Parameter von MessageBox wurde erstellt durch Hinzufügen einer Buttonkonstante [MB_OK..MB_RETRYCANCEL], einer optionalen Iconkonstante [MB_ICONHAND..MB_ICONINFORMATION] und einer optionalen Vorgabebutton-Konstante [MB_DEFBUTTON1..MB_DEFBUTTON3]
246+
247+Typen für die Benutzung in MessageDlg, welche Parameter benötigen AType of TMsgDlgType und AButtons of TMSgDlgButtons
248+
249+
250+
251+```
252+{ Defined in Dialogs.pp }
253+ type
254+ TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation,
255+ mtCustom);
256+ TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
257+ mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
258+ TMsgDlgButtons = set of TMsgDlgBtn;
259+
260+
261+ const
262+ mbYesNoCancel = [mbYes, mbNo, mbCancel];
263+ mbOKCancel = [mbOK, mbCancel];
264+ mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
265+
266+
267+ MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (
268+ bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,
269+ bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose
270+ );
271+
272+
273+ BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (
274+ mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,
275+ mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll
276+ );
277+
278+
279+ { Defined in Controls.pp }
280+ const
281+ mrNone = 0;
282+ mrOK = mrNone + 1;
283+ mrCancel = mrNone + 2;
284+ mrAbort = mrNone + 3;
285+ mrRetry = mrNone + 4;
286+ mrIgnore = mrNone + 5;
287+ mrYes = mrNone + 6;
288+ mrNo = mrNone + 7;
289+ mrAll = mrNone + 8;
290+ mrNoToAll = mrNone + 9;
291+ mrYesToAll = mrNone + 10;
292+ mrLast = mrYesToAll;
293+```
294+
295+---
296+*From the Free Pascal wiki, page "Dialog Examples/de", as the Internet Archive kept it on 2025-01-18. 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