Difference between revisions of "Dialog Examples/de"

From Free Pascal wiki
Jump to navigationJump to search
m (ß -> ss some wording)
m (updated; formatting)
Line 14: Line 14:
 
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.
 
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.
  
== Nachrichten Dialoge ==
+
== Nachrichten-Dialoge ==
Nachrichten Dialoge zeigen eine Nachricht an und warten auf eine Tastendruck- oder Mausklick-Antwort.
+
Nachrichten-Dialoge zeigen eine Nachricht an und warten auf eine Tastendruck- oder Mausklick-Antwort.
  
 
=== ShowMessage ===
 
=== ShowMessage ===
Procedure ShowMessage (const Msg: string);
+
<delphi>procedure ShowMessage(const Msg: string);</delphi>
 
   
 
   
{ Definiert in Dialogs.pp }
+
{ Definiert in Dialogs.pp }
  
 
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.<br>
 
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.<br>
Line 27: Line 27:
 
Beispiel:
 
Beispiel:
  
Program LazMessage;
+
<delphi>program LazMessage;
Uses Dialogs;
+
uses
begin
+
  Dialogs;
  ShowMessage ('Dies ist eine Nachricht von Lazarus')
+
begin
end.
+
  ShowMessage ('Dies ist eine Nachricht von Lazarus')
 +
end.</delphi>
 +
 
 +
Sie haben die Möglichkeit, mehrzeilige Nachrichten zu erzeugen mit folgenden Zeilentrennern, alle funktionieren gleichermaßen:
 +
*sLineBreak
 +
*LineEnding
 +
*oder dem Zeichencode: #13#10
 +
 
 +
'''Mehrzeiliges Beispiel:'''
 +
 
 +
<delphi>program LazMessage;
 +
uses
 +
  Dialogs;
 +
begin
 +
  ShowMessage('Dies ist eine mehrzeilige' + sLineBreak + 'Nachricht!' );
 +
end.</delphi>
  
 
=== MessageBox ===
 
=== MessageBox ===
 +
<delphi>function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;</delphi>
 +
 
{ Definiert in Forms.pp als Teil von TApplication; muss deshalb aufgerufen werden als Application.Messagebox () oder unter Verwendung des 'with Application do ...' Konstrukts }
 
{ Definiert in Forms.pp als Teil von TApplication; muss deshalb aufgerufen werden als Application.Messagebox () oder unter Verwendung des 'with Application do ...' Konstrukts }
  
Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer;
+
Enthaltene Parameter:
 
 
Enthaltene Parameter
 
  
 
* Text: die Zeichenkette, die als Hinweis oder Anleitung in der Box angezeigt wird;
 
* Text: die Zeichenkette, die als Hinweis oder Anleitung in der Box angezeigt wird;
* Caption: die Zeichenketten Beschriftung oben in der Nachrichten Box;
+
* Caption: die Zeichenketten-Beschriftung oben in der Nachrichtenbox;
* 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.
+
* 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 Funktion gibt einen Integer Wert entsprechend der gedrückten Schaltfläche zurück; sein Wert kann festgelegt werden durch Referenz auf die Konstanten [IDOK..IDHELP]
+
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]
  
Sie kann aufgerufen werden wie ein Prozeduraufruf (d.h. wie eine 'MessageBox()' Anweisung eher als ein 'Variable := MessageBox()' Funktionsaufruf - siehe Beispiel unten)
+
Sie kann aufgerufen werden wie ein Prozeduraufruf (d.h. wie eine 'MessageBox()'-Anweisung anstelle eines 'Variable := MessageBox()' Funktionsaufrufs - siehe Beispiel unten)
  
Beispiel
+
Beispiel:
  
Uses Forms, Dialogs, LCLType;
+
<delphi>uses
 +
  Forms, Dialogs, LCLType;
 
   
 
   
Procedure DisplayMessageBox;
+
procedure DisplayMessageBox;
  var reply, boxstyle: integer;
+
var  
  begin
+
  Reply, BoxStyle: Integer;
    with application do begin
+
begin
      boxstyle := MB_ICONQUESTION + MB_YESNO;
+
  with Application do begin
      reply := MessageBox ('Press either button', 'MessageBoxDemo', boxstyle);
+
    BoxStyle := MB_ICONQUESTION + MB_YESNO;
      if reply = IDYES then MessageBox ('Yes      ', 'Reply',MB_ICONINFORMATION)
+
    Reply := MessageBox('Press either button', 'MessageBoxDemo', BoxStyle);
      else MessageBox ('No        ', 'Reply', MB_ICONHAND)
+
    if Reply = IDYES then MessageBox('Yes      ', 'Reply',MB_ICONINFORMATION)
  end;
+
      else MessageBox('No        ', 'Reply', MB_ICONHAND);
 +
  end;
 +
end;</delphi>
  
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
+
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
  
 
<center> [[image:MessageBoxDemo.png]]  [[image:ReplyYes.png]]
 
<center> [[image:MessageBoxDemo.png]]  [[image:ReplyYes.png]]
Line 68: Line 86:
  
 
=== MessageDLG ===
 
=== 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;
 
  
Es gibt zwei Versionen dieser Funktion, dass heißt der erste 'Caption' Parameter ist optional; wenn er weggelassen wird, fehlt die Überschrift in der Box und es wird stattdessen der Meldungstyp angezeigt.
+
<delphi>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;</delphi>
 +
 
 +
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.
  
 
Dies ist der kompletteste und aufwendigste der Nachrichtendialoge, und erlaubt dem Programmierer beachtliche Kontrolle über das Erscheinungsbild der Dialogbox.
 
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].
+
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 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]).
 
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]).
  
Beispiel
+
Beispiel:
  
Uses forms, dialogs, lcltype, controls;
+
<delphi>uses
 +
  Forms, Dialogs, LCLType, Controls;
 
   
 
   
procedure TryMessageDlg;
+
procedure TryMessageDlg;
begin
+
begin
  if MessageDlg ('Question', 'Do you wish to Execute?', mtConfirmation,  
+
  if MessageDlg('Question', 'Do you wish to Execute?', mtConfirmation,  
                  [mbYes, mbNo, mbIgnore],0) = mrYes
+
  [mbYes, mbNo, mbIgnore],0) = mrYes
  then { Execute rest of Program };
+
  then { Execute rest of Program };
  end;
+
end;</delphi>
 
 
  
 
<center> [[image:Question.png]]  
 
<center> [[image:Question.png]]  
 
</center>
 
</center>
  
== Texteingabe Dialoge ==
+
== Texteingabe-Dialoge ==
  
 
=== InputBox ===
 
=== InputBox ===
Texteingabe Dialoge: zeigen eine Nachricht und erwarten eine Benutzereingabe
+
Texteingabe-Dialoge: zeigen eine Nachricht und erwarten eine Benutzereingabe
  
Function InputBox(const ACaption, APrompt, ADefault : String) : String;
+
<delphi>function InputBox(const ACaption, APrompt, ADefault: String): String;</delphi>
  
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.
+
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.
  
Beispiel
+
Beispiel:
  
Uses forms, lcltype, dialogs, controls;
+
<delphi>uses
 +
  Forms, LCLType, Dialogs, Controls;
 
   
 
   
procedure TryInputBox;
+
procedure TryInputBox;
var userstring: string;
+
var  
begin
+
  UserString: string;
  userstring := InputBox ('Get some text input',  
+
begin
                          'Please type in some   information', 'Some sample text');
+
  UserString := InputBox('Get some text input',  
  ShowMessage (userstring)
+
    'Please type in some information', 'Some sample text');
end;
+
  ShowMessage(UserString)
 +
end;</delphi>
  
 
=== InputQuery ===
 
=== InputQuery ===
Function InputQuery(const ACaption, APrompt : String;
+
<delphi>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;
                    var Value : String) : Boolean;
+
  var Value : String) : Boolean;</delphi>
  
 
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.
 
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.
  
Beispiel
+
Beispiel:
  
Uses forms, lcltype, dialogs, controls;
+
<delphi>uses
 +
  Forms, LCLType, Dialogs, Controls;
 
   
 
   
procedure TryInputQuery;
+
procedure TryInputQuery;
var QueryResult: boolean;
+
var  
  userstring: string;
+
  QueryResult: Boolean;
begin
+
  UserString: string;
  if InputQuery ('Question', 'Type in some data', TRUE, userstring)
+
begin
  then ShowMessage (userstring)
+
  if InputQuery('Question', 'Type in some data', TRUE, UserString)
  else  
+
  then ShowMessage(UserString)
  begin
+
  else  
    InputQuery ('Don''t be silly', 'Please try again', userstring);
+
  begin
    ShowMessage (userstring)
+
    InputQuery('Don''t be silly', 'Please try again', UserString);
  end
+
    ShowMessage(UserString);
end;
+
  end
 +
end;</delphi>
  
 
<center> [[image:MessageDlgQuestion.png]]  </center>
 
<center> [[image:MessageDlgQuestion.png]]  </center>
Line 145: Line 168:
 
<center> [[image:DontBeSillly.png]] </center>
 
<center> [[image:DontBeSillly.png]] </center>
  
=== PasswordBox ===
+
===PasswordBox===
Function PasswordBox(const ACaption, APrompt : String) : String;
+
<delphi>Function PasswordBox(const ACaption, APrompt : String) : String;</delphi>
  
 
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).
 
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).
  
== Konstanten und Typen in den Nachrichtendialogen ==
+
==Konstanten und Typen in den Nachrichtendialogen==
  
 
Verschiedene Konstanten und Typen, die relevant sind für den Gebrauch mit Dialogboxen, sind in der LCL Bibliothek definiert:
 
Verschiedene Konstanten und Typen, die relevant sind für den Gebrauch mit Dialogboxen, sind in der LCL Bibliothek definiert:
Line 156: Line 179:
 
const { Definiert in LCLType.pp }
 
const { Definiert in LCLType.pp }
  
Integer Konstanten für die Definition des Button Typs
+
Integer-Konstanten für die Definition des Buttontyps
 
und des Icons für die Anzeige in MessageBox
 
und des Icons für die Anzeige in MessageBox
  
MB_OK = $00000000;
+
<delphi>MB_OK = $00000000;
MB_OKCANCEL = $00000001;
+
MB_OKCANCEL = $00000001;
MB_ABORTRETRYIGNORE = $00000002;
+
MB_ABORTRETRYIGNORE = $00000002;
MB_YESNOCANCEL = $00000003;
+
MB_YESNOCANCEL = $00000003;
MB_YESNO = $00000004;
+
MB_YESNO = $00000004;
MB_RETRYCANCEL = $00000005;
+
MB_RETRYCANCEL = $00000005;
+
 
 
   
 
   
MB_ICONHAND = $00000010;
+
MB_ICONHAND = $00000010;
MB_ICONQUESTION = $00000020;
+
MB_ICONQUESTION = $00000020;
MB_ICONEXCLAMATION = $00000030;
+
MB_ICONEXCLAMATION = $00000030;
MB_ICONASTERICK = $00000040;
+
MB_ICONASTERICK = $00000040;
MB_ICONWARNING = MB_ICONEXCLAMATION;
+
MB_ICONWARNING = MB_ICONEXCLAMATION;
MB_ICONERROR = MB_ICONHAND;
+
MB_ICONERROR = MB_ICONHAND;
MB_ICONINFORMATION = MB_ICONASTERICK;
+
MB_ICONINFORMATION = MB_ICONASTERICK;</delphi>
  
Integer Konstanten, die den Rückgabewert von MessageBox definieren entsprechend welcher Button gedrückt wurde
+
Integer-Konstanten, die den Rückgabewert von MessageBox definieren, je nachdem welcher Button gedrückt wurde
  
IDOK = 1; ID_OK = IDOK;
+
<delphi>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;
IDRETRY = 4; ID_RETRY = IDRETRY;
+
IDRETRY = 4; ID_RETRY = IDRETRY;
IDIGNORE = 5; ID_IGNORE = IDIGNORE;
+
IDIGNORE = 5; ID_IGNORE = IDIGNORE;
IDYES = 6; ID_YES = IDYES;
+
IDYES = 6; ID_YES = IDYES;
IDNO = 7; ID_NO = IDNO;
+
IDNO = 7; ID_NO = IDNO;
IDCLOSE = 8; ID_CLOSE = IDCLOSE;
+
IDCLOSE = 8; ID_CLOSE = IDCLOSE;
IDHELP = 9; ID_HELP = IDHELP;
+
IDHELP = 9; ID_HELP = IDHELP;</delphi>
  
 
definiert ob der erste, zweite oder dritte Button Standardeinstellung ist
 
definiert ob der erste, zweite oder dritte Button Standardeinstellung ist
  
MB_DEFBUTTON1 = $00000000;
+
<delphi>MB_DEFBUTTON1 = $00000000;
MB_DEFBUTTON2 = $00000100;
+
MB_DEFBUTTON2 = $00000100;
MB_DEFBUTTON3 = $00000200;
+
MB_DEFBUTTON3 = $00000200;
MB_DEFBUTTON4 = $00000300;
+
MB_DEFBUTTON4 = $00000300;</delphi>
  
Der Flags Parameter von MessageBox wurde erstellt durch Hinzufügen einer Button Konstante [MB_OK..MB_RETRYCANCEL],
+
Der Flags-Parameter von MessageBox wurde erstellt durch Hinzufügen einer Buttonkonstante [MB_OK..MB_RETRYCANCEL],
einer optionalen Icon Konstante [MB_ICONHAND..MB_ICONINFORMATION]
+
einer optionalen Iconkonstante [MB_ICONHAND..MB_ICONINFORMATION]
und einer optionalen Vorgabebutton Konstante [MB_DEFBUTTON1..MB_DEFBUTTON3]
+
und einer optionalen Vorgabebutton-Konstante [MB_DEFBUTTON1..MB_DEFBUTTON3]
  
 
Typen für die Benutzung in MessageDlg, welche Parameter benötigen
 
Typen für die Benutzung in MessageDlg, welche Parameter benötigen
Line 202: Line 225:
  
  
{ Definiert in Dialogs.pp }
+
<delphi>{ Defined in Dialogs.pp }
type
+
type
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
 
                     mtCustom);
 
                     mtCustom);
Line 211: Line 234:
 
    
 
    
 
   
 
   
const
+
const
 
   mbYesNoCancel = [mbYes, mbNo, mbCancel];
 
   mbYesNoCancel = [mbYes, mbNo, mbCancel];
 
   mbOKCancel = [mbOK, mbCancel];
 
   mbOKCancel = [mbOK, mbCancel];
Line 229: Line 252:
 
   
 
   
 
   
 
   
{ Definiert in Controls.pp }
+
{ Defined in Controls.pp }
const
+
const
 
   mrNone = 0;
 
   mrNone = 0;
 
   mrOK = mrNone + 1;
 
   mrOK = mrNone + 1;
Line 242: Line 265:
 
   mrNoToAll = mrNone + 9;
 
   mrNoToAll = mrNone + 9;
 
   mrYesToAll = mrNone + 10;
 
   mrYesToAll = mrNone + 10;
   mrLast = mrYesToAll;
+
   mrLast = mrYesToAll;</delphi>
  
----
+
[[Category:LCL]]
Diese Seite wurde von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogExamples Version] importiert.
 

Revision as of 22:40, 3 May 2011

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

Einige nützliche Dialoge

Dies sind einige nützliche Dialoge, die nicht in der Komponentenpalette zu finden sind:

  • 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;

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.
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.

Nachrichten-Dialoge

Nachrichten-Dialoge zeigen eine Nachricht an und warten auf eine Tastendruck- oder Mausklick-Antwort.

ShowMessage

<delphi>procedure ShowMessage(const Msg: string);</delphi>

{ Definiert in Dialogs.pp }

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.
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.

Beispiel:

<delphi>program LazMessage; uses

 Dialogs;

begin

 ShowMessage ('Dies ist eine Nachricht von Lazarus')

end.</delphi>

Sie haben die Möglichkeit, mehrzeilige Nachrichten zu erzeugen mit folgenden Zeilentrennern, alle funktionieren gleichermaßen:

  • sLineBreak
  • LineEnding
  • oder dem Zeichencode: #13#10

Mehrzeiliges Beispiel:

<delphi>program LazMessage; uses

 Dialogs;

begin

 ShowMessage('Dies ist eine mehrzeilige' + sLineBreak + 'Nachricht!' );

end.</delphi>

MessageBox

<delphi>function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;</delphi>

{ Definiert in Forms.pp als Teil von TApplication; muss deshalb aufgerufen werden als Application.Messagebox () oder unter Verwendung des 'with Application do ...' Konstrukts }

Enthaltene Parameter:

  • Text: die Zeichenkette, die als Hinweis oder Anleitung in der Box angezeigt wird;
  • Caption: die Zeichenketten-Beschriftung oben in der Nachrichtenbox;
  • 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 Funktion gibt einen Integerwert entsprechend der gedrückten Schaltfläche zurück; sein Wert kann festgelegt werden durch Referenz auf die Konstanten [IDOK..IDHELP]

Sie kann aufgerufen werden wie ein Prozeduraufruf (d.h. wie eine 'MessageBox()'-Anweisung anstelle eines 'Variable := MessageBox()' Funktionsaufrufs - siehe Beispiel unten)

Beispiel:

<delphi>uses

 Forms, Dialogs, LCLType;

procedure DisplayMessageBox; var

 Reply, BoxStyle: Integer;

begin

 with Application do begin
   BoxStyle := MB_ICONQUESTION + MB_YESNO;
   Reply := MessageBox('Press either button', 'MessageBoxDemo', BoxStyle);
   if Reply = IDYES then MessageBox('Yes       ', 'Reply',MB_ICONINFORMATION)
     else MessageBox('No         ', 'Reply', MB_ICONHAND);
 end;

end;</delphi>

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

MessageBoxDemo.png ReplyYes.png

MessageDLG

<delphi>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;</delphi>

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.

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]).

Beispiel:

<delphi>uses

 Forms, Dialogs, LCLType, Controls;

procedure TryMessageDlg; begin

 if MessageDlg('Question', 'Do you wish to Execute?', mtConfirmation, 
  [mbYes, mbNo, mbIgnore],0) = mrYes
 then { Execute rest of Program };

end;</delphi>

Question.png

Texteingabe-Dialoge

InputBox

Texteingabe-Dialoge: zeigen eine Nachricht und erwarten eine Benutzereingabe

<delphi>function InputBox(const ACaption, APrompt, ADefault: String): String;</delphi>

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.

Beispiel:

<delphi>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;</delphi>

InputQuery

<delphi>function InputQuery(const ACaption, APrompt : String;

 MaskInput : Boolean; var Value : String) : Boolean;

function InputQuery(const ACaption, APrompt : String;

 var Value : String) : Boolean;</delphi>

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.

Beispiel:

<delphi>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('Dont be silly', 'Please try again', UserString);
   ShowMessage(UserString);
 end

end;</delphi>

MessageDlgQuestion.png
DontBeSillly.png

PasswordBox

<delphi>Function PasswordBox(const ACaption, APrompt : String) : String;</delphi>

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).

Konstanten und Typen in den Nachrichtendialogen

Verschiedene Konstanten und Typen, die relevant sind für den Gebrauch mit Dialogboxen, sind in der LCL Bibliothek definiert:

const { Definiert in LCLType.pp }

Integer-Konstanten für die Definition des Buttontyps und des Icons für die Anzeige in MessageBox

<delphi>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;</delphi>

Integer-Konstanten, die den Rückgabewert von MessageBox definieren, je nachdem welcher Button gedrückt wurde

<delphi>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;</delphi>

definiert ob der erste, zweite oder dritte Button Standardeinstellung ist

<delphi>MB_DEFBUTTON1 = $00000000; MB_DEFBUTTON2 = $00000100; MB_DEFBUTTON3 = $00000200; MB_DEFBUTTON4 = $00000300;</delphi>

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]

Typen für die Benutzung in MessageDlg, welche Parameter benötigen AType of TMsgDlgType und AButtons of TMSgDlgButtons


<delphi>{ 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
   );


{ Defined in 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;</delphi>