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/)
-   -   MessageDlg Programm läuft weiter (https://www.delphipraxis.net/158543-messagedlg-programm-laeuft-weiter.html)

daniel71 21. Feb 2011 19:38

MessageDlg Programm läuft weiter
 
Hallo

Kann mir jemand sagen wieso beim unten aufgeführten Code, das Programm nicht anhält?
Wenn ich einen Haltepunkt bei if MessageDlg... einfüge, erscheint die MessageBox. Wenn nicht, wird die else Bedingung ausgeführt (mrNo) und danach FormInstallationEndpunktAnschliessen.ShowModal ausgeführt.

Delphi-Quellcode:
        if DrahtAnEndAngeschl <> KGrid1.RowCount - 2 then
        begin
          if MessageDlg('Sollen am Endpunkt nicht angeschlossene Drähte am Einschub angeschlossen werden?', mtWarning, [mbYes,mbNo], 1) = mrYes then
          begin
            EndAnzDrahtAngeschl:= KGrid1.RowCount - 2;
            AlleDrahtEndAngeschl:= True;
          end
          else
          begin
            EndAnzDrahtAngeschl:= DrahtAnEndAngeschl;
            AlleDrahtEndAngeschl:= False;
          end;
        end
        else
          KabelAnzDraht:= DrahtAnEndAngeschl;
        FormInstallationEndpunktAnschliessen.ShowModal;

Macht irgendwie keinen Sinn.

s.h.a.r.k 21. Feb 2011 19:41

AW: MessageDlg Programm läuft weiter
 
Hm... Arbeitest du mit Threads?

daniel71 21. Feb 2011 20:05

AW: MessageDlg Programm läuft weiter
 
Nein, es sei denn TKGrid macht das.

Was ich jetzt aber entdeckt habe ist, dass die Messagebox ganz kurze Zeit erscheint und danach gleich wieder verschwindet.

Ich habs jetzt mal so ausprobiert:
Delphi-Quellcode:
case MessageDlg('Sollen am Endpunkt nicht angeschlossene Drähte am Einschub angeschlossen werden?', mtWarning, [mbYes,mbNo], 1) of
mrYes:
  begin
    EndAnzDrahtAngeschl:= KGrid1.RowCount - 2;
    AlleDrahtEndAngeschl:= True;
  end;
mrNo:
  begin
    EndAnzDrahtAngeschl:= DrahtAnEndAngeschl;
    AlleDrahtEndAngeschl:= False;
  end;
end;
Das Programm führt immer nur die mrNo Anweisung durch.

Ich habe auch mrYes, mrNo und MessageDlg nirgens überschrieben.

daniel71 21. Feb 2011 21:03

AW: MessageDlg Programm läuft weiter
 
Das hier funktioniert:

Delphi-Quellcode:
if DrahtAnEndAngeschl <> KGrid1.RowCount - 2 then
begin
  MessageDlg('Blabla?', mtWarning, [mbYes,mbNo], 1);
  case MessageDlg('Sollen am Endpunkt nicht angeschlossene Drähte am Einschub angeschlossen werden?', mtWarning, [mbYes,mbNo], 1) of
  mrYes:
    begin
      EndAnzDrahtAngeschl:= KGrid1.RowCount - 2;
      AlleDrahtEndAngeschl:= True;
    end;
  mrNo:
    begin
      EndAnzDrahtAngeschl:= DrahtAnEndAngeschl;
      AlleDrahtEndAngeschl:= False;
    end;
  end;
end
else
  KabelAnzDraht:= DrahtAnEndAngeschl;
FormInstallationEndpunktAnschliessen.ShowModal;
Die MessageBox mit 'Blabla?'' wird nicht angezeigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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