Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   application.Messagebox Problem (https://www.delphipraxis.net/180348-application-messagebox-problem.html)

Uwe Raabe 13. Mai 2014 18:34

AW: application.Messagebox Problem
 
Zitat:

Zitat von Natcree (Beitrag 1258788)
SO gehts auch nicht

Delphi-Quellcode:
begin
if application.MessageBox('Wollen Sie die Änderungen speichern ?','Hinweis',
MB_YESNO Or MB_ICONEXCLAMATION) = IDYes then
begin
Clientdataset1.post;
form1.show;
image10.BringToFront;
form2.Close;
Leerefelder(true);
end else
Clientdataset1.cancel;
form1.show;
image10.BringToFront;
form2.Close;
Leerefelder(true);
end;

Sicher nicht! Du solltest mal ordentlich einrücken, dann siehst du vielleicht das fehlende
Delphi-Quellcode:
begin
.

Delphi-Quellcode:
if application.MessageBox('Wollen Sie die Änderungen speichern ?','Hinweis', MB_YESNO Or MB_ICONEXCLAMATION) = IDYes then begin
  Clientdataset1.post;
  form1.show;
  image10.BringToFront;
  form2.Close;
  Leerefelder(true);
end
else begin
  Clientdataset1.cancel;
  form1.show;
  image10.BringToFront;
  form2.Close;
  Leerefelder(true);
end;

Natcree 13. Mai 2014 18:38

AW: application.Messagebox Problem
 
Zitat:

Wo kommt eigentlich das ominöse MB_ICONEXCLAMATION her?
http://www.functionx.com/delphi/msgboxes/messagebox.htm

Zitat:

Was genau heißt "es geht nicht"? Wird immer der erste Begin-End-Block durchlaufen, egal was du anklickst?
Wenn ich nein klicke soll er abrechen und fensterschliessen.

Natcree 13. Mai 2014 18:42

AW: application.Messagebox Problem
 
danke es hat an dem fehlenden begin gelegen.

Perlsau 13. Mai 2014 18:44

AW: application.Messagebox Problem
 
Okay, das mit dem MB_ICONEXCLAMATION hat sich ja nun geklärt, damit wird also ein Warn-Icon angezeigt.

Alles das, was dein Programm ausführen soll, wenn du Ja klickst, kommt in den ersten Begin-End-Block, der ausgeführt wird, wenn das Resultat MbOk ist. Dagegen kommt alles das, was dein Programm ausführen soll, wenn du nicht Ja klickst, in den zweiten Begin-End-Block, den sog. Else-Zweig. Wo ist das Problem?

DateTimeError 13. Mai 2014 21:40

AW: application.Messagebox Problem
 
Hier was zum Testen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if MessageBox(Handle, 'Message', 'Caption', mb_YesNo or mb_IconExclamation or
    mb_DefButton1)
    = id_Yes then
  begin
    MessageBox(Handle, 'JA angeklickt', 'Caption', mb_Ok or mb_DefButton1);
    exit
  end;
  MessageBox(Handle, 'NEIN angeklickt', 'Caption', mb_Ok or mb_DefButton1)
end;

Uwe Raabe 14. Mai 2014 01:28

AW: application.Messagebox Problem
 
Zitat:

Zitat von Natcree (Beitrag 1258795)
danke es hat an dem fehlenden begin gelegen.

Eigentlich hat es an dem fehlenden Cancel gelegen. Beim Navigieren per Next oder Prev wird nämlich implizit ein Post ausgeführt, wenn das DataSet im Edit-Modus ist.

DeddyH 14. Mai 2014 08:15

AW: application.Messagebox Problem
 
BTW:
Zitat:

Delphi-Quellcode:
if application.MessageBox('Wollen Sie die Änderungen speichern ?','Hinweis', MB_YESNO Or MB_ICONEXCLAMATION) = IDYes then begin
  Clientdataset1.post;
  form1.show;
  image10.BringToFront;
  form2.Close;
  Leerefelder(true);
end
else begin
  Clientdataset1.cancel;
  form1.show;
  image10.BringToFront;
  form2.Close;
  Leerefelder(true);
end;

-->
Delphi-Quellcode:
if application.MessageBox('Wollen Sie die Änderungen speichern ?','Hinweis', MB_YESNO Or MB_ICONEXCLAMATION) = IDYes then begin
  Clientdataset1.post;
end
else begin
  Clientdataset1.cancel;
end;
form1.show;
image10.BringToFront;
form2.Close;
Leerefelder(true);
Wer ganz faul ist (so wie ich), der kann dann auch begin und end weglassen, sofern er ordentlich einrückt.

Sir Rufo 14. Mai 2014 08:54

AW: application.Messagebox Problem
 
Meine Einrückungen (per Code-Formatter) sehen so aus
Delphi-Quellcode:
if application.MessageBox('Wollen Sie die Änderungen speichern ?','Hinweis', MB_YESNO Or MB_ICONEXCLAMATION) = IDYes
then
  begin
    Clientdataset1.post;
    form1.show;
    image10.BringToFront;
    form2.Close;
    Leerefelder(true);
  end
else
  begin
    Clientdataset1.cancel;
    form1.show;
    image10.BringToFront;
    form2.Close;
    Leerefelder(true);
  end;
oder die andere Variante
Delphi-Quellcode:
if application.MessageBox('Wollen Sie die Änderungen speichern ?','Hinweis', MB_YESNO Or MB_ICONEXCLAMATION) = IDYes
then
  begin
    Clientdataset1.post;
  end
else
  begin
    Clientdataset1.cancel;
  end;
form1.show;
image10.BringToFront;
form2.Close;
Leerefelder(true);
oder eben ohne die (jetzt nicht mehr benötigten
Delphi-Quellcode:
begin end
Blöcke)
Delphi-Quellcode:
if application.MessageBox('Wollen Sie die Änderungen speichern ?','Hinweis', MB_YESNO Or MB_ICONEXCLAMATION) = IDYes
then
 Clientdataset1.post
else
  Clientdataset1.cancel;
form1.show;
image10.BringToFront;
form2.Close;
Leerefelder(true);
Der Orginal-Code hätte mit der Formatierung so ausgesehen:
Delphi-Quellcode:
begin
  if application.MessageBox( 'Wollen Sie die Änderungen speichern ?', 'Hinweis', MB_YESNO or MB_ICONEXCLAMATION ) = IDYes
  then
    begin
      Clientdataset1.post;
      form1.show;
      image10.BringToFront;
      form2.Close;
      Leerefelder( true );
    end
  else
    Clientdataset1.cancel;
  form1.show;
  image10.BringToFront;
  form2.Close;
  Leerefelder( true );
end;
In Kombination mit dem CnPack schreien einen solche Fehler direkt an :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:13 Uhr.
Seite 2 von 2     12   

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