![]() |
Symbole in MessageBox
Hallo,
ich habe eine Frage zur MessageBox: Ich bin vor einem halben Jahr von VB auf Delphi umgestiegen, komme damit auch ganz gut zurecht, aber eine Sache wundert mich etwas: Unter VB kann man der Funktion MsgBox auch einen Parameter übergeben, so dass links neben dem Text z.B. ein weißes X in einem roten Kreis (vbCritical) angezeigt wird. Dieses Symbol sieht man auch in der Fehlermeldung, wenn man unter Win98 im Explorer auf ein CD-Rom-Laufwerk klickt, in dem keine CD liegt. Eben diese Option vermisse ich, wenn ich Application.MessageBox aufrufe. Ich würde gerne wissen, ob es eine einfachere Methode gibt, als die Windows-API zu benutzen. |
Hoi und willkommen.
Schau dir mal MessageDlg an!!! |
Danke, ich probier's aus!
|
Hallo,
in der Application.MessageBox, ist es der dritte Parameter. Ich erkläre es mal. Schreiben musst DU dort eine Zahl. Und zwar ergibt die sich folgenderweise:
Code:
Du muss nun einen Wert aud Symbol, einen aus Schaltfläche und einen aus Standardvorgabe und das! ist dann Dein dritter Parameter der MessageBox.
Symbol!!!
NAME WERT SYMBOL MB_ICONSTOP 16 Roter Kreis mit weissem X MB_ICONQUSTION 32 Weisse Sprachblase mit Fragezeichen MB_ICONWARNING 48 Gelbes Dreieck mit Ausrufezeichen MB_ICONINFORMATION 64 Weisse Sprachblase mit Ausrufezeichen Schaltfläche!!! NAME WERT SCHALTFLÄCHE MB_OK 0 OK MB_OKCANCEL 1 OK, Abbrechen MB_ABORTRETRYIGNORE 2 Abbrechen, Wiederholen, Ignorieren MB_YESNOCANCEL 3 Ja, Nein, Abbrechen MB_YESNO 4 Ja, Nein MB_RETRYCANCEL 5 Wiederholen, Abbrechen MB_HELP 16384 Hilfe Standardvorgabe!!! NAME WERT Standardvorgabe MB_DEFBUTTON1 0 erste Schaltfläche MB_DEFBUTTON2 256 zweite Schaltfläche MB_DEFBUTTON3 512 dritte Schaltfläche
Delphi-Quellcode:
Das wäre also eine MessageBox, mit einem Roter Kreis mit weissem X und den Buttons Ja und Nein, und der zweite Button wäre Fokusiert.
Application.MessageBox('Text', 'Titel', 276);
HTH. Grüsse, Daniel :hi: |
Ja, so funktioniert das unter VB auch. Steht das nicht in der Hilfe, oder bin ich zu blöd, es zu finden???
|
Ich finde es in der Hilfe auch nicht. Könnte aber auch daran liegen das ich meine Hilfe zerstört habe.
Fehlende Wörter, falsche Verknüpfungen usw... :oops: Grüsse, Daniel :hi: PS: Kann es mir auber durchaus vorstellen das es da drin steht |
Achja, Rückgabewerte gibt es ja auch noch, habs schon fast vergessen. ;)
Code:
Grüsse, Daniel :hi:
Konstante Wert Bedeutung
0 Fehler(Zu wenig Speicher) IDOK 1 OK wurde gedrückt IDCANCEL 2 Abbrechen wurde gedrückt IDABORT 3 Abbrechen wurde gedrückt IDRETRY 4 Wiederholen wurde gedrückt IDIRGNORE 5 Ignorieren wurde gedrückt IDYES 6 Ja wurde gedrückt IDNO 7 Nein wurde gdrückt |
Zitat:
MB_HELP 16384 Hilfe schweigt zwar auch sie, aber es funktioniert (gibt OK und Hilfe Buttons). Nur der Vollständigkeit halber: Was für einen Wert kriegt man, wenn der Hilfe-Knopf gedrückt wird. |
Zitat:
Zitat:
Wenn Du auf Hilfe Drückst, dann wird Deine Hilfedatei geöffnet. Die Box bleibt erhalten und Du musst dann immernoch auf Ja, Nein oder was auch immer klicken. Hilfe heisst nicht Box weg, so wie bei den anderen Button, somit auf kein Rückgabewert. Grüsse, Daniel :hi: |
Versuche es mal mit IDHELP
Sonst halte mal STRG gedrückt und klicke im Quelltext auf IDNO o.ä. dann einfach mal ein wenig suchen. Chris [EDIT]*SHIT*, zu spät und auch noch falsch :cry: [/EDIT] |
Zitat:
Man erhält nicht IDxxx, sondern den Wert. Wurde z.B. Ja gedrückt, so erhält man 6!
Delphi-Quellcode:
Wenn also "Ja" gedrückt wurde, wird das Programm geschlossen.
if Application.MessageBox('Programm Beenden?', 'Tital', 36) = 6 then
begin Application.Terminate; end; Grüsse, Daniel :hi: |
Hey! Dreimal D6 Personal, drei verschiedene Hilfen, oder wie :?
|
@ Daniel: Ja, du erhälst zwar eine Zahl, aber IDxxx ist eine konstante und kann somit anstelle der Zahl genutzt werden!
Chris |
@Daniel B: Was ist gegen diesen Schreibstil einzuwenden. Der ist doch viel leichter zu lesen, als deine Methode mit den festen Zahlenwerten:?:
Delphi-Quellcode:
...:cat:...
if Application.MessageBox('Programm Beenden?', 'Tital', MB_ICONQUSTION + MB_YESNO) = IDYES then
begin Application.Terminate; end; |
Zitat:
Ich hab nicht behauotet, das ich es aus der Hilfe habe. Meine Hilfe sagt zu dem Suchbegriff Application.MessageBox: Zitat:
Grüsse, Daniel :hi: |
Zitat:
Jeder wie er möchte. Ich möchte niemanden dazu zwingen, die Zahlen zu benutzen. Mit den Wörtern geht es natürlich auch. Ist nur mehr schreibaufwand. |
Zitat:
|
Und warum schreibst Du dann folgendes?
Zitat:
...:cat:... P.S. Ich glaube Dir gerne, dass Du Dir die Werte für die Messagebox merken kannst, aber glaube mir auch, die Konstantennamen zu nutzen ist ein großer Vorteil und wird in den meisten Firmen von den Entwicklern auch verlangt. In unserer Anwendung existieren über 3.700 Konstanten, die könnte sich keiner merken. Die Namen sind viel aussagekräftiger. |
Zitat:
MB_ICONQUESTION + MB_YESNO = 36 IDYES = 6 Exact Deine Werte! |
Zitat:
|
Hoi,
ich hab jetzt mal ne doofe Frage: Diese Konstanten haben einfach Zahlenwerte ??? Also kann ich in irgent einer If-Abfrage wenn ich den Wert 6 haben will auch schreiben
Delphi-Quellcode:
was zugegebener Masen sehr unlogisch und dumm wäre, aber theoretisch möglich.
if i = IDYES then ...
|
1.
Zitat:
Der Standardwert für den ersten Button ist 0. Da kannst Du so viele 0en dazu addieren, die 36 wird sich nicht ändern. Den Standardmässig ist mMn., bei der Programm Beenden abfrage mit zwei Buttons, Ja, also der erste Button Fokusiert, somit ist die 36 berechtigt. |
Hallo nochmal,
ist jetzt schon einige Stunden her, dass ich die ersten Antworten bekommen habe. Ich hab jetzt endlich Zeit gehabt, meinen eigenen Computer zu starten, um die Tipps auszuprobieren, ich habe nämlich heute meinen "computerfreien Tag" (von meinen Eltern verordnet) :lol: . Ich ziehe die MessageBox dem MessageDlg vor, denn das deutsche Windows hat dem englischen Delphi anscheinend nichts zu sagen, was die Sprache in MessageDlgs angeht, und ich habe was gegen deutsche Boxen mit englischer Beschriftung :wink: Aber warum nimmt Borland, wenn es schon die API-Funktion MessageBox verwendet, nicht auch die kompletten Parameter in die Hilfe auf??? Oder liegt das ganze etwa an meiner Delphi-Version (D6Personal englisch von ![]() |
Hoi,
such mal nach consts.pas das dürfte helfen anderenfalls kannst du dein D6 mit den Updates deutsch machen ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 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-2025 by Thomas Breitkreuz