Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CanClose ändern??? (https://www.delphipraxis.net/151901-canclose-aendern.html)

Muellermilchtrinker 6. Jun 2010 13:32

Delphi-Version: 2009

CanClose ändern???
 
Hallo DP,

erstmal muss ich mich an das neue Design gewöhnen. Alles ist anders :-D.

Aber back to topic:

Ich setzte im CloseQuery Ereignis einer meiner Forms Canclose auf False.
Jetzt ist das aber so. Ich möchte diese Form nur mit einer eigenen Prozedur beenden. D.h. ich hab meine Prozedur und die nenne ich jetzt mal als Beispiel FClose.
Delphi-Quellcode:
procedure FClose;
begin
  ...
  close;
end;
In dieser hab ich ein paar Anweisungen und danach soll sich die Form schließen. Da ich aber CanClose auf False gesetzt habe muss ich es ja wieder auf True setzen um die Form zu schließen.
Mein Problem ist aber, wie setze ich CanClose außerhalb vom CloseQuery Ereignis wieder auf True???
Ach und Application.Terminate kann ich nicht nutzen, weil mein Programm noch laufen soll. :stupid:

daywalker9 6. Jun 2010 13:36

AW: CanClose ändern???
 
Delphi-Quellcode:
  PostMessage(Handle, CM_RELEASE, 0, 0);
Das könntest du an deine Form schicken - dann wird die Form gefreet.

Muellermilchtrinker 6. Jun 2010 13:45

AW: CanClose ändern???
 
Funktioniert leider nicht.

jaenicke 6. Jun 2010 13:54

AW: CanClose ändern???
 
Wäre auch sinnfrei.

Wenn du Close selbst aufrufst, dann musst du vorher dafür sorgen, dass dein Ereignishandler CanClose dabei dann nicht auf False setzt. Fertig. Dafür bietet sich ein boolsches Feld des Formulars an.

Muellermilchtrinker 6. Jun 2010 15:27

AW: CanClose ändern???
 
Und wie mach ich das. Des würde ich ja gerne wissen. :gruebel:

freak4fun 6. Jun 2010 15:30

AW: CanClose ändern???
 
Kann deine Funktion die ein paar Sachen macht nicht im CanClose-Event aufgerufen werden und das Ergebnis ist dann True?

Muellermilchtrinker 6. Jun 2010 15:42

AW: CanClose ändern???
 
Ich will aber nicht, dass man die Form mit Alt+F4 schließen kann.
PS: Ich will Strg+D auch noch deaktivieren. Ansatz??

Luckie 6. Jun 2010 15:49

AW: CanClose ändern???
 
Delphi-Quellcode:
type
  TForm10 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private-Deklarationen }
    FCanClose: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form10: TForm10;

implementation

{$R *.dfm}


procedure TForm10.Button1Click(Sender: TObject);
begin
  FCanClose := True;
  Close;
end;

procedure TForm10.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := FCanClose;
end;

procedure TForm10.FormCreate(Sender: TObject);
begin
  FCanClose := False;
end;
Was macht denn Strg+D?

DeddyH 6. Jun 2010 15:51

AW: CanClose ändern???
 
Delphi-Quellcode:
type
  TDeinForm = class(TForm)
  private
    FCloseAllowed: Boolean;
...

procedure TDeinForm.CloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := FCloseAllowed;
end;

procedure TDeinForm.MachZu;
begin
  FCloseAllowed := true;
  Close;
end;
Ungetestet, da direkt im Editor eingetippt.

[edit] Zu langsam *grmpf* [/edit]

Muellermilchtrinker 6. Jun 2010 15:53

AW: CanClose ändern???
 
Zitat:

Zitat von Luckie (Beitrag 1025983)
Was macht denn Strg+D?

Upps ich meinte doch Win+D.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
Seite 1 von 2  1 2      

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