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 Dialoganzeige Abbrechen (https://www.delphipraxis.net/139352-dialoganzeige-abbrechen.html)

Berni68 27. Aug 2009 09:19


Dialoganzeige Abbrechen
 
Hallo zusammen,

wie schließe ich einen modal angezeigten Dialog im Ereignis OnShow.
Folgendes hab ich schon probiert:

Delphi-Quellcode:
type
  TDialog. = class(TForm)
  ...
  private
    CanShow: boolean;
  ...
  end;

procedure TDialog.FormShow(Sender: TObject);
begin
  // Prüfungen ob Dialog angezeigt werden darf negativ:
  CanShow:= false;
  Exit;
  // Code wenn Prüfung positiv
end;

procedure TDialog.FormActivate(Sender: TObject);
begin
  if CanShow=false then ModalResult:= mrCancel;
    // geht nicht Dialog wird trotzdem angezeigt

  if CanShow=false then BitBtnCancelClick(Sender);
   // geht auch nicht Dialog wird trotzdem angezeigt, kann dann aber über BitBtnCancel geschlossen werden

  if CanShow=false then Hide;
    // geht auch nicht Dialog wird trotzdem angezeigt
end;
hat jemand mal einen Tip?

sirius 27. Aug 2009 09:21

Re: Dialoganzeige Abbrechen
 
Im OnShow ist es wohl etwas spät. Kannst du das nicht eher überprüfen?

Edit: wobei ein "Close;" reichen dürfte.

Berni68 27. Aug 2009 09:28

Re: Dialoganzeige Abbrechen
 
if CanShow=false then Close; // Geht auch nicht, Dialog wird angezeigt

Ich möchte nicht früher prüfen, da die Prüflogik im Dialogformular sein sollte.
Der Dialog wird an verschiedenen Stellen aufgerufen und soll so einfach wie möglich sein.
Wenn der Dialog auch kutz aufflackern sollte dann aber wieder zugeht wäre in Ordnung

Zoot 27. Aug 2009 09:47

Re: Dialoganzeige Abbrechen
 
Zitat:

Zitat von Berni68
Ich möchte nicht früher prüfen, da die Prüflogik im Dialogformular sein sollte.

Versteh ich jetzt nicht.

Delphi-Quellcode:
If Dialog.Check then Dialog.show
oder so ähnlich sollte doch immer gehen?

Berni68 27. Aug 2009 09:53

Re: Dialoganzeige Abbrechen
 
Richtig, so werd ich es jetzt umsetzen.
Danke :thumb:
(Manchmal dauert es eben länger bis man morgens auchwacht)

Bernhard Geyer 27. Aug 2009 09:58

Re: Dialoganzeige Abbrechen
 
Alternative notlösung falls bestimmung in Methode nicht möglich:

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.

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