Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi MessageDlg (https://www.delphipraxis.net/108683-messagedlg.html)

Nastarowje 17. Feb 2008 20:12


MessageDlg
 
Hallo,

irgendwie komme ich nicht weiter. Ich bekomme unter Delphi 7 immer die Fehlermeldung mrYes ist ein undefinierter Bezeichner.

Delphi-Quellcode:

case MessageDlg('Datei existiert noch nicht. Soll Sie angelegt werden?',mtInformation, [mbYes,mbNo], 0) of
      mrYes : Form1.Close;
      mrNo : Form1.Close;
    end;

Die Resultate Form1.close sind nur fiktiv. Der Code fehlt noch.
Wieso bekomme ich die Fehlermeldung?

Ich setze eine eigene Unit ein, in die Unit habe ich Dialogs eingebunden. MessageDlg wird gefunden und laut Hilfe habe ich alles richtig. Auch hier im Forum steht nix anderes.

Was fehlt oder was mache ich falsch? Muss ich mrYes und mrNo irgendwo noch deklarieren?

Vielen Dank im vorraus

dataspider 17. Feb 2008 20:25

Re: MessageDlg
 
Hi,

ich denke, Unit Dialogs in Uses aufnehmen sollte reichen.

[Edit]Vergiss es, hab nicht richtig gelesen...[/EDIT]

[EDIT2]Unit Controls brauchtst du :oops: [/EDIT]


Cu, Frank

bitsetter 17. Feb 2008 20:28

Re: MessageDlg
 
Hallo,

binde mal die Controls mit ein.
Delphi-Quellcode:
Controls.mrYes

Hansa 17. Feb 2008 20:47

Re: MessageDlg
 
Das muss andere Ursachen haben. Die Unit Dialogs ist schon richtig. Mache mal das Form1.Close weg. Das könnte unliebsame Nebeneffekte produzieren. // Glaskugel aus

Nastarowje 17. Feb 2008 21:16

Re: MessageDlg
 
Hallo,

Vielen Dank, die Unit Controls hat gefehlt.

Michael

Hansa 17. Feb 2008 22:31

Re: MessageDlg
 
Ah ja, mrYes ist in Controls.pas deklariert. Wäre es idYes gewesen, dann hätte man Windows.pas in die Uses schreiben müssen. Sofern es sich nicht um ein reines WinApi-Programm handelt empfiehlt es sich allerdings sowieso, die Uses-Liste von Delphi erstellen zu lassen. Der Fehler wäre dann nicht mal aufgetaucht.

Muetze1 17. Feb 2008 23:38

Re: MessageDlg
 
Zitat:

Zitat von Hansa
Sofern es sich nicht um ein reines WinApi-Programm handelt empfiehlt es sich allerdings sowieso, die Uses-Liste von Delphi erstellen zu lassen. Der Fehler wäre dann nicht mal aufgetaucht.

Ach ja - und wann sollte Delphi die Uses Liste erweitern in einer formlosen Unit? Wenn er die Komponente MessageDlg() in den Quelltext zieht? :gruebel:

Hansa 18. Feb 2008 02:05

Re: MessageDlg
 
Mann, Mütze. :stupid: :mrgreen: Was steht denn hier ?
Zitat:

Zitat von Nastarowje
Delphi-Quellcode:
case MessageDlg('Datei existiert noch nicht. Soll Sie angelegt werden?',mtInformation, [mbYes,mbNo], 0) of
      mrYes : Form1.Close;
      mrNo : Form1.Close;
    end;

Da kann man wohl kaum von einem "formlosen" Form ausgehen, oder doch ? :gruebel: Deshalb auch mein Hinweis auf ein minimalistisches "WinApi"-Programm (für Disketten etc.). Sofern das nicht zutrifft und es ist ein "normales" Delphi-Programm, dann ist es wohl egal, ob eine Unit von Hand in die Uses-Liste geschrieben wird oder von Delphi eben automatisch. Ein DoppelKlick auf leere Form (oder geringe Aktivitäten im OI) genügt dazu übrigens, um die Contols.pas (= mrYes) oder die windows.pas (=idYes) ohne sonstige Arbeit in die Uses Liste gleich an die richtige Stelle reinzukriegen.

@Fragesteller : die Frage wäre übrigens auch nicht aufgetaucht, sofern statt mrYes mbYes usw. verwendet worden wäre (so wie die Parameter in deinem MessageDlg auch heißen). Auch diese Konstanten sind in Dialogs.pas enthalten und auch so wäre die Controls.pas auch überflüssig. Durch die Verwendung von mrYes wird zumindest in der betroffenen Unit überflüssigerweise auch die Unit Contols.pas in die EXE mit eingelinkt.

Edit : der Fehler kommt angeblich bei mrYes, an dem mbYes vorher stört Delphi sich wohl nicht. Warum ? Die Dialogs.pas steht in der Uses.

Sharky 18. Feb 2008 06:44

Re: MessageDlg
 
Zitat:

Zitat von Hansa
..... sofern statt mrYes mbYes usw. verwendet worden wäre (so wie die Parameter in deinem MessageDlg auch heißen). ...

:shock:

Du verwendest also die mbxxx Konstanten (MessageButton) auch für die die Antworten (MessageRresult)??
Das nenne ich mal saubere Programmierung.

bitsetter 18. Feb 2008 08:07

Re: MessageDlg
 
Zitat:

Zitat von Hansa
Mann, Mütze. :stupid: :mrgreen: Was steht denn hier ?
Zitat:

Zitat von Nastarowje
Delphi-Quellcode:
case MessageDlg('Datei existiert noch nicht. Soll Sie angelegt werden?',mtInformation, [mbYes,mbNo], 0) of
      mrYes : Form1.Close;
      mrNo : Form1.Close;
    end;

Da kann man wohl kaum von einem "formlosen" Form ausgehen, oder doch ? :gruebel:

Zitat:

Zitat von Nastarowje
Die Resultate Form1.close sind nur fiktiv. Der Code fehlt noch.



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr.
Seite 1 von 2  1 2      

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