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 [ERLEDIGT] Modales Fenster lässt sich nicht schließen (https://www.delphipraxis.net/94161-%5Berledigt%5D-modales-fenster-laesst-sich-nicht-schliessen.html)

scrat1979 17. Jun 2007 12:58


[ERLEDIGT] Modales Fenster lässt sich nicht schließen
 
Hallo!

Es ist wie verhext. Schon wieder stecke ich bei einem eigentlich "simplen" Problem fest.
Ich rufe aus meinem Hauptfenster das Fenster "Form_Einlesen" über ShowModal auf. Nach dem Anzeigen
soll zum Einlegen eines Datenträgers aufgerufen werden, bis dieser gefunden wurde ODER beim MessageDlg auf
"Abbrechen" geklickt wird. In diesem Fall soll das modale Fenster geschlossen werden, leider tut sich nichts...

Hier der Code:

Delphi-Quellcode:
procedure TForm_Einlesen.FormActivate(Sender: TObject);
VAR Ergebnis : Integer;
begin
  { Hilfsvatiable initialisieren }
  Ergebnis := 0;

  { "Datenträger einlegen..." anzeigen }
  while not ((DirectoryExists(AdvFileSearch.StartDir)) or (Ergebnis = -1)) do Begin
    if MessageDlg('Bitte Datenträger einlegen', mtInformation, [mbok, mbCancel], 0) = mrCancel then Ergebnis := -1;
  End;

  { Wenn Abbrechen geklickt, dann Fenster schließen }
  if Ergebnis = -1 then Begin;
        ModalResult := mrAbort;
  End Else ShowPics;
end;
Die Prozedur arbeitet im Prinzip korrekt: Setze ich statt "ModalResult := ..." ein "ShowMessage(...)" ein, wird dieses korrekt angezeigt.

Hoffe Ihr könnt mir helfen...

SCRaT

EDIT: Einige Rechtschreibfehler / Komponenten-Namen korrigiert...

marabu 17. Jun 2007 13:10

Re: Modales Fenster lässt sich nicht schließen
 
Hallo Michael,

ich würde ein anderes Ereignis für diese Aktionen wählen, OnActivate() und das Setzen von ModalResult scheinen keine gute Kombination zu sein.

Grüße vom marabu

scrat1979 17. Jun 2007 13:13

Re: [ERLEDIGT] Modales Fenster lässt sich nicht schließen
 
Danke, genau das habe ich soeben doch noch im Netz gefunden :-)

Folgendes funktioniert auch bei OnActivate problemlos:

Delphi-Quellcode:
PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
Thanx :-)


SCRaT


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