Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit MsgDialog (https://www.delphipraxis.net/28110-problem-mit-msgdialog.html)

bombilein 19. Aug 2004 18:38


Problem mit MsgDialog
 
Ich führe folgende Anweisungen aus, wenn ich das Programm schließen möchte:

Delphi-Quellcode:
  if(DataObject.bModifiedSincLastSave) then begin
  tmp := MessageDlg(csWarningText, mtConfirmation, [mbYes, mbNo, mbCancel], 0, mbYes);
    case tmp of
      mrYes  : SaveClick(self); // Speichern
      mrCancel: Result := False; // Anwender will weiterarbeiten
      mrNo   : Result := True; // Programm darf geschlossen werden
    else ASSERT(b(False));
    end;
  end;
Wenn ich jetzt den Button "Yes" klicke, komme ich in den "else" Fall.
Was läuft da falsch?

bombilein 19. Aug 2004 20:22

Re: Problem mit MsgDialog
 
Wie man erkennen kann, verwende ich QDialogs.

Wenn ich nur Dialogs folgendermaßen verwende, geht es einwandfrei:

Delphi-Quellcode:
if MessageDlg('Wollen Sie speichern. ',
      mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Aber wieso geht das mit QDialogs nicht?

Vjay 19. Aug 2004 21:54

Re: Problem mit MsgDialog
 
Erstens: Keine Ahnung, da ich QDialogs nicht verwende.

2 Tips hätt ich aber für dich und zwar.

1. Stimmt der Typ der tmp-Variable evtl. nicht ...? Byte statt integer z.B.?

2. Guck welche Werte die Konstanten haben z.B. mrYes und lass dir den Result-Wert anzeigen.
Eventuell brauchst du andere Result-Konstanten, da diese nur für den VCL-Dialog sind??

bombilein 19. Aug 2004 23:01

Re: Problem mit MsgDialog
 
zu 1.
tmp ist von Typ Integer

zu 2.
würde ich auch tippen... aber wo finde ich die anderen Konstanten
:gruebel:
Ich fand nur mrYes etc.

gruß
scm

Vjay 20. Aug 2004 11:57

Re: Problem mit MsgDialog
 
Notfalls guckste dir an was die Funktion als result-werte liefert und bindest die werte halt hardcoded ein, z.B.

Delphi-Quellcode:
case resultDialog of
 1:
 2:
 15:
end;

semo 21. Aug 2004 19:01

Re: Problem mit MsgDialog
 
also bei mir funzt es sowohl it QDialogs als auch mit Dialogs.....
habe das wie folgt bei mir getestet:

Code:
procedure TMainForm.Button1Click(Sender: TObject);
var
  tmp: Integer;
begin
 tmp := MessageDlg('test', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
    case tmp of
      mrYes   : ShowMessage('Yes');
      mrCancel : ShowMessage('Cancel');
    else ShowMessage('else');;
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz