![]() |
Standard-Dialoge
Da ich schon ein paar Mal auf die Verwendung der Dialoge, die man in Delphi verwenden kann, angesprochen wurde und kein Tutorial gefunden habe (vielleicht gibt das auch schon), habe ich dieses kleine hier verfasst.
Um einen Dialog anzeigen zu lassen, benötigt man sehr wenig Programmieraufwand, im Normalfall ist es mit einer Zeile Code getan. Die Unit Dialogs muss in die uses-Klausel eingetragen werden. Im Normalfall, sofern man keine eigene Unit erstellt, ist die Unit Dialogs bereits eingebunden. Es gibt verschiedene Arten, um Ein- und Ausgaben über einen Dialog durchzuführen: Ausgabe
Eingabe
Um eine Einfache Meldung, sei es ein Hinweis, oder der Wert einer Vaiablen, per Dialog auszugeben, gibt es die 3 oben genannten Ausgabe-Möglichkeiten. Ausgabe ShowMessage Syntax:
Delphi-Quellcode:
Als Parameter wird lediglich der Ausgabetext angegeben.
ShowMessage(const Msg: string);
Aufruf:
Delphi-Quellcode:
ShowMessage('Hier kann ein beliebiger Text angegeben werden.');
Der Titel des Dialogs entspricht dem Namen des Projektes. ShowMessagePos Syntax:
Delphi-Quellcode:
Als Parameter weird zuerst der Ausgabetext, dann die Position vom linken Bildschrimrand und dann die Position vom oberen Bildschirmrand angegeben.
ShowMessagePos(const Msg: string; X: integer; Y: integer);
Aufruf:
Delphi-Quellcode:
Dieser Dialog sieht genauso aus, wie ein mittels ShowMessage erzeugter, mit dem Unterschied, dass sich dessen Position angeben lässt.
ShowMessagePos('Hier kann ein beliebiger Text angegeben werden.', 200, 100);
MessageDlg Dieser Dialog stammt nicht von TApplication ab, weshalb dessen Aufbau sich dem der MessageBox stark unterscheidet, wie man im Folgenden sieht: Syntax:
Delphi-Quellcode:
Als Parameter wird zuerst der Ausgabetext, dann das anzuzeigende Icon des Dialogs, von dem dessen Typ (Bestätigung, Fehler, Information, Warnung) abhängt, angegeben. Danach folgen die anzuzeigenden Schaltflächen und der letzte Parameter ist für eine Hilfe gedacht.
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: integer): Word;
Die Hilfe entspricht ![]() Aufruf:
Delphi-Quellcode:
MessageDlg('Hier kann ein beliebiger Text angegeben werden.', mtInformation, [mbOK], 0);
Parameter für das Symbol (Icon): mtCustom Symbol: keines Titel: Projektname mtError Symbol: http://www.delphipraxis.net/specials...es/mterror.gif Titel: Fehler mtInformation Symbol: http://www.delphipraxis.net/specials...nformation.gif Titel: Informationen mtConfirmation Symbol: http://www.delphipraxis.net/specials...nfirmation.gif Titel: Bestätigung mtWarning Symbol: http://www.delphipraxis.net/specials.../mtwarning.gif Titel: Warnung Parameter für die Schaltflächen (Buttons): mbOK Beschriftung: OK mbYes Beschriftung: Ja mbNo Beschriftung: Nein mbCancel oder mbAbort Beschriftung: Abbrechen mbRetry Beschriftung: Wiederholen mbIgnore Beschriftung: Ignorieren mbHelp Beschriftung: Hilfe mbAll Beschriftung: Alle Standard Button-Kombinationen: Diese werden nicht als eckige Klammern eingetragen, da es bereits um eine Kombination aus mehreren Buttons handelt. Diese können daher auch nicht mit anderen Buttons kombiniert werden. mbOkCancel Buttons: OK - Abbrechen mbYesNoCancel Buttons: Ja - Nein - Abbrechen mbAbortRetryIgnore Buttons: Abrrechen - Wiederholen - Ignorieren Hier kann auch abgefragt werden, auf welche Schaltfläche gedrückt wurde:
Code:
if MessageDlg('Änderungen süeichern?', mtConfirmation, [mbyes, mbno, mbcancel], 0) = mrYes then
// Es wurde auf 'Ja' geklickt Die Rückgabewerte: mrNone gedrückter Button: keiner mrOk gedrückter Button: OK mrYes gedrückter Button: Ja mrNo gedrückter Button: Nein mrCancel oder mrAbort gedrückter Button: Abbrechen mrRetry gedrückter Button: Wiederholen mrIgnore gedrückter Button: Ignorieren mrAll gedrückter Button: Alle MessageBox 1. Möglichkeit: Es wird die Unit Windows benötigt. Syntax:
Delphi-Quellcode:
Aufruf:
function MessageBox(hWnd: HWND; lpText: PAnsiChar; lpCaption: PAnsiChar; uType: Cardinal): integer;
Delphi-Quellcode:
Messagebox(Self.Handle, 'Hier kann ein beliebiger Text angegeben werden.', 'Titel-Text', MB_ICONINFORMATION or MB_OKCANCEL);
2. Möglichkeit: Methode von TApplication, wie man leicht erahnen kann. Syntax:
Delphi-Quellcode:
Aufruf:
function MessageBox(const Text: PAnsiChar; const Caption: PAnsiChar; [Flags: integer = 0]): integer;
Delphi-Quellcode:
Der Dialog sieht genauso aus, wie einer mit MessageBox erzeugter und ist im Endeffekt der selbe.
Application.MessageBox('Hier kann ein beliebiger Text angegeben werden.', 'Titel-Text', MB_ICONINFORMATION or MB_OKCANCEL);
Parameter für die Icons: MB_ICONSTOP Wert der Konstanten: 16 Symbol: http://www.delphipraxis.net/specials...es/mterror.gif MB_ICONQUESTION Wert der Konstanten: 32 Symbol: http://www.delphipraxis.net/specials...nfirmation.gif MB_ICONWARNING Wert der Konstanten: 48 Symbol: http://www.delphipraxis.net/specials.../mtwarning.gif MB_ICONINFORMATION Wert der Konstanten: 64 Symbol: http://www.delphipraxis.net/specials...nformation.gif Der Wert 0 entspricht keinem angezeigten Symbol. Parameter für die Schaltflächen: MB_OK Wert der Konstanten: 0 Buttons: OK MB_OKCANCEL Wert der Konstanten: 1 Buttons: OK - Cancel MB_ABORTRETRYIGNORE Wert der Konstanten: 2 Buttons: Abbrechen - Wiederholen - Ignorieren MB_YESNOCANCEL Wert der Konstanten: 3 Beschriftung: Ja - Nein - Abbrechen MB_YESNO Wert der Konstanten: 4 Beschriftung: Ja - Nein MB_RETRYCANCEL Wert der Konstanten: 5 Beschriftung: Wiederholen - Abbrechen MB_HELP Wert der Konstanten: 16384 Beschriftung: Hilfe Man kann sogar festlegen, welche der maximal 3 Schaltflächen mein Anzeigen des Dialoges den Fokus behält. Dieser Button wird gedrückt, wenn man beim Anzeigen des Dialogs 'Enter' drückt. Somit kann man ungewollte Dinge, wie das Verwerfen einer Datei, verhindern. Standardfokus der Schaltflächen: MB_DEFBUTTON1 Wert der Konstanten: 0 Fokus: 1. Button MB_DEFBUTTON2 Wert der Konstanten: 256 Fokus: 2. Button MB_DEFBUTTON3 Wert der Konstanten: 512 Fokus: 3. Button Diese Konstanten (Icon, Buttons, Fokus) werden kombiniert, indem man sie mittels or miteinander verbindet:
Delphi-Quellcode:
oder einfach die Werte aller Konstanten addiert und diese als letzten Parameter angibt. Nur ist es aus dem Code nur schwer ersichtlich, welche Informationen in dieser Zahl stecken.
MB_ICONINFORMATION or MB_OKCANCEL or MB_DEFBUTTON2
Auch bei der MessageBox kann man überprüfen, auf welche Schaltfläche geklickt wurde:
Delphi-Quellcode:
if Application.MessageBox('Änderungen speichern?', 'Hinweis', MB_YESNOCANCEL or MB_DEFBUTTON3) = IDYES then
// Es wurde auf 'Ja' geklickt Die Rückgabewerte: ID_OK Wert der Konstanten: 1 gedrückter Button: OK ID_CANCEL oder ID_ABORT Wert der Konstanten (ID_CANCEL) : 2 Wert der Konstanten (ID_ABORT) : 3 gedrückter Button: Abbrechen ID_RETRY Wert der Konstanten: 4 gedrückter Button: Wiederholen ID_RIGNORE Wert der Konstanten: 5 gedrückter Button: Ignorieren ID_YES Wert der Konstanten: 6 gedrückter Button: Ja ID_NO Wert der Konstanten: 7 gedrückter Button: Nein Eingabe InputBox Syntax:
Delphi-Quellcode:
Die Parameter setzen sich wie folgt zusammen: Der erste ist für den Dialogtitel, der zweite für den Beschreibungstext und der dritte ist der vordefinierte Text, der bereits im Textfeld steht.
function InputBox(const ACaption: string; const APromt: string; const ADefalut: string): string;
Aufruf:
Delphi-Quellcode:
var Username: string;
... Username := InputBox('Titel-Text', 'Geben Sie Ihren Benutzernamen ein', ''); InputQuery Syntax:
Delphi-Quellcode:
Der erste Parameter ist wiederum für den Dialogtext, der zweite für den Beschreibungstext und der dritte dient dazu, den eingegebenen Text zurückzuliefern.
function InputQuery(const ACaption: string; const APromt: string; var Value: string): boolean;
Der Rückgabewert ist hier ein boolscher, der nur dann true ist, wenn auf OK geklickt wurde. Das Aussehen entspricht dem, eines mittels InputBox erzeugten Dialogs. Aufruf:
Delphi-Quellcode:
Um einen Dialog selbst mit den verschiedensten Buttons zu bestücken, kann man
var Username: string;
... if InputQuery('Hinweis', 'Wie heißen Sie?', Username) then //Es wurde auf 'OK' geklickt ![]() |
Re: Standard-Dialoge
Zitat:
Für alle die nicht erst in der Hilfe nachlesen wollen hier ein kleines Beispiel:
Delphi-Quellcode:
Anmerkung:
procedure TForm1.Button4Click(Sender: TObject);
var f: TForm; begin f := CreateMessageDialog('Test', mtInformation, [mbOk, mbCancel]); f.Color := clRed; f.Font.Color := clYellow; (f.FindComponent('Cancel') as TButton).Caption := 'Huch'; f.ShowModal; f.Free; end;
Delphi-Quellcode:
ist vom Aussehen absolut identisch mit
f := CreateMessageDialog('Test', mtInformation, [mbOk, mbCancel]);
f.ShowModal;
Delphi-Quellcode:
Das liegt daran, das MessageDlg intern auch CreateMessageDialog verwendet:
MessageDlg('Test', mtInformation, [mbOk, mbCancel]);
Delphi-Quellcode:
// Unit: Dialogs.pas / Delphi 7
// // Borland Delphi Visual Component Library // Copyright (c) 1995-2001 Borland Software Corporation ... function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; begin Result := MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, -1, -1, ''); end; ... function MessageDlgPosHelp(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer; const HelpFileName: string): Integer; begin with CreateMessageDialog(Msg, DlgType, Buttons) do try HelpContext := HelpCtx; HelpFile := HelpFileName; if X >= 0 then Left := X; if Y >= 0 then Top := Y; if (Y < 0) and (X < 0) then Position := poScreenCenter; Result := ShowModal; finally Free; end; end; ... |
Re: Standard-Dialoge
cooles tutorial.
gibt es das auch als PDF oder zum runterladen? gruessle |
Re: Standard-Dialoge
Zitat:
Greetz alcaeus |
Re: Standard-Dialoge
Zitat:
aber ich will nur das tutorial haben. und nicht die bemerkungen der anderen schreiber. gruessle |
Re: Standard-Dialoge
Zitat:
(Falls Tabellenformatierung nicht stimmt, diese über Tabelleneigenschaften -> Höhe korrigieren) Dann einfach aus der Word Datei ein PDF erzeugen. Zitat:
-> Deine Frage ist übrigens Offtopic und hat hier im Tutorial nichts zu suchen. (Die Anderen wollen ja z.B. ein PDF mit Infos zu Standard Dialogen haben und nicht über PDF Erstellung !!!) Du hättest einen neuen Thread auf machen müssen (Verhaltenskodex: ![]() |
Re: Standard-Dialoge
Hallo!
Zitat:
Sonst gutes Tutorial! Grüße Faux |
Re: Standard-Dialoge
Hi,
man kann ja immernoch die Lösung mit dem
Delphi-Quellcode:
nehmen.
application.messagebox('Text' , 'Caption' , 64+0);
Geht glaube ich einfacher :stupid: . Gruss, Mindforce |
Re: Standard-Dialoge
Zitat:
Grüße Faux |
Re: Standard-Dialoge
Jupp, das Plus Null ist nix für mich auch die Schreibweise mit Zahlen ist nach einiger Zeit dann doch sehr unsicher. Was war doch noch gleich eine MessageBox mit Achtzehn ? :mrgreen:
Die Angaben mit Konstanten(namen) macht einem doch das Leben leichter. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz