Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: FormCloseQuery FormShowing abfrage

  Alt 24. Feb 2011, 15:55
Diese MainForm prüft alle (mit Application als Owner) Formulare, ob diese sich schließen können.

Mit der Property CloseForce kann man das Schliessen erzwingen (was beim Abmelden/Herunterfahren -> WM_ENDSESSION auch gemacht wird).
Delphi-Quellcode:
unit frmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class( TForm )
    procedure FormCloseQuery( Sender : TObject; var CanClose : Boolean );
    procedure FormCreate( Sender : TObject );
  private
    FCloseForce : Boolean;
  protected
    procedure WMEndSession( var message : TWMEndSession ); message WM_ENDSESSION;
  public
    property CloseForce : Boolean
      read FCloseForce
      write FCloseForce;
  end;

var
  Form1 : TForm1;

implementation

uses
  frmData;

{$R *.dfm}

procedure TForm1.FormCloseQuery( Sender : TObject; var CanClose : Boolean );
var
  idx : Integer;
begin
  if not CloseForce
  then
    for idx := 0 to Application.ComponentCount - 1 do
      if ( Application.Components[idx] <> Self ) and ( Application.Components[idx] is TForm )
      then
        CanClose := CanClose and TForm( Application.Components[idx] ).CloseQuery;
end;

procedure TForm1.FormCreate( Sender : TObject );
begin
  CloseForce := False;
end;

procedure TForm1.WMEndSession( var message : TWMEndSession );
begin
  inherited;
  CloseForce := True;
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat