Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - MessageDlg -> Default Button funktioniert nicht


Metschu - So 13.12.09 13:44
Titel: MessageDlg -> Default Button funktioniert nicht
Hallo zusammen!

in meinem Projekt soll eine Messagebox mit "Ja" und "Nein" erscheinen, wobei "Nein" schon markiert sein soll.

In der Delphi-Hilfe steht folgendes Beispiel:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);

begin
  if MessageDlg('Welcome to my Delphi application.  Exit now?',
    mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes then
  begin
    MessageDlg('Exiting the Delphi application.', mtInformation,
      [mbOk], 0, mbOk);
    Close;
  end;

end;


Wenn ich das so 1:1 in Kopiere, erscheint die Fehlermeldung "Zu Viele Parameter".
Nehme ich das Markierte raus, klappt alles nur nimmt er dann "Ja" als default.

Wo liegt der Fehler?

bei mir, in der Delphi-Hilfe oder hab ich was vergessen in der Uses-Liste aufzunehmen ? ?

Danke!

Gruß

Torsten


Michael Stenzel - So 13.12.09 15:09

Hallo Metschu,

Wenn du den letzten Parameter von mbYes auf mbNo änders, sollte deine "Nein" - Schaltfläche als default aktiviert werden. Es kommt allerdings noch auf deine Delphi Version an. Version 3 unterstützt z.B. den Default-Parameter nicht, genauso wenig wie Delphi 7 in der Personal-Version, obwohl die überladene Funktion schon in der Hilfe angegeben wird. Bei Turbo Delphi 2006 funktioniert die Funktion so wie in der Hilfe angegeben.

[Edit : Bei Delphi die Version vergessen 7]

Gruß
Michael.


ffgorcky - So 13.12.09 16:44

Also wenn ich jetzt gerade irgendwo einen Denkfehler habe, dann setzt die Zahl hinten doch den Default-Index der Messagebox - also sollte dort entweder
if MessageDlg('Welcome to my Delphi application.  Exit now?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
- oder

Delphi-Quelltext
1:
if MessageDlg('Welcome to my Delphi application.  Exit now?',mtConfirmation, [mbYes, mbNo], mbYes) = mrYes then                    

stehen.

Ich hoffe, dass ich jetzt gerade nichts falsches behaupte, da ich das gerade nicht nachprüfen kann...


Michael Stenzel - So 13.12.09 17:40

ffgorcky sagt:
Zitat:

if MessageDlg('Welcome to my Delphi application. Exit now?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
- oder
Delphi-Quelltext markieren
1:
if MessageDlg('Welcome to my Delphi application. Exit now?',mtConfirmation, [mbYes, mbNo], mbYes) = mrYes then



Der Parameter 0 ist für den Hilfe-Index bestimmt. Bei der Überladene Funktion wird der Default-Parameter zu der Parameterliste zugefügt, nicht aber der Hilfe-Index durch diesen ersetzt.


Gruß
Michael.


Metschu - So 13.12.09 22:40

Hallo Michael!
user profile iconMichael Stenzel hat folgendes geschrieben Zum zitierten Posting springen:
...Es kommt allerdings noch auf deine Delphi Version an. Version 3 unterstützt z.B. den Default-Parameter nicht, genauso wenig wie Delphi 7 in der Personal-Version, obwohl die überladene Funktion schon in der Hilfe angegeben wird...


Dann hat sich das Problem gerade erledigt, da ich mit Delphi 7 PE arbeite.

Somit muß ich mir halt was eigenes basteln :roll:

Danke für die Antwort!

Gruß

Torsten